Skip to content

Commit 618eb94

Browse files
committed
AirportItlwm: add power state handler for IOPCIEDeviceWrapper driver, this fix the sleep/wake issue on Sonoma(#937).
1 parent 3999899 commit 618eb94

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

AirportItlwm/IOPCIEDeviceWrapper.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ OSDefineMetaClassAndStructors(IOPCIEDeviceWrapper, IOService);
2323
#define PCI_MSIX_FLAGS_ENABLE 0x8000 /* MSI-X enable */
2424
#define PCI_MSI_FLAGS_ENABLE 0x0001 /* MSI feature enabled */
2525

26+
static IOPMPowerState powerStateArray[2] =
27+
{
28+
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
29+
{1, kIOPMDeviceUsable, kIOPMPowerOn, kIOPMPowerOn, 0, 0, 0, 0, 0, 0, 0, 0}
30+
};
31+
2632
static void pciMsiSetEnable(IOPCIDevice *device, UInt8 msiCap, int enable)
2733
{
2834
UInt16 control;
@@ -105,6 +111,9 @@ start(IOService *provider)
105111
IOLog("%s::super start succeed\n", getName());
106112
UInt8 builtIn = 0;
107113
setProperty("built-in", OSData::withBytes(&builtIn, sizeof(builtIn)));
114+
PMinit();
115+
registerPowerDriver(this, powerStateArray, 2);
116+
provider->joinPMtree(this);
108117
registerService();
109118
return true;
110119
}
@@ -113,5 +122,12 @@ void IOPCIEDeviceWrapper::
113122
stop(IOService *provider)
114123
{
115124
XYLog("%s\n", __PRETTY_FUNCTION__);
125+
PMstop();
116126
super::stop(provider);
117127
}
128+
129+
IOReturn IOPCIEDeviceWrapper::
130+
setPowerState(unsigned long powerStateOrdinal, IOService *whatDevice)
131+
{
132+
return IOPMAckImplied;
133+
}

AirportItlwm/IOPCIEDeviceWrapper.hpp

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ class IOPCIEDeviceWrapper : public IOService {
2424
virtual bool start(IOService *provider) override;
2525
virtual void stop(IOService *provider) override;
2626
virtual IOWorkLoop* getWorkLoop() const override;
27+
virtual IOReturn setPowerState(
28+
unsigned long powerStateOrdinal,
29+
IOService * whatDevice ) override;
2730

2831
public:
2932
ItlHalService *fHalService;

0 commit comments

Comments
 (0)