Kernel - Bugfixing x86_64 port
[tpg/acess2.git] / Modules / Storage / ATA / io.c
index 73c33b2..de6bf96 100644 (file)
@@ -119,7 +119,7 @@ int ATA_SetupIO(void)
        // Get IDE Controller's PCI Entry
        ent = PCI_GetDeviceByClass(0x0101, 0xFFFF, -1);
        LOG("ent = %i", ent);
-       gATA_BusMasterBase = PCI_GetBAR4( ent );
+       gATA_BusMasterBase = PCI_GetBAR(ent, 4);
        if( gATA_BusMasterBase == 0 ) {
                Log_Warning("ATA", "It seems that there is no Bus Master Controller on this machine. Get one");
                // TODO: Use PIO mode instead
@@ -127,8 +127,8 @@ int ATA_SetupIO(void)
                return MODULE_ERR_NOTNEEDED;
        }
        
-       LOG("BAR5 = 0x%x", PCI_GetBAR5( ent ));
-       LOG("IRQ = %i", PCI_GetIRQ( ent ));
+       LOG("BAR5 = 0x%x", PCI_GetBAR(ent, 5));
+       LOG("IRQ = %i", PCI_GetIRQ(ent));
        
        // Map memory
        if( !(gATA_BusMasterBase & 1) )
@@ -353,7 +353,8 @@ int ATA_ReadDMA(Uint8 Disk, Uint64 Address, Uint Count, void *Buffer)
        
        // HACK: Ensure the PRDT is reset
        ATA_int_BusMasterWriteDWord(cont*8+4, gaATA_PRDT_PAddrs[cont]);
-               
+       ATA_int_BusMasterWriteByte(cont*8, 4);  // Reset IRQ
+       
        LOG("gATA_PRDTs[%i].Bytes = %i", cont, gATA_PRDTs[cont].Bytes);
        if( Address > 0x0FFFFFFF )
                outb(base+0x07, HDD_DMA_R48);   // Read Command (LBA48)

UCC git Repository :: git.ucc.asn.au