litroncn Posted December 28, 2008 Share Posted December 28, 2008 Hi guys, My motherboard is GA-P43-DS3, which has a ITE8213 IDE controller. Does anyone make the IDE work and how ? i have a question: Does the IOATAFamily.kext only support the memory-mapped IDE controller ? since ITE 8213 controller has four IO-mapped base address Primary Channel Command Block Register Base Address : 0xd001 (PCI configuration space offset 0x10~0x13) Primary channel Control Block Register Base Address : 0xd101 Secondary Channel Command Block Register Base Address: 0xd201 Secondary Channel Control Block Register Base Address : 0xd301 Bus Master Base Address Register : 0xd401 sample code in the AppleATIATA driver // Must setup these variables inherited from IOPCIATA before it is started. _bmCommandReg = IOATAIOReg8::withAddress( fBMBaseAddr + BM_COMMAND ); _bmStatusReg = IOATAIOReg8::withAddress( fBMBaseAddr + BM_STATUS ); _bmPRDAddresReg = IOATAIOReg32::withAddress( fBMBaseAddr + BM_PRD_TABLE ); in the file AppleATIATADriver.cpp void AppleATIATADriver::interruptOccurred( OSObject * owner, IOInterruptEventSource * source, int count ) { AppleATIATADriver * self = (AppleATIATADriver *) owner; DEBUG_LOG("AppleATIATADriver::%s()\n", __FUNCTION__); // Clear interrupt latch *(self->_bmStatusReg) = BM_STATUS_INT; // Let our superclass handle the interrupt to advance to the next state // in the state machine. self->handleDeviceInterrupt(); } *(self->_bmStatusReg) = BM_STATUS_INT; // i think it is not right for IO-mapped, am i right ? It should be: for ITE8213 pciNub->ioWrite8(BM_STATUS, BM_STATUS_INT, bmMap); // Am i right ? Is it possible for me to modify the AppleATIATA driver to make the ITE 8213 work ? Do I also need to modify the IOATAFamily ? i am a newbie for Mac driver, i want to port a driver for ITE 8213 and i would share the source code. Looking forward to suggestions/hints to help resolve this problem would be greately appreciated. Link to comment Share on other sites More sharing options...
Recommended Posts