it8213/piix/slc90e66: don't change DMA settings when programming PIO
PATCH 2/4 it8213/piix/slc90e66: don't change DMA settings when programming PIO
--- drivers/ide/pci/it8213.c | 16 ++++++---------- drivers/ide/pci/piix.c | 17 +++++++---------- drivers/ide/pci/slc90e66.c | 17 +++++++---------- 3 files changed, 20 insertions(+), 30 deletions(-)
drivers/ide/pci/it8213.c +6 -10
@@ -134,6 +134,11 @@ static int it8213_tune_chipset(ide_driveu16 reg4042, reg4a;u8 reg48, reg54, reg55; +if (speed >=XFER_PIO_0 && speed <=XFER_PIO_4 ) { +it8213_tune_pio (drive, speed -XFER_PIO_0 ); +return ide_config_drive_speed (drive, speed); + } +pci_read_config_word (dev, maslave, ®4042);pci_read_config_byte (dev,0x48 , ®48);pci_read_config_word (dev,0x4a , ®4a);
@@ -153,12 +158,6 @@ static int it8213_tune_chipset(ide_drivecase XFER_MW_DMA_1 :case XFER_SW_DMA_2 :break ; -case XFER_PIO_4 : -case XFER_PIO_3 : -case XFER_PIO_2 : -case XFER_PIO_1 : -case XFER_PIO_0 : -break ;default :return -1 ; }
@@ -190,10 +189,7 @@ static int it8213_tune_chipset(ide_drivepci_write_config_byte (dev,0x55 , (u8 ) reg55 & ~w_flag); } -if (speed >XFER_PIO_4 ) -it8213_tune_pio (drive,it8213_dma_2_pio (speed)); -else -it8213_tune_pio (drive, speed -XFER_PIO_0 ); +it8213_tune_pio (drive,it8213_dma_2_pio (speed));return ide_config_drive_speed (drive, speed); }
drivers/ide/pci/piix.c +7 -10
@@ -1,5 +1,5 @@/* -* linux/drivers/ide/pci/piix.c Version 0.51 Jul 6, 2007 +* linux/drivers/ide/pci/piix.c Version 0.52 Jul 14, 2007 * * Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer * Copyright (C) 1998-2000 Andre Hedrick <[email protected]>
@@ -243,6 +243,11 @@ static int piix_tune_chipset(ide_drive_tu16 reg4042, reg4a;u8 reg48, reg54, reg55; +if (speed >=XFER_PIO_0 && speed <=XFER_PIO_4 ) { +piix_tune_pio (drive, speed -XFER_PIO_0 ); +return ide_config_drive_speed (drive, speed); + } +pci_read_config_word (dev, maslave, ®4042); sitre = (reg4042 &0x4000 ) ?1 :0 ;pci_read_config_byte (dev,0x48 , ®48);
@@ -260,11 +265,6 @@ static int piix_tune_chipset(ide_drive_tcase XFER_MW_DMA_2 :case XFER_MW_DMA_1 :case XFER_SW_DMA_2 :break ; -case XFER_PIO_4 : -case XFER_PIO_3 : -case XFER_PIO_2 : -case XFER_PIO_1 : -case XFER_PIO_0 :break ;default :return -1 ; }
@@ -294,10 +294,7 @@ static int piix_tune_chipset(ide_drive_tpci_write_config_byte (dev,0x55 , (u8 ) reg55 & ~w_flag); } -if (speed >XFER_PIO_4 ) -piix_tune_pio (drive,piix_dma_2_pio (speed)); -else -piix_tune_pio (drive, speed -XFER_PIO_0 ); +piix_tune_pio (drive,piix_dma_2_pio (speed));return ide_config_drive_speed (drive, speed); }
drivers/ide/pci/slc90e66.c +7 -10
@@ -1,5 +1,5 @@/* -* linux/drivers/ide/pci/slc90e66.c Version 0.15 Jul 6, 2007 +* linux/drivers/ide/pci/slc90e66.c Version 0.16 Jul 14, 2007 * * Copyright (C) 2000-2002 Andre Hedrick <[email protected]> * Copyright (C) 2006-2007 MontaVista Software, Inc. <[email protected]>
@@ -110,6 +110,11 @@ static int slc90e66_tune_chipset(ide_driint u_speed =0 , u_flag =1 << drive->dn;u16 reg4042, reg44, reg48, reg4a; +if (speed >=XFER_PIO_0 && speed <=XFER_PIO_4 ) { +slc90e66_tune_pio (drive, speed -XFER_PIO_0 ); +return ide_config_drive_speed (drive, speed); + } +pci_read_config_word (dev, maslave, ®4042); sitre = (reg4042 &0x4000 ) ?1 :0 ;pci_read_config_word (dev,0x44 , ®44);
@@ -125,11 +130,6 @@ static int slc90e66_tune_chipset(ide_dricase XFER_MW_DMA_2 :case XFER_MW_DMA_1 :case XFER_SW_DMA_2 :break ; -case XFER_PIO_4 : -case XFER_PIO_3 : -case XFER_PIO_2 : -case XFER_PIO_1 : -case XFER_PIO_0 :break ;default :return -1 ; }
@@ -149,10 +149,7 @@ static int slc90e66_tune_chipset(ide_dripci_write_config_word (dev,0x4a , reg4a & ~a_speed); } -if (speed >XFER_PIO_4 ) -slc90e66_tune_pio (drive,slc90e66_dma_2_pio (speed)); -else -slc90e66_tune_pio (drive, speed -XFER_PIO_0 ); +slc90e66_tune_pio (drive,slc90e66_dma_2_pio (speed));return ide_config_drive_speed (drive, speed); }
Quoted 1 line · Bartlomiej Zolnierkiewicz
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
Quoted 17 lines
Index:
b/drivers/ide/pci/it8213.c
===================================================================drivers/ide/pci/it8213.c +5
-0@@ -134,6 +134,11 @@ static int it8213_tune_chipset(ide_driveu16 reg4042, reg4a;u8 reg48, reg54, reg55; +if (speed >=XFER_PIO_0 && speed <=XFER_PIO_4 ) { +it8213_tune_pio (drive, speed -XFER_PIO_0 ); +return ide_config_drive_speed (drive, speed); + } +pci_read_config_word (dev, maslave, ®4042);pci_read_config_byte (dev,0x48 , ®48);pci_read_config_word (dev,0x4a , ®4a);
drivers/ide/pci/it8213.c static int it8213_tune_chipset(ide_drive · line 161
Quoted 9 lines
drivers/ide/pci/it8213.c +0
-6@@ -153,12 +158,6 @@ static int it8213_tune_chipset(ide_drivecase XFER_MW_DMA_1 :case XFER_SW_DMA_2 :break ; -case XFER_PIO_4 : -case XFER_PIO_3 : -case XFER_PIO_2 : -case XFER_PIO_1 : -case XFER_PIO_0 : -break ;
Erm, why nmot just change this part, i.e. call it8213_tune_pio() andide_config_drive_speed() here? Would have been simpler...
Quoted 5 lines
drivers/ide/pci/it8213.c +0
-0default :return -1 ; }@@ -190,10 +189,7 @@ static int it8213_tune_chipset(ide_drivepci_write_config_byte (dev,0x55 , (u8 ) reg55 & ~w_flag);
drivers/ide/pci/it8213.c static int it8213_tune_chipset(ide_drive · line 195
Quoted 10 lines
drivers/ide/pci/it8213.c +1
-4} -if (speed >XFER_PIO_4 ) -it8213_tune_pio (drive,it8213_dma_2_pio (speed)); -else -it8213_tune_pio (drive, speed -XFER_PIO_0 ); +it8213_tune_pio (drive,it8213_dma_2_pio (speed));return ide_config_drive_speed (drive, speed); }
[...]
The same comment for 2 other drivers...
MBR, Sergei
Quoted 5 lines · Sergei Shtylyov
Quoted 1 line · Bartlomiej Zolnierkiewicz
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>Acked-by Sergei Shtylyov <[email protected]>
added
Quoted 21 lines
Quoted 21 lines
Index:
b/drivers/ide/pci/it8213.c
===================================================================drivers/ide/pci/it8213.c +5
-1@@ -134,6 +134,11 @@ static int it8213_tune_chipset(ide_driveu16 reg4042, reg4a;u8 reg48, reg54, reg55; +if (speed >=XFER_PIO_0 && speed <=XFER_PIO_4 ) { +it8213_tune_pio (drive, speed -XFER_PIO_0 ); +return ide_config_drive_speed (drive, speed); + } +pci_read_config_word (dev, maslave, ®4042);pci_read_config_byte (dev,0x48 , ®48);pci_read_config_word (dev,0x4a , ®4a);@@ -153,12 +158,6 @@ static int it8213_tune_chipset(ide_drivecase XFER_MW_DMA_1 :case XFER_SW_DMA_2 :break ; -case XFER_PIO_4 :
Quoted 8 lines
drivers/ide/pci/it8213.c static int it8213_tune_chipset(ide_drive · line 161
Quoted 5 lines
drivers/ide/pci/it8213.c +0
-5-case XFER_PIO_3 : -case XFER_PIO_2 : -case XFER_PIO_1 : -case XFER_PIO_0 : -break ;Erm, why nmot just change this part, i.e. call
it8213_tune_pio()andide_config_drive_speed()here? Would have been simpler...
to get rid of unnecessary PCI reads
Quoted 13 lines
Quoted 13 lines
drivers/ide/pci/it8213.c +1
-4default :return -1 ; }@@ -190,10 +189,7 @@ static int it8213_tune_chipset(ide_drivepci_write_config_byte (dev,0x55 , (u8 ) reg55 & ~w_flag); } -if (speed >XFER_PIO_4 ) -it8213_tune_pio (drive,it8213_dma_2_pio (speed)); -else -it8213_tune_pio (drive, speed -XFER_PIO_0 ); +it8213_tune_pio (drive,it8213_dma_2_pio (speed));
Quoted 5 lines
drivers/ide/pci/it8213.c static int it8213_tune_chipset(ide_drive · line 195
Quoted 2 lines
drivers/ide/pci/it8213.c +0
-0return ide_config_drive_speed (drive, speed); }[...]
The same comment for 2 other drivers...
ditto