From: John Hodge Date: Mon, 6 Jan 2014 14:19:46 +0000 (+0800) Subject: Modules/ATA - Soft reset devices during startup X-Git-Tag: rel0.15~20 X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;h=00a16a4e22cd2445414db9dc1ae0dfc99e69d584;p=tpg%2Facess2.git Modules/ATA - Soft reset devices during startup --- 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 {