Skip to content

Instantly share code, notes, and snippets.

@mailhost
Created June 10, 2019 14:32
Show Gist options
  • Save mailhost/d5b27b247fa26d8bdc8a5d2022347306 to your computer and use it in GitHub Desktop.
Save mailhost/d5b27b247fa26d8bdc8a5d2022347306 to your computer and use it in GitHub Desktop.
Dell Precision 5510 1.10.0 DSDT fixes
--- dsdt.orig 2019-06-10 16:09:40.945676250 +0200
+++ dsdt.dsl 2019-06-10 16:28:15.274723137 +0200
@@ -3905,11 +3905,13 @@
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) /* \_SB_.PCI0._CRS.F0LN */
- }))
+ Store (Zero, ECRW)
+ }
+
+ If (PM0H)
+ {
+ CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN) // _LEN: Length
+ Store (Zero, F0LN) /* \_SB_.PCI0._CRS.F0LN */
}
If (LEqual (PM0H, One))
@@ -17012,14 +17014,6 @@
P8XH (One, 0xAB)
ADBG ("_WAK")
\_SB.PCI0.GEXP.INVC ()
- If (LEqual (Arg0, 0x03))
- {
- Store (One, \_SB.PCI0.SAT0.TFGF) /* External reference */
- }
- Else
- {
- Store (Zero, \_SB.PCI0.SAT0.TFGF) /* External reference */
- }
If (LEqual (S0ID, One))
{
@@ -17317,10 +17311,16 @@
If (LEqual (DPTF, One))
{
- Notify (\_SB.IETM, 0x86) // Device-Specific
- If (LEqual (CHGE, One))
+ If (CondRefOf (\_SB.IETM))
{
- Notify (\_SB.PCI0.LPCB.H_EC.CHRG, 0x80) // Status Change
+ Notify (\_SB.IETM, 0x86) // Device-Specific
+ If (LEqual (CHGE, One))
+ {
+ If (CondRefOf (\_SB.PCI0.LPCB.H_EC.CHRG))
+ {
+ Notify (\_SB.PCI0.LPCB.H_EC.CHRG, 0x80) // Status Change
+ }
+ }
}
}
}
@@ -18527,6 +18527,84 @@
ADBG ("OS_Up_Received")
If (LEqual (DPTF, One))
{
+ XE42 ()
+ }
+
+ Return (Zero)
+ }
+
+ If (LEqual (Local1, 0x02))
+ {
+ NTFY ()
+ Sleep (0x10)
+ Release (OSUM)
+ P8XH (Zero, 0x7D)
+ ADBG ("Disconnect")
+ Return (Zero)
+ }
+
+ If (LEqual (SOHP, One))
+ {
+ ADBG ("TBT SW SMI")
+ Store (TBSW, SSMP) /* \_GPE._E42.SSMP */
+ }
+
+ Sleep (0x20)
+ NTFY ()
+ Sleep (0x10)
+ Release (OSUM)
+ ADBG ("End-of-_E42")
+ }
+
+ Method (XE42, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF
+ {
+ ADBG ("_E42")
+ If (LEqual (CF2T, One))
+ {
+ ADBG ("Clear")
+ ADBG ("GPI_GPE_STS")
+ \_SB.CAGS (CPGN)
+ }
+
+ WWAK ()
+ WSUB ()
+ If (LEqual (TNAT, One))
+ {
+ Store (RSMI (), Local0)
+ If (LNot (Local0))
+ {
+ Return (Zero)
+ }
+
+ If (DMSI ())
+ {
+ Return (Zero)
+ }
+ }
+
+ If (GNIS ())
+ {
+ Return (Zero)
+ }
+
+ OperationRegion (SPRT, SystemIO, 0xB2, 0x02)
+ Field (SPRT, ByteAcc, Lock, Preserve)
+ {
+ SSMP, 8
+ }
+
+ ADBG ("TBT-HP-Handler")
+ ADBG ("PEG WorkAround")
+ PGWA ()
+ Acquire (OSUM, 0xFFFF)
+ Store (TBFF (), Local1)
+ If (LEqual (Local1, One))
+ {
+ Sleep (0x10)
+ Release (OSUM)
+ ADBG ("OS_Up_Received")
+ If (LEqual (DPTF, One))
+ {
_E42 ()
}
@@ -33363,6 +33441,75 @@
}
}
}
+
+ Scope (_SB.PCI0.LPCB)
+ {
+ Device (H_EC)
+ {
+ Name (_HID, EisaId ("PNP0C09")) // _HID: Hardware ID
+ Name (_UID, One) // _UID: Unique ID
+ Method (_STA, 0, NotSerialized) // _STA: Status
+ {
+ Return (Zero)
+ }
+
+ Name (B1CC, Zero)
+ Name (B1ST, Zero)
+ Name (B2CC, Zero)
+ Name (B2ST, Zero)
+ Name (CFAN, Zero)
+ Name (CMDR, Zero)
+ Name (DOCK, Zero)
+ Name (EJET, Zero)
+ Name (MCAP, Zero)
+ Name (PLMX, Zero)
+ Name (PECH, Zero)
+ Name (PECL, Zero)
+ Name (PENV, Zero)
+ Name (PINV, Zero)
+ Name (PPSH, Zero)
+ Name (PPSL, Zero)
+ Name (PSTP, Zero)
+ Name (RPWR, Zero)
+ Name (LIDS, Zero)
+ Name (LSTE, Zero)
+ Name (SLPC, Zero)
+ Name (VPWR, Zero)
+ Name (WTMS, Zero)
+ Name (AWT2, Zero)
+ Name (AWT1, Zero)
+ Name (AWT0, Zero)
+ Name (DLED, Zero)
+ Name (IBT1, Zero)
+ Name (ECAV, Zero)
+ Name (SPT2, Zero)
+ Name (PB10, Zero)
+ Name (IWCW, Zero)
+ Name (IWCR, Zero)
+ Method (ECMD, 1, Serialized)
+ {
+ If (ECON)
+ {
+ While (CMDR)
+ {
+ Stall (0x14)
+ }
+
+ Store (Arg0, CMDR)
+ }
+ }
+
+ Method (ECRD, 1, Serialized)
+ {
+ Return (DerefOf (Arg0))
+ }
+
+ Method (ECWT, 2, Serialized)
+ {
+ Store (Arg0, Arg1)
+ }
+ }
+ }
Scope (_SB.PCI0.LPCB)
{
// iasl -fe refs.txt -dl -e ssdt01.dat ssdt02.dat ssdt03.dat ssdt04.dat ssdt05.dat ssdt06.dat ssdt07.dat ssdt08.dat ssdt09.dat ssdt10.dat ssdt11.dat ssdt12.dat ssdt13.dat ssdt14.dat ssdt15.dat ssdt16.dat -d dsdt.dat
// be careful using iasl -da, since it might not load the SSDT in the correct order!
// missing refs for dsdt.dsl that iasl will most likely guess correctly
External (_SB_.PCI0.PAUD.PUAM, MethodObj) // Warning: Unknown method, guessing 0 arguments
External (_SB_.PCI0.XHC_.DUAM, MethodObj) // Warning: Unknown method, guessing 0 arguments
External (_SB_.PCI0.XHC_.RHUB.INIR, MethodObj) // Warning: Unknown method, guessing 0 arguments
External (_SB_.TPM_.PTS_, MethodObj, 1) // Warning: Unknown method, guessing 1 arguments
External (AL6F, MethodObj) // Warning: Unknown method, guessing 0 arguments
External (HLVT, MethodObj) // Warning: Unknown method, guessing 0 arguments
External (PS0X, MethodObj) // Warning: Unknown method, guessing 0 arguments
External (PS2X, MethodObj) // Warning: Unknown method, guessing 0 arguments
External (PS3X, MethodObj) // Warning: Unknown method, guessing 0 arguments
//dsdt.dsl 13182: Arg1
//Error 6126 - ^ syntax error, unexpected PARSEOP_ARG1
External (_SB.PCI0.SAT0.SDSM, MethodObj, 4)
External (_SB.PCI0.SAT1.SDSM, MethodObj, 4)
//dsdt.dsl 16955: }
//Error 6126 - ^ syntax error, unexpected '}'
External (MDBG, MethodObj, 1)
@mailhost
Copy link
Author

mailhost commented Feb 4, 2020

I forgot to mention: in order for the modified DSDT to be picked-up/loaded by the kernel, you need to increment the 'version' found in the DefinitionBlock of the modified dsdt.dsl (before you iasl compile it),
e.g.
DefinitionBlock ("", "DSDT", 2, "DELL ", "CBX3 ", 0x01072009)
...could turn into...
DefinitionBlock ("", "DSDT", 2, "DELL ", "CBX3 ", 0x0107200A)

@mverrilli
Copy link

mverrilli commented Feb 5, 2020

@mailhost Thanks. I was able to get this working (I forgot about the revision but eventually figured that out). This worked for me on BIOS 1.13.1 with UEFI and Kernel 5.3.

I still get some errors and I haven't really had a chance to dig into them but the laptop does work better with this patch. If I get time I'll look closer into these. I still have trouble with the nvidia which seems to really slow down under certain workloads so I'm using intel or now.

[    0.270605] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.PEG0.PEGP.EBAS], AE_NOT_FOUND (20190703/psargs-330)
[    0.270612] ACPI: Ignoring error and continuing table load
[    0.270625] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.PEG0.PEGP.PCI2], AE_NOT_FOUND (20190703/dsfield-502)
[    0.270645] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.PEG0.PEGP.NVHA], AE_NOT_FOUND (20190703/psargs-330)
[    0.270648] ACPI: Ignoring error and continuing table load
[    0.270662] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.PEG0.PEGP.NVHM], AE_NOT_FOUND (20190703/dsfield-502)
[    0.270699] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.GFX0.NVGA], AE_NOT_FOUND (20190703/psargs-330)
[    0.270702] ACPI: Ignoring error and continuing table load
[    0.270722] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.GFX0.NVIG], AE_NOT_FOUND (20190703/dsfield-502)

[    0.375844] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug

[    0.453710] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[    0.453755] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM

[    3.995467] ACPI Warning: \_SB.IETM._ART: Return Package type mismatch at index 0 - found Integer, expected Reference (20190703/nspredef-263)
[    3.995488] ACPI: Invalid package element [0]: got number, expecting [R]
[    3.995648] ACPI Warning: \_SB.IETM._TRT: Return Package has no elements (empty) (20190703/nsprepkg-96)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment