IOReturn OHareATA::selectConfig( IOATADevConfig* configRequest, UInt32 unitNumber) { // param check the pointers and the unit number. if( configRequest == 0 || unitNumber > 1 ) { DLOG("OHareATA bad param in setConfig\n"); return -1; } // no ultra on ohare if( configRequest->getUltraMode() ) { DLOG("OHareATA setConfig no ultra\n"); return kATAModeNotSupported; } // all config requests must include a PIO mode if( ( configRequest->getPIOMode() & kATASupportedPIOModes ) == 0x00 ) { DLOG("OHareATA setConfig PIO mode not supported\n"); return kATAModeNotSupported; } // DMA is optional - not all devices support it, we reality check for a setting // that is beyond our capability if( configRequest->getDMAMode() & ~kATASupportedMultiDMAModes ) { DLOG("OHareATA setConfig DMA mode not supported\n"); return kATAModeNotSupported; } _devInfo[unitNumber].packetSend = configRequest->getPacketConfig(); DLOG("OHareATA setConfig packetConfig = %ld\n", _devInfo[unitNumber].packetSend ); return selectIOTimerValue(configRequest, unitNumber); }
IOReturn AppleKiwiATA::selectConfig( IOATADevConfig* configRequest, UInt32 unitNumber) { // param check the pointers and the unit number. if( configRequest == 0 || unitNumber > 1 ) { DLOG("AppleKiwiATA bad param in setConfig\n"); return -1; } // all config requests must include a PIO mode if( ( configRequest->getPIOMode() & kATASupportedPIOModes ) == 0x00 ) { DLOG("AppleKiwiATA setConfig PIO mode not supported\n"); return kATAModeNotSupported; } // DMA is optional - not all devices support it, we reality check for a setting // that is beyond our capability UInt16 ultraSupported = kATASupportedUltraDMAModes; if( mode6Capable ) { ultraSupported = kATAAddSupport133; } // make sure a requested ultra ATA mode is within the range of this device configuration if( configRequest->getUltraMode() & ~ultraSupported ) { DLOG("AppleKiwiATA setConfig no ultra\n"); return kATAModeNotSupported; } if( configRequest->getDMAMode() & ~kATASupportedMultiDMAModes ) { DLOG("AppleKiwiATA setConfig DMA mode not supported\n"); return kATAModeNotSupported; } if( configRequest->getDMAMode() > 0x0000 && configRequest->getUltraMode() > 0x0000 ) { DLOG("AppleKiwiATA err, only one DMA class allowed in config select\n"); return kATAModeNotSupported; } _devInfo[unitNumber].packetSend = configRequest->getPacketConfig(); DLOG("AppleKiwiATA setConfig packetConfig = %d\n", _devInfo[unitNumber].packetSend ); return selectIOTimerValue(configRequest, unitNumber);; }