Skip to content

Instantly share code, notes, and snippets.

@rickybrent
Forked from fiji-flo/X16_S3_DSDT.patch
Created March 5, 2018 01:04
Show Gist options
  • Save rickybrent/1dabaf78ad03c290aa97489bef7d36fb to your computer and use it in GitHub Desktop.
Save rickybrent/1dabaf78ad03c290aa97489bef7d36fb to your computer and use it in GitHub Desktop.
--- dsdt.dsl 2018-03-04 16:00:00.866484238 -0800
+++ dsdt.dsl 2018-03-04 16:28:07.933272752 -0800
@@ -18,9 +18,8 @@
* Compiler ID "INTL"
* Compiler Version 0x20160527 (538314023)
*/
-DefinitionBlock ("", "DSDT", 2, "LENOVO", "SKL ", 0x00000000)
+DefinitionBlock ("", "DSDT", 2, "LENOVO", "SKL ", 0x00000001)
{
- External (_GPE.TBNF, MethodObj) // 0 Arguments
External (_PR_.BGIA, UnknownObj)
External (_PR_.BGMA, UnknownObj)
External (_PR_.BGMS, UnknownObj)
@@ -40,19 +39,15 @@
External (_PR_.PDTS, UnknownObj)
External (_PR_.PKGA, UnknownObj)
External (_PR_.POWS, UnknownObj)
- External (_PR_.PR00, DeviceObj)
External (_PR_.PR00.LPSS, PkgObj)
External (_PR_.PR00.TPSS, PkgObj)
External (_PR_.TRPD, UnknownObj)
External (_PR_.TRPF, UnknownObj)
- External (_SB_.GGIV, MethodObj) // 1 Arguments
- External (_SB_.GGOV, MethodObj) // 1 Arguments
External (_SB_.IETM, DeviceObj)
External (_SB_.IETM.DPTE, UnknownObj)
External (_SB_.PCI0.B0D4.NPCC, PkgObj)
External (_SB_.PCI0.CTCD, MethodObj) // 0 Arguments
External (_SB_.PCI0.CTCN, MethodObj) // 0 Arguments
- External (_SB_.PCI0.GFX0, DeviceObj)
External (_SB_.PCI0.GFX0.AINT, MethodObj) // 2 Arguments
External (_SB_.PCI0.GFX0.ALSI, UnknownObj)
External (_SB_.PCI0.GFX0.CBLV, UnknownObj)
@@ -71,108 +66,81 @@
External (_SB_.PCI0.HDAS.PS3X, MethodObj) // 0 Arguments
External (_SB_.PCI0.HIDW, MethodObj) // 4 Arguments
External (_SB_.PCI0.HIWC, MethodObj) // 1 Arguments
- External (_SB_.PCI0.ISP0, DeviceObj)
External (_SB_.PCI0.LPCB.H_EC.XDAT, MethodObj) // 0 Arguments
External (_SB_.PCI0.PAUD.PUAM, MethodObj) // 0 Arguments
- External (_SB_.PCI0.PEG0, DeviceObj)
- External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
External (_SB_.PCI0.PEG0.PG00.PEGP, DeviceObj)
- External (_SB_.PCI0.PEG1, DeviceObj)
External (_SB_.PCI0.PEG1.PG01.PEGP, DeviceObj)
- External (_SB_.PCI0.PEG2, DeviceObj)
External (_SB_.PCI0.PEG2.PG02.PEGP, DeviceObj)
External (_SB_.PCI0.PTDP, UnknownObj)
External (_SB_.PCI0.RP01.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP01.PXSX, DeviceObj)
- External (_SB_.PCI0.RP01.PXSX.WGST, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP01.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP02.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP02.PXSX, DeviceObj)
External (_SB_.PCI0.RP02.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP02.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP03.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP03.PXSX, DeviceObj)
External (_SB_.PCI0.RP03.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP03.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP04.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP04.PXSX, DeviceObj)
External (_SB_.PCI0.RP04.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP04.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP05.PON_, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP05.PWRG, UnknownObj)
- External (_SB_.PCI0.RP05.PXSX, DeviceObj)
External (_SB_.PCI0.RP05.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP05.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP05.RSTG, UnknownObj)
External (_SB_.PCI0.RP05.SCLK, UnknownObj)
External (_SB_.PCI0.RP06.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP06.PXSX, DeviceObj)
External (_SB_.PCI0.RP06.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP06.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP07.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP07.PXSX, DeviceObj)
External (_SB_.PCI0.RP07.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP07.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP08.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP08.PXSX, DeviceObj)
External (_SB_.PCI0.RP08.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP08.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP09.PEGP.NVST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP09.PON_, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP09.PWRG, UnknownObj)
- External (_SB_.PCI0.RP09.PXSX, DeviceObj)
External (_SB_.PCI0.RP09.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP09.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP09.RSTG, UnknownObj)
External (_SB_.PCI0.RP09.SCLK, UnknownObj)
External (_SB_.PCI0.RP10.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP10.PXSX, DeviceObj)
External (_SB_.PCI0.RP10.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP10.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP11.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP11.PXSX, DeviceObj)
External (_SB_.PCI0.RP11.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP11.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP12.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP12.PXSX, DeviceObj)
External (_SB_.PCI0.RP12.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP12.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP13.PON_, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP13.PWRG, UnknownObj)
- External (_SB_.PCI0.RP13.PXSX, DeviceObj)
External (_SB_.PCI0.RP13.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP13.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP13.RSTG, UnknownObj)
External (_SB_.PCI0.RP13.SCLK, UnknownObj)
External (_SB_.PCI0.RP14.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP14.PXSX, DeviceObj)
External (_SB_.PCI0.RP14.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP14.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP15.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP15.PXSX, DeviceObj)
External (_SB_.PCI0.RP15.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP15.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP16.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP16.PXSX, DeviceObj)
External (_SB_.PCI0.RP16.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP16.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP17.PON_, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP17.PWRG, UnknownObj)
- External (_SB_.PCI0.RP17.PXSX, DeviceObj)
External (_SB_.PCI0.RP17.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP17.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP17.RSTG, UnknownObj)
External (_SB_.PCI0.RP17.SCLK, UnknownObj)
External (_SB_.PCI0.RP18.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP18.PXSX, DeviceObj)
External (_SB_.PCI0.RP18.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP18.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP19.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP19.PXSX, DeviceObj)
External (_SB_.PCI0.RP19.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP19.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP20.PON_, MethodObj) // 0 Arguments
- External (_SB_.PCI0.RP20.PXSX, DeviceObj)
External (_SB_.PCI0.RP20.PXSX.WGST, MethodObj) // 0 Arguments
External (_SB_.PCI0.RP20.PXSX.WIST, MethodObj) // 0 Arguments
External (_SB_.PCI0.SAT0.NVM1.VLPM, UnknownObj)
@@ -191,16 +159,12 @@
External (_SB_.PCI0.XHC_.RHUB.PS0X, MethodObj) // 0 Arguments
External (_SB_.PCI0.XHC_.RHUB.PS2X, MethodObj) // 0 Arguments
External (_SB_.PCI0.XHC_.RHUB.PS3X, MethodObj) // 0 Arguments
- External (_SB_.SGOV, MethodObj) // 2 Arguments
- External (_SB_.TBFP, MethodObj) // 1 Arguments
External (_SB_.TPM_.PTS_, MethodObj) // 1 Arguments
External (_SB_.UBTC.NTFY, MethodObj) // 0 Arguments
External (_TZ_.ETMD, IntObj)
External (_TZ_.TZ00, DeviceObj)
External (_TZ_.TZ01, DeviceObj)
- External (ADBG, MethodObj) // 1 Arguments
External (ALSE, UnknownObj)
- External (BNUM, UnknownObj)
External (BRTL, UnknownObj)
External (CFGD, UnknownObj)
External (DIDX, UnknownObj)
@@ -213,28 +177,6 @@
External (M32L, UnknownObj)
External (M64B, UnknownObj)
External (M64L, UnknownObj)
- External (MMRP, MethodObj) // 1 Arguments
- External (MMTB, MethodObj) // 1 Arguments
- External (ODV0, IntObj)
- External (ODV1, IntObj)
- External (ODV2, IntObj)
- External (ODV3, IntObj)
- External (ODV4, IntObj)
- External (ODV5, IntObj)
- External (ODV6, IntObj)
- External (ODV7, IntObj)
- External (ODV8, IntObj)
- External (ODV9, IntObj)
- External (ODVA, IntObj)
- External (ODVB, IntObj)
- External (ODVC, IntObj)
- External (ODVD, IntObj)
- External (ODVE, IntObj)
- External (ODVF, IntObj)
- External (ODVG, IntObj)
- External (ODVH, IntObj)
- External (ODVI, IntObj)
- External (ODVJ, IntObj)
External (PC00, IntObj)
External (PC01, UnknownObj)
External (PC02, UnknownObj)
@@ -253,16 +195,11 @@
External (PC15, UnknownObj)
External (PTTB, UnknownObj)
External (SGMD, UnknownObj)
- External (STDV, IntObj)
- External (TBTD, MethodObj) // 1 Arguments
- External (TBTF, MethodObj) // 1 Arguments
Name (SS1, 0x00)
Name (SS2, 0x00)
Name (SS3, One)
- One
Name (SS4, One)
- One
OperationRegion (GNVS, SystemMemory, 0x4FF4E000, 0x0767)
Field (GNVS, AnyAcc, Lock, Preserve)
{
@@ -27548,6 +27485,13 @@
0x00,
0x00
})
+ Name (\_S3, Package (0x04) // _S3_: S3 System State
+ {
+ 0x05,
+ 0x05,
+ 0x00,
+ 0x00
+ })
Name (\_S4, Package (0x04) // _S4_: S4 System State
{
0x06,
@mmack
Copy link

mmack commented Jun 9, 2018

My system info:

+++ System Info
System         = LENOVO ThinkPad X1 Yoga 3rd 20LDCTO1WW
BIOS           = N25ET33W (1.19 )
Release        = Ubuntu 18.04 LTS
Kernel         = 4.15.0-22-generic #24-Ubuntu SMP Wed May 16 12:15:17 UTC 2018 x86_64
/proc/cmdline  = BOOT_IMAGE=/vmlinuz-4.15.0-22-generic root=/dev/mapper/ubuntu--vg-root ro quiet splash
Init system    = systemd v237
Boot mode      = UEFI

@mmack
Copy link

mmack commented Jun 9, 2018

ok i removed the lines from my dsl files and compilation runs through with no errors...

-    External (STDV, IntObj)
-    External (TBTD, MethodObj)    // 1 Arguments
-    External (TBTF, MethodObj)    // 1 Arguments

Maybe this helps some ppls :)

@tobstarr
Copy link

Following the instructions from https://delta-xi.net/#056 I run into the patch issues in Hunk 7 (that is those two One lines). When I compile with the broken patch I do get a compilation error:

Compiler aborting due to parser-detected syntax error(s)
dsdt.dsl    355:     Name (SS4, One)
Error    6126 -        ^ syntax error, unexpected PARSEOP_NAME

After removing both One lines I do end up getting a segmentation fault though:

iASL: Segmentation Fault
iASL: Terminating

Any ideas? Thanks!

@simonepigazzini
Copy link

@tobstarr, I get your same error (after the patch issue with Hunk 7), any luck in solving this?

Thank you

@isobit
Copy link

isobit commented Jul 9, 2018

I'm also getting the compile error with Name (SS4, One)... did you guys have problems decompiling your DSDT? I was actually having problems with the patch because my iasl -d dsdl.aml produces the following in my dsdl.dsl:

     * iASL Warning: There were 95 external control methods found during
     * disassembly, but only 94 were resolved (1 unresolved). Additional

...etc, and then later:

External (HIWC, MethodObj)    // Warning: Unknown method, guessing 1 arguments

@roblem
Copy link

roblem commented Jul 11, 2018

@tobstarr: Segfault is due to Surprise #1 here. Just compiled with older version of acpica-tools (package containing iasl in Fedora) with no segfault.

@jasminabasurita
Copy link

This patch has worked for me, however I've noticed that the touchscreen fails to wake from sleep with the rest of the computer. Curious if anyone else has run into this issue. 🤞 that Lenovo releases a bios update with a proper S3 state in it soon, but until then this has been a life saver

@taaem
Copy link

taaem commented Oct 21, 2018

@jasminabasurita I have the same issue, the touchscreen also fails to wake up after suspend, everything else is waking up and running just fine, but the touch screen doesn't respond.

@pashok2398
Copy link

@jasminabasurita, @taaem,
I had the same problem with touch screen after suspend, thanks to this:
https://forums.lenovo.com/t5/Other-Linux-Discussions/X1Y3-Touchscreen-not-working-after-resume-on-Linux/td-p/4021200
Its solved.

/usr/sbin/rtcwake -m freeze -s 1

Create systemd service

vi  /etc/systemd/system/wake_wacom_hack.service
[Unit]
Description= s2idle fo 1 second after resume
After=suspend.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/rtcwake -m freeze -s 1

[Install]
WantedBy=suspend.target

Enable the service

systemctl enable wake_wacom_hack.service

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