Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a8028fcb485522c0d7de9c5423812de9224b37c9
Commit:     a8028fcb485522c0d7de9c5423812de9224b37c9
Parent:     851dd33bcf23655eede62730c029e4f608f4084f
Author:     Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
AuthorDate: Thu Oct 11 23:53:59 2007 +0200
Committer:  Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
CommitDate: Thu Oct 11 23:53:59 2007 +0200

    ide: add missing ide_rate_filter() calls to ->speedproc()-s
    
    * Fix icside, cris-ide, au1xxx-ide, amd74xx, via82cxxx and pmac host drivers
      to use ide_rate_filter().
    
      This results in the following modes (from user requests) being clipped 
down:
      - invalid modes (values 0x46-0xFF)  [ for all hosts ]
      - unsupported by a host UDMA modes  [ for hosts which support UDMA]
      - all UDMA modes and MWDMA3-4 modes [ for hosts which don't support UDMA ]
      - invalid modes (values 0x25-0x39)  [ for hosts which don't support UDMA ]
    
    * Host driver specific changes in behavior:
    
      icside:
        - no change
    
      cris-ide
        - clip unsupported UDMA3-6 modes down
        - fix BUG() on trying to set unsupported UDMA3-6 modes
    
      au1xxx-ide/pmac
        - clip unsupported UDMA modes down
    
      amd74xx/via82cxxx
        - clip unsupported UDMA modes down
        - fix random PIO timings being set for unsupported/invalid modes
        - fix unsupported/invalid modes being set on the device
    
    * While at it remove no longer needed checks from pmac.c driver.
    
    Acked-by: Sergei Shtylyov <[EMAIL PROTECTED]>
    Signed-off-by: Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
---
 drivers/ide/arm/icside.c      |    3 +--
 drivers/ide/cris/ide-cris.c   |    2 ++
 drivers/ide/mips/au1xxx-ide.c |    2 ++
 drivers/ide/pci/amd74xx.c     |    2 ++
 drivers/ide/pci/via82cxxx.c   |    2 ++
 drivers/ide/ppc/pmac.c        |   10 ++--------
 6 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/ide/arm/icside.c b/drivers/ide/arm/icside.c
index 8a9b98f..28f910b 100644
--- a/drivers/ide/arm/icside.c
+++ b/drivers/ide/arm/icside.c
@@ -255,8 +255,7 @@ static int icside_set_speed(ide_drive_t *drive, u8 
xfer_mode)
        /*
         * Limit the transfer speed to MW_DMA_2.
         */
-       if (xfer_mode > XFER_MW_DMA_2)
-               xfer_mode = XFER_MW_DMA_2;
+       xfer_mode = ide_rate_filter(drive, xfer_mode);
 
        switch (xfer_mode) {
        case XFER_MW_DMA_2:
diff --git a/drivers/ide/cris/ide-cris.c b/drivers/ide/cris/ide-cris.c
index 04636f7..e08782a 100644
--- a/drivers/ide/cris/ide-cris.c
+++ b/drivers/ide/cris/ide-cris.c
@@ -726,6 +726,8 @@ static int speed_cris_ide(ide_drive_t *drive, u8 speed)
 {
        int cyc = 0, dvs = 0, strobe = 0, hold = 0;
 
+       speed = ide_rate_filter(drive, speed);
+
        if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
                tune_cris_ide(drive, speed - XFER_PIO_0);
                return ide_config_drive_speed(drive, speed);
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c
index 2ba6a05..0d5e4c6 100644
--- a/drivers/ide/mips/au1xxx-ide.c
+++ b/drivers/ide/mips/au1xxx-ide.c
@@ -180,6 +180,8 @@ static int auide_tune_chipset (ide_drive_t *drive, u8 speed)
        int mem_sttime;
        int mem_stcfg;
 
+       speed = ide_rate_filter(drive, speed);
+
        mem_sttime = 0;
        mem_stcfg  = au_readl(MEM_STCFG2);
 
diff --git a/drivers/ide/pci/amd74xx.c b/drivers/ide/pci/amd74xx.c
index 06c15a6..3c0bb1e 100644
--- a/drivers/ide/pci/amd74xx.c
+++ b/drivers/ide/pci/amd74xx.c
@@ -240,6 +240,8 @@ static int amd_set_drive(ide_drive_t *drive, u8 speed)
        struct ide_timing t, p;
        int T, UT;
 
+       speed = ide_rate_filter(drive, speed);
+
        if (speed != XFER_PIO_SLOW)
                ide_config_drive_speed(drive, speed);
 
diff --git a/drivers/ide/pci/via82cxxx.c b/drivers/ide/pci/via82cxxx.c
index a7be779..ec9ad6e 100644
--- a/drivers/ide/pci/via82cxxx.c
+++ b/drivers/ide/pci/via82cxxx.c
@@ -165,6 +165,8 @@ static int via_set_drive(ide_drive_t *drive, u8 speed)
        struct ide_timing t, p;
        unsigned int T, UT;
 
+       speed = ide_rate_filter(drive, speed);
+
        if (speed != XFER_PIO_SLOW)
                ide_config_drive_speed(drive, speed);
 
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c
index 2fb047b..222adcb 100644
--- a/drivers/ide/ppc/pmac.c
+++ b/drivers/ide/ppc/pmac.c
@@ -928,6 +928,8 @@ pmac_ide_tune_chipset (ide_drive_t *drive, byte speed)
        pmac_ide_hwif_t* pmif = (pmac_ide_hwif_t *)HWIF(drive)->hwif_data;
        u32 *timings, *timings2;
 
+       speed = ide_rate_filter(drive, speed);
+
        if (pmif == NULL)
                return 1;
                
@@ -937,17 +939,9 @@ pmac_ide_tune_chipset (ide_drive_t *drive, byte speed)
        switch(speed) {
 #ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
                case XFER_UDMA_6:
-                       if (pmif->kind != controller_sh_ata6)
-                               return 1;
                case XFER_UDMA_5:
-                       if (pmif->kind != controller_un_ata6 &&
-                           pmif->kind != controller_k2_ata6 &&
-                           pmif->kind != controller_sh_ata6)
-                               return 1;
                case XFER_UDMA_4:
                case XFER_UDMA_3:
-                       if (drive->hwif->cbl != ATA_CBL_PATA80)
-                               return 1;
                case XFER_UDMA_2:
                case XFER_UDMA_1:
                case XFER_UDMA_0:
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to