Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55e4dee3 authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

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: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 8e60d376
Loading
Loading
Loading
Loading
+4 −5
Original line number Original line Diff line number Diff line
@@ -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);
}
}