serverworks: cleanup ->set_dma_mode method
PATCH 1/13 serverworks: cleanup ->set_dma_mode method
IDE core guarantees that ->set_dma_mode will be called only for DMA modes set in SWDMA/MWDMA/UDMA masks.
There should be no functionality changes caused by this patch.
--- drivers/ide/pci/serverworks.c | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-)
drivers/ide/pci/serverworks.c +6 -19
@@ -164,25 +164,12 @@ static void svwks_set_dma_mode(ide_drive ultra_timing &= ~(0x0F << (4 *unit)); ultra_enable &= ~(0x01 << drive->dn); -switch (speed) { -case XFER_MW_DMA_2 : -case XFER_MW_DMA_1 : -case XFER_MW_DMA_0 : - dma_timing |= dma_modes[speed -XFER_MW_DMA_0 ]; -break ; - -case XFER_UDMA_5 : -case XFER_UDMA_4 : -case XFER_UDMA_3 : -case XFER_UDMA_2 : -case XFER_UDMA_1 : -case XFER_UDMA_0 : - dma_timing |= dma_modes[2 ]; - ultra_timing |= ((udma_modes[speed -XFER_UDMA_0 ]) << (4 *unit)); - ultra_enable |= (0x01 << drive->dn); -default : -break ; - } +if (speed >=XFER_UDMA_0 ) { + dma_timing |= dma_modes[2 ]; + ultra_timing |= (udma_modes[speed -XFER_UDMA_0 ] << (4 * unit)); + ultra_enable |= (0x01 << drive->dn); + }else if (speed >=XFER_MW_DMA_0 ) + dma_timing |= dma_modes[speed -XFER_MW_DMA_0 ];pci_write_config_byte (dev, drive_pci2[drive->dn], dma_timing);pci_write_config_byte (dev, (0x56 |hwif->channel), ultra_timing);
Quoted 19 lines · Bartlomiej Zolnierkiewicz
IDE core guarantees that ->set_dma_mode will be called only for DMA modes set in SWDMA/MWDMA/UDMA masks.
There should be no functionality changes caused by this patch.
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>Index:
b/drivers/ide/pci/serverworks.c
===================================================================drivers/ide/pci/serverworks.c +0
-4@@ -164,25 +164,12 @@ static void svwks_set_dma_mode(ide_drive ultra_timing &= ~(0x0F << (4 *unit)); ultra_enable &= ~(0x01 << drive->dn); -switch (speed) { -case XFER_MW_DMA_2 : -case XFER_MW_DMA_1 : -case XFER_MW_DMA_0 :
drivers/ide/pci/serverworks.c static void svwks_set_dma_mode(ide_drive · line 180
Quoted 10 lines
drivers/ide/pci/serverworks.c +0
-10- dma_timing |= dma_modes[speed -XFER_MW_DMA_0 ]; -break ; - -case XFER_UDMA_5 : -case XFER_UDMA_4 : -case XFER_UDMA_3 : -case XFER_UDMA_2 : -case XFER_UDMA_1 : -case XFER_UDMA_0 : - dma_timing |= dma_modes[2 ];
Why it needs to change in the first place?
Quoted 4 lines
drivers/ide/pci/serverworks.c +0
-4- ultra_timing |= ((udma_modes[speed -XFER_UDMA_0 ]) << (4 *unit)); - ultra_enable |= (0x01 << drive->dn); -default : -break ;
drivers/ide/pci/serverworks.c static void svwks_set_dma_mode(ide_drive · line 175
Quoted 10 lines
drivers/ide/pci/serverworks.c +6
-1- } +if (speed >=XFER_UDMA_0 ) { + dma_timing |= dma_modes[2 ]; + ultra_timing |= (udma_modes[speed -XFER_UDMA_0 ] << (4 * unit)); + ultra_enable |= (0x01 << drive->dn); + }else if (speed >=XFER_MW_DMA_0 ) + dma_timing |= dma_modes[speed -XFER_MW_DMA_0 ];pci_write_config_byte (dev, drive_pci2[drive->dn], dma_timing);pci_write_config_byte (dev, (0x56 |hwif->channel), ultra_timing);
MBR, Sergei
On Tuesday 13 November 2007, Sergei Shtylyov wrote:
[...]
Quoted 8 lines
Quoted 8 lines
Index:
b/drivers/ide/pci/serverworks.c
===================================================================drivers/ide/pci/serverworks.c +0
-0@@ -164,25 +164,12 @@ static void svwks_set_dma_mode(ide_drive ultra_timing &= ~(0x0F << (4 *unit)); ultra_enable &= ~(0x01 << drive->dn);
Quoted 16 lines
Quoted 4 lines
drivers/ide/pci/serverworks.c +0
-4-switch (speed) { -case XFER_MW_DMA_2 : -case XFER_MW_DMA_1 : -case XFER_MW_DMA_0 :drivers/ide/pci/serverworks.c static void svwks_set_dma_mode(ide_drive · line 180
Quoted 10 lines
drivers/ide/pci/serverworks.c +0
-10- dma_timing |= dma_modes[speed -XFER_MW_DMA_0 ]; -break ; - -case XFER_UDMA_5 : -case XFER_UDMA_4 : -case XFER_UDMA_3 : -case XFER_UDMA_2 : -case XFER_UDMA_1 : -case XFER_UDMA_0 : - dma_timing |= dma_modes[2 ];Why it needs to change in the first place?
Indeed, there is a needless coupling of MWDMA/UDMA timings in serverworks.
Care to fix it?
Bart