X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FStorage%2FATA%2Fmain.c;h=a1010a83a65a56d7ef8746ad31597eadaa60c928;hb=049de1f2533477716a12a708c097b199eaa8fb6c;hp=1ba124b59426147b30d83152964be388aa3eef53;hpb=b3fa9a08edcbc459bd8e9df73186e292470ebfc3;p=tpg%2Facess2.git diff --git a/Modules/Storage/ATA/main.c b/Modules/Storage/ATA/main.c index 1ba124b5..a1010a83 100644 --- a/Modules/Storage/ATA/main.c +++ b/Modules/Storage/ATA/main.c @@ -76,7 +76,7 @@ void ATA_int_BusMasterWriteByte(int Ofs, Uint8 Value); void ATA_int_BusMasterWriteDWord(int Ofs, Uint32 Value); // === GLOBALS === -MODULE_DEFINE(0, 0x0032, i386ATA, ATA_Install, NULL, NULL); +MODULE_DEFINE(0, 0x0032, i386ATA, ATA_Install, NULL, "PCI", NULL); tDevFS_Driver gATA_DriverInfo = { NULL, "ata", { @@ -112,16 +112,16 @@ int ATA_Install() int ret; ret = ATA_SetupIO(); - if(ret != 1) return ret; + if(ret) return ret; ATA_SetupPartitions(); ATA_SetupVFS(); if( DevFS_AddDevice( &gATA_DriverInfo ) == 0 ) - return MODULE_INIT_FAILURE; + return MODULE_ERR_MISC; - return MODULE_INIT_SUCCESS; + return MODULE_ERR_OK; } /** @@ -141,15 +141,17 @@ int ATA_SetupIO() gATA_BusMasterBase = PCI_GetBAR4( ent ); if( gATA_BusMasterBase == 0 ) { Warning("It seems that there is no Bus Master Controller on this machine. Get one"); - LEAVE('i', MODULE_INIT_FAILURE); - return MODULE_INIT_FAILURE; + LEAVE('i', MODULE_ERR_NOTNEEDED); + return MODULE_ERR_NOTNEEDED; } + + // Map memory if( !(gATA_BusMasterBase & 1) ) { if( gATA_BusMasterBase < 0x100000 ) gATA_BusMasterBasePtr = (void*)(0xC0000000|gATA_BusMasterBase); else - gATA_BusMasterBasePtr = (void*)( MM_MapHWPage( gATA_BusMasterBase, 1 ) + (gATA_BusMasterBase&0xFFF) ); + gATA_BusMasterBasePtr = (void*)( MM_MapHWPages( gATA_BusMasterBase, 1 ) + (gATA_BusMasterBase&0xFFF) ); LOG("gATA_BusMasterBasePtr = %p", gATA_BusMasterBasePtr); } else { @@ -157,6 +159,7 @@ int ATA_SetupIO() LOG("gATA_BusMasterBase = 0x%x", gATA_BusMasterBase & ~1); } + // Register IRQs and get Buffers IRQ_AddHandler( gATA_IRQPri, ATA_IRQHandlerPri ); IRQ_AddHandler( gATA_IRQSec, ATA_IRQHandlerSec ); @@ -172,11 +175,13 @@ int ATA_SetupIO() LOG("addr = 0x%x", addr); ATA_int_BusMasterWriteDWord(12, addr); + // Enable controllers outb(IDE_PRI_BASE+1, 1); outb(IDE_SEC_BASE+1, 1); - LEAVE('i', MODULE_INIT_SUCCESS); - return MODULE_INIT_SUCCESS; + // return + LEAVE('i', MODULE_ERR_OK); + return MODULE_ERR_OK; } /**