IOReturn IntelMausi::setPowerStateWakeAction(OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4) { IntelMausi *ethCtlr = OSDynamicCast(IntelMausi, owner); IOPCIDevice *dev; UInt16 val16; UInt8 offset; if (ethCtlr) { dev = ethCtlr->pciDevice; offset = ethCtlr->pciPMCtrlOffset; val16 = dev->configRead16(offset); val16 &= ~(kPCIPMCSPowerStateMask | kPCIPMCSPMEStatus | kPCIPMCSPMEEnable); val16 |= kPCIPMCSPowerStateD0; dev->configWrite16(offset, val16); /* Restore the PCI Command register. */ ethCtlr->intelEnablePCIDevice(dev); } return kIOReturnSuccess; }
IOReturn IntelMausi::setPowerStateSleepAction(OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4) { IntelMausi *ethCtlr = OSDynamicCast(IntelMausi, owner); IOPCIDevice *dev; UInt16 val16; UInt8 offset; if (ethCtlr) { dev = ethCtlr->pciDevice; offset = ethCtlr->pciPMCtrlOffset; val16 = dev->configRead16(offset); val16 &= ~(kPCIPMCSPowerStateMask | kPCIPMCSPMEStatus | kPCIPMCSPMEEnable); if (ethCtlr->wolActive) val16 |= (kPCIPMCSPMEStatus | kPCIPMCSPMEEnable | kPCIPMCSPowerStateD3); else val16 |= kPCIPMCSPowerStateD3; dev->configWrite16(offset, val16); } return kIOReturnSuccess; }