|
@@ -166,12 +166,13 @@ int ide_timing_compute(ide_drive_t *drive, u8 speed,
|
|
|
if (id[ATA_ID_FIELD_VALID] & 2) { /* EIDE drive */
|
|
|
memset(&p, 0, sizeof(p));
|
|
|
|
|
|
- if (speed <= XFER_PIO_2)
|
|
|
- p.cycle = p.cyc8b = id[ATA_ID_EIDE_PIO];
|
|
|
- else if ((speed <= XFER_PIO_4) ||
|
|
|
- (speed == XFER_PIO_5 && !ata_id_is_cfa(id)))
|
|
|
- p.cycle = p.cyc8b = id[ATA_ID_EIDE_PIO_IORDY];
|
|
|
- else if (speed >= XFER_MW_DMA_0 && speed <= XFER_MW_DMA_2)
|
|
|
+ if (speed >= XFER_PIO_0 && speed <= XFER_SW_DMA_0) {
|
|
|
+ if (speed <= XFER_PIO_2)
|
|
|
+ p.cycle = p.cyc8b = id[ATA_ID_EIDE_PIO];
|
|
|
+ else if ((speed <= XFER_PIO_4) ||
|
|
|
+ (speed == XFER_PIO_5 && !ata_id_is_cfa(id)))
|
|
|
+ p.cycle = p.cyc8b = id[ATA_ID_EIDE_PIO_IORDY];
|
|
|
+ } else if (speed >= XFER_MW_DMA_0 && speed <= XFER_MW_DMA_2)
|
|
|
p.cycle = id[ATA_ID_EIDE_DMA_MIN];
|
|
|
|
|
|
ide_timing_merge(&p, t, t, IDE_TIMING_CYCLE | IDE_TIMING_CYC8B);
|