From 00a16a4e22cd2445414db9dc1ae0dfc99e69d584 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Mon, 6 Jan 2014 22:19:46 +0800 Subject: [PATCH] Modules/ATA - Soft reset devices during startup --- KernelLand/Modules/Storage/ATA/io.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/KernelLand/Modules/Storage/ATA/io.c b/KernelLand/Modules/Storage/ATA/io.c index 8b2d1b79..c3258bc9 100644 --- a/KernelLand/Modules/Storage/ATA/io.c +++ b/KernelLand/Modules/Storage/ATA/io.c @@ -203,6 +203,14 @@ int ATA_SetupIO(void) outb(IDE_SEC_BASE+1, 1); outb(IDE_PRI_CTRL, 0); outb(IDE_SEC_CTRL, 0); + + + // Soft reset all drives + outb(IDE_PRI_CTRL, 4); + outb(IDE_SEC_CTRL, 4); + IO_DELAY(); + outb(IDE_PRI_CTRL, 0); + outb(IDE_SEC_CTRL, 0); // Make sure interrupts are ACKed ATA_int_BusMasterWriteByte(2, 0x4); @@ -363,21 +371,6 @@ int ATA_DoDMA(Uint8 Disk, Uint64 Address, Uint Count, int bWrite, void *Buffer) // Reset IRQ Flag gaATA_IRQs[cont] = 0; - - // TODO: What the ____ does this do? - #if 1 - if( cont == 0 ) { - outb(IDE_PRI_CTRL, 4); - IO_DELAY(); - outb(IDE_PRI_CTRL, 0); - } - else { - outb(IDE_SEC_CTRL, 4); - IO_DELAY(); - outb(IDE_SEC_CTRL, 0); - } - #endif - // Set up transfer if( Address > 0x0FFFFFFF ) // Use LBA48 { -- 2.20.1