Contribute
Register

[Guide] How to patch DSDT for working battery status

How to patch DSDT for working battery status

i can't find

Code:
OperationRegion (ECF2, EmbeddedControl, Zero, 0xFF)

in my DSDT...

Yes, I know. Which is why you probably don't need DSDT patches for battery status.

Scratch that. Maybe I had you confused with someone else.

Search for only 'EmbeddedControl'...
 
How to patch DSDT for working battery status

While I'm not yet neck deep in debugging, just a thought...

There is, in GBIF, an invocation
Code:
Store (SERN, Index (Arg1, 0x0A))

Where SERN is a six-byte Buffer, declared just above. I don't know if Apple's ACPI implementation struggles with that too.
(I think that's why serial number is bogus.)
Would a fix be a helper akin to the B1B2 and B1B4 methods (let's call it B1B6 for that matter)?

Then,
Code:
Or (Arg0, 0x04, HIID)
Name (BTYP, Buffer (0x05)
{
    0x00, 0x00, 0x00, 0x00, 0x00
})
Store (B1B4 (BCH0, BCH1, BCH2, BCH3), BTYP)
Store (BTYP, Index (Arg1, 0x0B))

with a similar problem, I think.
 
How to patch DSDT for working battery status

While I'm not yet neck deep in debugging, just a thought...

There is, in GBIF, an invocation
Code:
Store (SERN, Index (Arg1, 0x0A))

Where SERN is a six-byte Buffer, declared just above. I don't know if Apple's ACPI implementation struggles with that too.

No that works just fine in Apple ACPI.

(I think that's why serial number is bogus.)
Would a fix be a helper akin to the B1B2 and B1B4 methods (let's call it B1B6 for that matter)?

Serial # is bogus because _BIF is failing, so the kext never sees it.

Then,
Code:
Or (Arg0, 0x04, HIID)
Name (BTYP, Buffer (0x05)
{
    0x00, 0x00, 0x00, 0x00, 0x00
})
Store (B1B4 (BCH0, BCH1, BCH2, BCH3), BTYP)
Store (BTYP, Index (Arg1, 0x0B))

with a similar problem, I think.

That looks OK.
 
How to patch DSDT for working battery status

- look for places where you might have: divide by zero; access to External that is in an SSDT being dropped, etc.
I do actually drop all OEM tables, because having them around renders my box unbootable (ApplePlatformExpert panic; I tried to leave them in one by one to not much luck, but I might try again). Are such external symbols just not declared anywhere, only referenced, or do they have some definition of being external?
 
How to patch DSDT for working battery status

I do actually drop all OEM tables, because having them around renders my box unbootable (ApplePlatformExpert panic; I tried to leave them in one by one to not much luck, but I might try again). Are such external symbols just not declared anywhere, only referenced, or do they have some definition of being external?

You will see all the Externals at the top. Any access to an External not loaded will cause the ACPI interpreter to abort.
 
How to patch DSDT for working battery status

Interesting...

The first failure is at
Code:
Store (RECB (0xA0, 0x80), Index (Arg1, 0x09))

which in previous life was
Code:
Store (SBDN, Index (Arg1, 0x09))
(where SBDN is a 128-byte Buffer)

Then it can't get past
Code:
Add (Local1, 0x30, Index (SERN, Local2))
in this loop:
Code:
                            While (Local0)
                            {
                                Divide (Local0, 0x0A, Local1, Local0)
                                Add (Local1, 0x30, Index (SERN, Local2))
                                Decrement (Local2)
                            }
(Divide is ok, it's add that doesn't work, always at the fourth iteration; I've added printing the Local0..Local2 to see what the hell, and will reboot the thing to see.)

Typically the story looks like this:
Code:
AppleSmartBatteryManager::getBatteryBIF called
AppleSmartBatteryManager::getBatteryBIF: validateObject return 0x0
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f29e3ecc)
ACPIDebug: { "Entering GBIF: ", 0x0, { 0x1, 0x15f0, 0x15ce, 0x1, 0x2a30, 0x117, 0x12, 0x1, 0x1, "", { 0x33, 0x30, 0x34, 0x30, 0x36, 0x00, }, "", "", }, 0x1, }
AppleSmartBatteryManager::getBatteryBIF: evaluateObject error 0xe00002bc
AppleSmartBatteryManager::getBatteryBST called
AppleSmartBattery::setBatteryBST: acpibat_bst size = 4
AppleSmartBattery::setBatteryBST: fPowerUnit       = 0x0
AppleSmartBattery::setBatteryBST: currentStatus    = 0x0
AppleSmartBattery::setBatteryBST: fCurrentRate     = 0x0
AppleSmartBattery::setBatteryBST: fCurrentCapacity = 0x15b0
AppleSmartBattery::setBatteryBST: fCurrentVoltage  = 0x30a4
AppleSmartBattery::setBatteryBST: adjusted fCurrentRate = 0x0
AppleSmartBattery::setBatteryBST: fAverageRate = 0x0
AppleSmartBattery: Battery is charged.
AppleSmartBattery::constructAppleSerialNumber called
AppleSmartBattery::rebuildLegacyIOBatteryInfo called
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug: "Mutex acquired"
ACPIDebug: "Arg2 defined"
ACPIDebug: "Or (Arg0, One, HIID) at 5387"
ACPIDebug: "Store (SBCM, Local7) at 5389"
ACPIDebug: "XOr (Local7, One, Index (Arg1, Zero)) at 5391"
ACPIDebug: "Store (Arg0, HIID) at 5393"
ACPIDebug: "Store (B1B2 (BFC0, BFC1), Local1) at 5397"
ACPIDebug: "Alive #1"
ACPIDebug: "Alive #2"
ACPIDebug: "Alive #5"
ACPIDebug: "Alive #6"
ACPIDebug: "Alive #7"
ACPIDebug: "Alive #10"
ACPIDebug: "Alive #11"
ACPIDebug: "Alive #12"
ACPIDebug: "Alive #14"
ACPIDebug: "Alive #15"
ACPIDebug: "Alive #16"
ACPIDebug: "* Loop #1"
ACPIDebug: "* Loop #1: alive #17"
ACPIDebug: "* Loop #1: alive #18"
ACPIDebug: "* Loop #1: alive #19"
ACPIDebug: "* Loop #1"
ACPIDebug: "* Loop #1: alive #17"
ACPIDebug: "* Loop #1: alive #18"
ACPIDebug: "* Loop #1: alive #19"
ACPIDebug: "* Loop #1"
ACPIDebug: "* Loop #1: alive #17"
ACPIDebug: "* Loop #1: alive #18"
ACPIDebug: "* Loop #1: alive #19"
ACPIDebug: "* Loop #1"
ACPIDebug: "* Loop #1: alive #17"
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
 
How to patch DSDT for working battery status

After I called out to print locals, too, the failure pattern is as follows:
Code:
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBatteryManager::getBatteryBIF called
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBatteryManager::getBatteryBIF: validateObject return 0x0
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug::message(-536707056, 0xffffff8012921100, 0xffffff80f288becc)
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: { "Entering GBIF: ", 0x0, { 0x1, 0x15f0, 0x15ce, 0x1, 0x2a30, 0x117, 0x12, 0x1, 0x1, "", { 0x33, 0x30, 0x34, 0x30, 0x36, 0x00, }, "", "", }, 0x1, }
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Mutex acquired"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Arg2 defined"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Or (Arg0, One, HIID) at 5387"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Store (SBCM, Local7) at 5389"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "XOr (Local7, One, Index (Arg1, Zero)) at 5391"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Store (Arg0, HIID) at 5393"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Store (B1B2 (BFC0, BFC1), Local1) at 5397"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #1"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #2"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #5"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #6"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #7"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #10"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #11"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #12"
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBatteryManager::getBatteryBIF: evaluateObject error 0xe00002bc
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBatteryManager::getBatteryBST called
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #14"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #15"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "Alive #16"
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: { "* Loop #1, locals = ", 0x76c6, 0x15ce, 0x4, }
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: { "* Loop #1, locals = ", 0xbe0, 0x6, 0x3, }
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::setBatteryBST: acpibat_bst size = 4
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::setBatteryBST: fPowerUnit       = 0x0
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::setBatteryBST: currentStatus    = 0x0
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::setBatteryBST: fCurrentRate     = 0x0
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::setBatteryBST: fCurrentCapacity = 0x15b0
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::setBatteryBST: fCurrentVoltage  = 0x30a4
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::setBatteryBST: adjusted fCurrentRate = 0x0
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::setBatteryBST: fAverageRate = 0x0
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery: Battery is charged.
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::constructAppleSerialNumber called
Jan 24 21:03:16 deepthought kernel[0]: AppleSmartBattery::rebuildLegacyIOBatteryInfo called
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug::message(-536707056, 0xffffff8012921100, 0xffffff80f07fbecc)
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: { "* Loop #1, locals = ", 0x130, 0x0, 0x2, }
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: { "* Loop #1, locals = ", 0x1e, 0x4, 0x1, }
Jan 24 21:03:16 deepthought kernel[0]: ACPIDebug: "* Loop #1: alive #17"

Also note that the first time it's ok until RECB is called for the first time, and then it's crippled...

The first loop looks like
Code:
Store (0x04, Local2)

While (Local0)
  {
    ACPIDebug: { "* Loop #1, locals = ", 0x76c6, 0x15ce, 0x4, }
    ACPIDebug: { "* Loop #1, locals = ", 0xbe0, 0x6, 0x3, }
    ACPIDebug: { "* Loop #1, locals = ", 0x130, 0x0, 0x2, }
    ACPIDebug: { "* Loop #1, locals = ", 0x1e, 0x4, 0x1, }
    ACPIDebug: { "* Loop #1, locals = ", 0x3, 0x0, 0x0, }
    // The body
    Divide (Local0, 0x0A, Local1, Local0)
    Add (Local1, 0x30, Index (SERN, Local2))
    Decrement (Local2)
   }

What's interesting, Local0..Local2 in both healthy and breaking loops are the same.
 
How to patch DSDT for working battery status

Interesting...

The first failure is at
Code:
Store (RECB (0xA0, 0x80), Index (Arg1, 0x09))

which in previous life was
Code:
Store (SBDN, Index (Arg1, 0x09))
(where SBDN is a 128-byte Buffer)

Then it can't get past
Code:
Add (Local1, 0x30, Index (SERN, Local2))
in this loop:
Code:
                            While (Local0)
                            {
                                Divide (Local0, 0x0A, Local1, Local0)
                                Add (Local1, 0x30, Index (SERN, Local2))
                                Decrement (Local2)
                            }
(Divide is ok, it's add that doesn't work, always at the fourth iteration; I've added printing the Local0..Local2 to see what the hell, and will reboot the thing to see.)

Typically the story looks like this:
Code:
AppleSmartBatteryManager::getBatteryBIF called
AppleSmartBatteryManager::getBatteryBIF: validateObject return 0x0
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f29e3ecc)
ACPIDebug: { "Entering GBIF: ", 0x0, { 0x1, 0x15f0, 0x15ce, 0x1, 0x2a30, 0x117, 0x12, 0x1, 0x1, "", { 0x33, 0x30, 0x34, 0x30, 0x36, 0x00, }, "", "", }, 0x1, }
AppleSmartBatteryManager::getBatteryBIF: evaluateObject error 0xe00002bc
AppleSmartBatteryManager::getBatteryBST called
AppleSmartBattery::setBatteryBST: acpibat_bst size = 4
AppleSmartBattery::setBatteryBST: fPowerUnit       = 0x0
AppleSmartBattery::setBatteryBST: currentStatus    = 0x0
AppleSmartBattery::setBatteryBST: fCurrentRate     = 0x0
AppleSmartBattery::setBatteryBST: fCurrentCapacity = 0x15b0
AppleSmartBattery::setBatteryBST: fCurrentVoltage  = 0x30a4
AppleSmartBattery::setBatteryBST: adjusted fCurrentRate = 0x0
AppleSmartBattery::setBatteryBST: fAverageRate = 0x0
AppleSmartBattery: Battery is charged.
AppleSmartBattery::constructAppleSerialNumber called
AppleSmartBattery::rebuildLegacyIOBatteryInfo called
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug: "Mutex acquired"
ACPIDebug: "Arg2 defined"
ACPIDebug: "Or (Arg0, One, HIID) at 5387"
ACPIDebug: "Store (SBCM, Local7) at 5389"
ACPIDebug: "XOr (Local7, One, Index (Arg1, Zero)) at 5391"
ACPIDebug: "Store (Arg0, HIID) at 5393"
ACPIDebug: "Store (B1B2 (BFC0, BFC1), Local1) at 5397"
ACPIDebug: "Alive #1"
ACPIDebug: "Alive #2"
ACPIDebug: "Alive #5"
ACPIDebug: "Alive #6"
ACPIDebug: "Alive #7"
ACPIDebug: "Alive #10"
ACPIDebug: "Alive #11"
ACPIDebug: "Alive #12"
ACPIDebug: "Alive #14"
ACPIDebug: "Alive #15"
ACPIDebug: "Alive #16"
ACPIDebug: "* Loop #1"
ACPIDebug: "* Loop #1: alive #17"
ACPIDebug: "* Loop #1: alive #18"
ACPIDebug: "* Loop #1: alive #19"
ACPIDebug: "* Loop #1"
ACPIDebug: "* Loop #1: alive #17"
ACPIDebug: "* Loop #1: alive #18"
ACPIDebug: "* Loop #1: alive #19"
ACPIDebug: "* Loop #1"
ACPIDebug: "* Loop #1: alive #17"
ACPIDebug: "* Loop #1: alive #18"
ACPIDebug: "* Loop #1: alive #19"
ACPIDebug: "* Loop #1"
ACPIDebug: "* Loop #1: alive #17"
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f0503ecc)
ACPIDebug::message(-536707056, 0xffffff80129b8100, 0xffffff80f08d3ecc)

Check that you have the correct vanilla AppleACPIPlatform installed.

Code:
kextstat|grep -y acpiplat

Also, are you using Clover? If so, make sure you have all DSDT "auto-patching/fixes" turned off.
 
How to patch DSDT for working battery status

Code:
   12    2 0xffffff7f8202c000 0x5f000    0x5f000    com.apple.driver.AppleACPIPlatform (2.0) <11 10 7 6 5 4 3 1>
As for SSDT and fixes: the mask is zero. However, I got the first DSDT after applying a mask (then had to remove it, because Clover can't yet detect a patch already applied, maybe that's the reason).

Will retry to get the most vanilla DSDT (with PROBABLY minimal fixes if system doesn't boot without them) and reapply the battery stuff to it...

Maybe there'll be something to report to Clover upstream.

(OT note: I need to buy some good wine for the tester at my job: now I kinda feel how tedious their job is.)
 
How to patch DSDT for working battery status

Code:
   12    2 0xffffff7f8202c000 0x5f000    0x5f000    com.apple.driver.AppleACPIPlatform (2.0) <11 10 7 6 5 4 3 1>
As for SSDT and fixes: the mask is zero. However, I got the first DSDT after applying a mask (then had to remove it, because Clover can't yet detect a patch already applied, maybe that's the reason).

Yeah, probably bad news there trying to use Clover's fixes. It is improving but I still see tons of problems caused directly by it.

Will retry to get the most vanilla DSDT (with PROBABLY minimal fixes if system doesn't boot without them) and reapply the battery stuff to it...

I recommend applying fixes to your DSDT manually, using MaciASL...

FYI: Even if Clover's DSDT fixes were reliable, the way to implement battery patches would be to place a DSDT with *only* battery fixes into CLOVER/ACPI/patched, then allow clover to auto-fix that. But really, I recommend against using Clover DSDT "fixes."
 
Back
Top