it8213/piix/slc90e66: "de-couple" PIO and UDMA modes
PATCH 2/4 it8213/piix/slc90e66: "de-couple" PIO and UDMA modes
Don't force PIO4 when programming UDMA mode (suggested by Sergei).
Cc Sergei Shtylyov <[email protected]>
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
--- drivers/ide/pci/it8213.c | 9 ++++----- drivers/ide/pci/piix.c | 11 +++++------ drivers/ide/pci/slc90e66.c | 10 ++++------ 3 files changed, 13 insertions(+), 17 deletions(-)
drivers/ide/pci/it8213.c +4 -5
@@ -93,7 +93,7 @@ static void it8213_set_dma_mode(ide_drivint w_flag =0x10 << drive->dn;int u_speed =0 ;u16 reg4042, reg4a; -u8 reg48, reg54, reg55, pio; +u8 reg48, reg54, reg55;pci_read_config_word (dev, maslave, ®4042);pci_read_config_byte (dev,0x48 , ®48);
@@ -134,10 +134,9 @@ static void it8213_set_dma_mode(ide_drivpci_write_config_byte (dev,0x54 , reg54 | v_flag); }else pci_write_config_byte (dev,0x54 , reg54 & ~v_flag); - - pio =4 ; }else {const u8 mwdma_to_pio[] = {0 ,3 ,4 }; +u8 pio;if (reg48 & u_flag)pci_write_config_byte (dev,0x48 , reg48 & ~u_flag);
@@ -152,9 +151,9 @@ static void it8213_set_dma_mode(ide_driv pio = mwdma_to_pio[speed -XFER_MW_DMA_0 ]; else pio =2 ;/* only SWDMA2 is allowed */ - } -it8213_set_pio_mode (drive, pio); +it8213_set_pio_mode (drive, pio); + } }/**
drivers/ide/pci/piix.c +5 -6
@@ -1,5 +1,5 @@/* -* linux/drivers/ide/pci/piix.c Version 0.52 Jul 14, 2007 +* linux/drivers/ide/pci/piix.c Version 0.53 Aug 9, 2007 * * Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer * Copyright (C) 1998-2000 Andre Hedrick <[email protected]>
@@ -194,7 +194,7 @@ static void piix_set_dma_mode(ide_drive_int u_speed =0 ;int sitre;u16 reg4042, reg4a; -u8 reg48, reg54, reg55, pio; +u8 reg48, reg54, reg55;pci_read_config_word (dev, maslave, ®4042); sitre = (reg4042 &0x4000 ) ?1 :0 ;
@@ -231,10 +231,9 @@ static void piix_set_dma_mode(ide_drive_pci_write_config_byte (dev,0x54 , reg54 | v_flag); }else pci_write_config_byte (dev,0x54 , reg54 & ~v_flag); - - pio =4 ; }else {const u8 mwdma_to_pio[] = {0 ,3 ,4 }; +u8 pio;if (reg48 & u_flag)pci_write_config_byte (dev,0x48 , reg48 & ~u_flag);
@@ -249,9 +248,9 @@ static void piix_set_dma_mode(ide_drive_ pio = mwdma_to_pio[speed -XFER_MW_DMA_0 ]; else pio =2 ;/* only SWDMA2 is allowed */ - } -piix_set_pio_mode (drive, pio); +piix_set_pio_mode (drive, pio); + } }/**
drivers/ide/pci/slc90e66.c +4 -6
@@ -1,5 +1,5 @@/* -* linux/drivers/ide/pci/slc90e66.c Version 0.17 Aug 2, 2007 +* linux/drivers/ide/pci/slc90e66.c Version 0.18 Aug 9, 2007 * * Copyright (C) 2000-2002 Andre Hedrick <[email protected]> * Copyright (C) 2006-2007 MontaVista Software, Inc. <[email protected]>
@@ -82,7 +82,6 @@ static void slc90e66_set_dma_mode(ide_drint sitre =0 , a_speed =7 << (drive->dn *4 );int u_speed =0 , u_flag =1 << drive->dn;u16 reg4042, reg44, reg48, reg4a; -u8 pio;pci_read_config_word (dev, maslave, ®4042); sitre = (reg4042 &0x4000 ) ?1 :0 ;
@@ -111,10 +110,9 @@ static void slc90e66_set_dma_mode(ide_drpci_read_config_word (dev,0x4a , ®4a);pci_write_config_word (dev,0x4a , reg4a|u_speed); } - - pio =4 ; }else {const u8 mwdma_to_pio[] = {0 ,3 ,4 }; +u8 pio;if (reg48 & u_flag)pci_write_config_word (dev,0x48 , reg48 & ~u_flag);
@@ -125,9 +123,9 @@ static void slc90e66_set_dma_mode(ide_dr pio = mwdma_to_pio[speed -XFER_MW_DMA_0 ]; else pio =2 ;/* only SWDMA2 is allowed */ - } -slc90e66_set_pio_mode (drive, pio); +slc90e66_set_pio_mode (drive, pio); + } }static void __devinit init_hwif_slc90e66 (ide_hwif_t *hwif)
Quoted 1 line · Bartlomiej Zolnierkiewicz
Don't force PIO4 when programming UDMA mode (suggested by Sergei).
Not sure if it was worth a separte patvh but well...
Quoted 1 line
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
Acked-by Sergei Shtylyov <[email protected]>
MBR, Sergei