ide-cris: fix ->speedproc and wrong ->swdma_mask

* fix ->speedproc to set the drive speed

* this driver doesn't support SWDMA so use the correct ->swdma_mask

* BUG() if an unsupported mode is passed to ->speedproc

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
Bartlomiej Zolnierkiewicz 2007-05-05 22:03:51 +02:00
parent 8e60d3762f
commit 55e4dee329
1 changed files with 4 additions and 5 deletions

View File

@ -730,7 +730,7 @@ static int speed_cris_ide(ide_drive_t *drive, u8 speed)
if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) { if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
tune_cris_ide(drive, speed - XFER_PIO_0); tune_cris_ide(drive, speed - XFER_PIO_0);
return 0; return ide_config_drive_speed(drive, speed);
} }
switch(speed) switch(speed)
@ -760,7 +760,8 @@ static int speed_cris_ide(ide_drive_t *drive, u8 speed)
hold = ATA_DMA2_HOLD; hold = ATA_DMA2_HOLD;
break; break;
default: default:
return 0; BUG();
break;
} }
if (speed >= XFER_UDMA_0) if (speed >= XFER_UDMA_0)
@ -768,7 +769,7 @@ static int speed_cris_ide(ide_drive_t *drive, u8 speed)
else else
cris_ide_set_speed(TYPE_DMA, 0, strobe, hold); cris_ide_set_speed(TYPE_DMA, 0, strobe, hold);
return 0; return ide_config_drive_speed(drive, speed);
} }
void __init void __init
@ -821,7 +822,6 @@ init_e100_ide (void)
hwif->udma_four = 0; hwif->udma_four = 0;
hwif->ultra_mask = cris_ultra_mask; hwif->ultra_mask = cris_ultra_mask;
hwif->mwdma_mask = 0x07; /* Multiword DMA 0-2 */ hwif->mwdma_mask = 0x07; /* Multiword DMA 0-2 */
hwif->swdma_mask = 0x07; /* Singleword DMA 0-2 */
hwif->autodma = 1; hwif->autodma = 1;
hwif->drives[0].autodma = 1; hwif->drives[0].autodma = 1;
hwif->drives[1].autodma = 1; hwif->drives[1].autodma = 1;
@ -1010,7 +1010,6 @@ static int cris_config_drive_for_dma (ide_drive_t *drive)
return 0; return 0;
speed_cris_ide(drive, speed); speed_cris_ide(drive, speed);
ide_config_drive_speed(drive, speed);
return ide_dma_enable(drive); return ide_dma_enable(drive);
} }