Contribute
Register

[Guide] Patching LAPTOP DSDT/SSDTs

Hi Rehabman,

I dumped my DSTD ad SSDT's with Clover f4, decompiled using your instructions with and without the reg.tx method and I'm still getting some syntax errors after trying to compile my DSDT.dsl file. I doesn't matter whether I apply my patches that I need for my Dell XPS 13 9350 or not, I still receive these errors.-

Code:
6126 - syntax error, unexpected PARSEOP_IF, expecting PARSEOP_CLOSE_PAREN or ','
6126 - syntax error, unexpected PARSEOP_CLOSE_PAREN
6126 - syntax error, unexpected PARSEOP_SCOPE, expecting $end and premature End-Of-File

I went into the .dsl file and noticed the weird syntax around line 3952.

Code:
Store (Zero, ECRW (If (PM0H)
                            {
                                CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
                                Store (Zero, F0LN)
                            }))
                }

Looking at the rest of the code in the file, as an example, I tried to correct it by chnging it to this-
Code:
                If (PM0H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
                    Store (Zero, F0LN)
                }

Then error-
Code:
34253, 6126, syntax error, unexpected $end and premature End-Of-File

Not sure what to do to fix it. Tried to look at your Various Syntax Patches, but not sure if any apply to my error.

Attach DSDT+SSDTs from ACPI/origin.
 
Done using the native power management, but when I let my computer in sleep, it still reboot automatically. Is there another way to fix that? Thanks Rehabman.

Need also correct ACPI patching...
See post #1.
Also read sleep info in FAQ.
 
Attach DSDT+SSDTs from ACPI/origin.

Assuming you don't need the extra DSDT+SSDTs such as DSDT-or.aml, -pa0, -pa1 and -pa2, or SSDT-7x.aml, -8x, and so on...., correct?
I only included the basics DSDT.aml, SSDT-0 to 6 and 14, because that is all that is needed to decompile and patch, also correct?
 

Attachments

  • ORIGIN.zip
    52.2 KB · Views: 76
Assuming you don't need the extra DSDT+SSDTs such as DSDT-or.aml, -pa0, -pa1 and -pa2, or SSDT-7x.aml, -8x, and so on...., correct?
I only included the basics DSDT.aml, SSDT-0 to 6 and 14, because that is all that is needed to decompile and patch, also correct?

The dynamic SSDTs are needed for correct disassembly.
 

Attachments

  • ORIGIN.zip
    54.8 KB · Views: 90
Ok. Thanks. Here are all the SSDTs and just DSDT.aml.

I disassemble with: iasl -da -dl -fe refs.txt *.aml

The only error is in this code:
Code:
                If (LEqual (PM6H, One))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status
                    Store (Zero, ECRW (If (PM0H)
                            {
                                CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
                                Store (Zero, F0LN)
                            }))
                }

It is an iasl disassembler bug.

Obvious fix:
Code:
                If (LEqual (PM6H, One))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status
                    Store (Zero, ECRW) If (PM0H)
                            {
                                CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
                                Store (Zero, F0LN)
                            }
                }
 
I disassemble with: iasl -da -dl -fe refs.txt *.aml

The only error is in this code:
Code:
                If (LEqual (PM6H, One))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status
                    Store (Zero, ECRW (If (PM0H)
                            {
                                CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
                                Store (Zero, F0LN)
                            }))
                }

It is an iasl disassembler bug.

Obvious fix:
Code:
                If (LEqual (PM6H, One))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status
                    Store (Zero, ECRW) If (PM0H)
                            {
                                CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
                                Store (Zero, F0LN)
                            }
                }

Awesome! Is this a manual fix or is it in your repo and accessible through MaciASL?
 
Awesome! Is this a manual fix or is it in your repo and accessible through MaciASL?

Manual fix only. I hope to report the problem to Intel so it can be fixed in iasl (it is a regression).
 
@RehabMan

Hi, I added my all patched SSDT to my new DSDT 'cause I want to clear my ACPI/patched folder. Now inside my ACPI/patched folder one SSDT for power management, one DSDT I created and USB port SSDT.

I added all @toleda sound SSDT patched, LPC SSDT, @goodwin_c HD530 patched, Pike's sleep codes to my DSDT without no error, remark and warnings.

But I can't boot with just DSDT?

I remove DSDT and add all SSDTs to ACPI/patched folder this time I can boot without any problem.

Could you please check my DSDT what is it wrong?
 

Attachments

  • config.plist
    7.3 KB · Views: 234
  • DSDT.zip
    42.6 KB · Views: 79
  • SSDT.zip
    3.5 KB · Views: 89
Back
Top