1
0
Fork 0
mirror of https://github.com/tylernguyen/x1c6-hackintosh.git synced 2025-02-05 09:33:13 -06:00

Notably new TB3 hotplug patch by @benbender, and other monior changes

This commit is contained in:
Tyler Nguyen 2020-11-13 16:34:50 -06:00
parent fbc7a3e1ec
commit 974889e070
No known key found for this signature in database
GPG key ID: DB5B102B914991DA
37 changed files with 6916 additions and 7911 deletions

Binary file not shown.

View file

@ -1,98 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>19G2021</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>ThunderboltReset</string>
<key>CFBundleIdentifier</key>
<string>com.osy86.ThunderboltReset</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>ThunderboltReset</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0d1</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1.0.0d1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>11E708</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>19G68</string>
<key>DTSDKName</key>
<string>macosx10.15</string>
<key>DTXcode</key>
<string>1160</string>
<key>DTXcodeBuild</key>
<string>11E708</string>
<key>IOKitPersonalities</key>
<dict>
<key>ThunderboltReset</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.osy86.ThunderboltReset</string>
<key>IOClass</key>
<string>ThunderboltReset</string>
<key>IOMatchCategory</key>
<string>ThunderboltReset</string>
<key>IOProviderClass</key>
<string>IOResources</string>
<key>IOResourceMatch</key>
<string>IOKit</string>
</dict>
<key>ThunderboltWait</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.osy86.ThunderboltReset</string>
<key>IOClass</key>
<string>ThunderboltWait</string>
<key>IOPCIClassMatch</key>
<string>0x08800000&amp;0xffff0000</string>
<key>IOPCIMatch</key>
<string>0x15008086&amp;0xff00ffff</string>
<key>IOPCITunnelCompatible</key>
<true/>
<key>IOProbeScore</key>
<integer>500</integer>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
</dict>
</dict>
<key>LSMinimumSystemVersion</key>
<string>10.14</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2019 osy86. All rights reserved.</string>
<key>OSBundleLibraries</key>
<dict>
<key>as.vit9696.Lilu</key>
<string>1.2.0</string>
<key>com.apple.kpi.bsd</key>
<string>12.0.0</string>
<key>com.apple.kpi.dsep</key>
<string>12.0.0</string>
<key>com.apple.kpi.iokit</key>
<string>12.0.0</string>
<key>com.apple.kpi.libkern</key>
<string>12.0.0</string>
<key>com.apple.kpi.mach</key>
<string>12.0.0</string>
<key>com.apple.kpi.unsupported</key>
<string>12.0.0</string>
</dict>
<key>OSBundleRequired</key>
<string>Local-Root</string>
</dict>
</plist>

View file

@ -1,115 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict/>
<key>files2</key>
<dict/>
<key>rules</key>
<dict>
<key>^Resources/</key>
<true/>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^.*</key>
<true/>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^[^/]+$</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

View file

@ -3,7 +3,7 @@
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>BuildMachineOSBuild</key> <key>BuildMachineOSBuild</key>
<string>19H2</string> <string>20A5395g</string>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>en</string> <string>en</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
@ -17,29 +17,27 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>KEXT</string> <string>KEXT</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.2.1</string> <string>1.3.0</string>
<key>CFBundleSupportedPlatforms</key> <key>CFBundleSupportedPlatforms</key>
<array> <array>
<string>MacOSX</string> <string>MacOSX</string>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.2.1</string> <string>1.3.0</string>
<key>DTCompiler</key> <key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string> <string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key> <key>DTPlatformBuild</key>
<string>12A7300</string> <string>11E801a</string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key> <key>DTPlatformVersion</key>
<string>10.15.6</string> <string>GM</string>
<key>DTSDKBuild</key> <key>DTSDKBuild</key>
<string>19G68</string> <string>19G68</string>
<key>DTSDKName</key> <key>DTSDKName</key>
<string>macosx10.15</string> <string>macosx10.15</string>
<key>DTXcode</key> <key>DTXcode</key>
<string>1201</string> <string>1170</string>
<key>DTXcodeBuild</key> <key>DTXcodeBuild</key>
<string>12A7300</string> <string>11E801a</string>
<key>IOKitPersonalities</key> <key>IOKitPersonalities</key>
<dict> <dict>
<key>IdeaVPC</key> <key>IdeaVPC</key>
@ -127,6 +125,30 @@
<false/> <false/>
</dict> </dict>
</dict> </dict>
<key>YogaHIDD</key>
<dict>
<key>CFBundleIdentifier</key>
<string>org.zhen.YogaSMC</string>
<key>IOClass</key>
<string>YogaHIDD</string>
<key>IOProbeScore</key>
<integer>200</integer>
<key>IOPropertyMatch</key>
<array>
<dict>
<key>name</key>
<string>INT33D5</string>
</dict>
<dict>
<key>name</key>
<string>INTC1051</string>
</dict>
</array>
<key>IOProviderClass</key>
<string>IOACPIPlatformDevice</string>
<key>IOUserClientClass</key>
<string>YogaSMCUserClient</string>
</dict>
<key>YogaWMI</key> <key>YogaWMI</key>
<dict> <dict>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>

View file

@ -126,19 +126,81 @@
<key>Path</key> <key>Path</key>
<string>SSDT-XHC1.aml</string> <string>SSDT-XHC1.aml</string>
</dict> </dict>
<dict>
<key>Comment</key>
<string>Patch USB Power</string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>SSDT-USBX.aml</string>
</dict>
</array> </array>
<key>Delete</key> <key>Delete</key>
<array/> <array/>
<key>Patch</key> <key>Patch</key>
<array> <array>
<dict>
<key>Comment</key>
<string>INIT: OINIT to ZINI</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
FEcaT0lOSQ==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
FEcaWklOSQ==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>Battery: BAT0 to BATX</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
hkJBVDA=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
hkJBVFg=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict>
<dict> <dict>
<key>Comment</key> <key>Comment</key>
<string>Battery: Change HWAC to XWAC EC reads</string> <string>Battery: Change HWAC to XWAC EC reads</string>
@ -183,7 +245,7 @@
<true/> <true/>
<key>Find</key> <key>Find</key>
<data> <data>
BkdQUlcCcA== R1BSVwI=
</data> </data>
<key>Limit</key> <key>Limit</key>
<integer>0</integer> <integer>0</integer>
@ -195,7 +257,7 @@
</data> </data>
<key>Replace</key> <key>Replace</key>
<data> <data>
BlpQUlcCcA== WlBSVwI=
</data> </data>
<key>ReplaceMask</key> <key>ReplaceMask</key>
<data> <data>
@ -246,14 +308,14 @@
</dict> </dict>
<dict> <dict>
<key>Comment</key> <key>Comment</key>
<string>XHC1: Notify(XHC_, 0x02) to XHC1</string> <string>S3 Sleep: _PTS to ZPTS</string>
<key>Count</key> <key>Count</key>
<integer>0</integer> <integer>0</integer>
<key>Enabled</key> <key>Enabled</key>
<true/> <true/>
<key>Find</key> <key>Find</key>
<data> <data>
hlhIQ18K X1BUUw==
</data> </data>
<key>Limit</key> <key>Limit</key>
<integer>0</integer> <integer>0</integer>
@ -265,42 +327,7 @@
</data> </data>
<key>Replace</key> <key>Replace</key>
<data> <data>
hlhIQzEK WlBUUw==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>Thunderbolt 3: _L27 to XL27</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X0wyNw==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WEwyNw==
</data> </data>
<key>ReplaceMask</key> <key>ReplaceMask</key>
<data> <data>
@ -388,41 +415,7 @@
</dict> </dict>
<dict> <dict>
<key>Comment</key> <key>Comment</key>
<string>Thunderbolt 3: _L6F to XL6F (Thunderbolt 3 Hotplug GPE)</string> <string>Thunderbolt 3: RP09._INI to RP09.XINI for ICM disable</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X0w2Rg==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WEw2Rg==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>Thunderbolt 3: RP09._INI to RP09.XINI for ICM disable (ThunderboltReset.kext)</string>
<key>Count</key> <key>Count</key>
<integer>1</integer> <integer>1</integer>
<key>Enabled</key> <key>Enabled</key>
@ -456,14 +449,14 @@
</dict> </dict>
<dict> <dict>
<key>Comment</key> <key>Comment</key>
<string>Thunderbolt 3: _PTS to ZPTS(1,N)</string> <string>Thunderbolt 3: NTFY to XTFY</string>
<key>Count</key> <key>Count</key>
<integer>0</integer> <integer>0</integer>
<key>Enabled</key> <key>Enabled</key>
<true/> <true/>
<key>Find</key> <key>Find</key>
<data> <data>
X1BUUwE= FENHTlRGWQk=
</data> </data>
<key>Limit</key> <key>Limit</key>
<integer>0</integer> <integer>0</integer>
@ -475,7 +468,112 @@
</data> </data>
<key>Replace</key> <key>Replace</key>
<data> <data>
WlBUUwE= FENHWFRGWQk=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>XHC1: _UPC to XUPC</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1VQQw==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
UHJvalNzZHQ=
</data>
<key>Replace</key>
<data>
WFVQQw==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>6103</integer>
<key>TableSignature</key>
<data>
U1NEVA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>XHC1: _PS0 to XPS0</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
FEIQX1BTMAg=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
FEIQWFBTMAg=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>XHC1: _PS3 to XPS3</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
FEY/X1BTMwg=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
FEY/WFBTMwg=
</data> </data>
<key>ReplaceMask</key> <key>ReplaceMask</key>
<data> <data>
@ -550,22 +648,58 @@
<dict> <dict>
<key>Add</key> <key>Add</key>
<dict> <dict>
<key>PciRoot(0x0)/Pci(0x14,0x0)</key>
<dict>
<key>acpi-wake-type</key>
<data>
AQAAAA==
</data>
<key>device_type</key>
<string>USB controller</string>
<key>model</key>
<string>Sunrise Point-LP USB 3.0 xHCI Controller</string>
</dict>
<key>PciRoot(0x0)/Pci(0x1C,0x0)</key>
<dict>
<key>device_type</key>
<string>PCI bridge</string>
<key>model</key>
<string>Sunrise Point-LP PCI Express Root Port #1</string>
<key>reg-ltrovr</key>
<data>
AAQAAAAAAAA=
</data>
</dict>
<key>PciRoot(0x0)/Pci(0x1C,0x4)</key>
<dict>
<key>device_type</key>
<string>PCI bridge</string>
<key>model</key>
<string>Sunrise Point-LP PCI Express Root Port #5</string>
<key>reg-ltrovr</key>
<data>
AAQAAAAAAAA=
</data>
</dict>
<key>PciRoot(0x0)/Pci(0x1D,0x0)</key>
<dict>
<key>device_type</key>
<string>PCI bridge</string>
<key>model</key>
<string>Sunrise Point-LP PCI Express Root Port #9</string>
<key>reg-ltrovr</key>
<data>
AAQAAAAAAAA=
</data>
</dict>
<key>PciRoot(0x0)/Pci(0x1D,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key> <key>PciRoot(0x0)/Pci(0x1D,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
<dict> <dict>
<key>ThunderboltUUID</key> <key>ThunderboltUUID</key>
<data> <data>
bYT/DabNYl2Vq0VgT/Xr3w== bYT/DabNYl2Vq0VgT/Xr3w==
</data> </data>
<key>built-in</key>
<data>
AA==
</data>
<key>device_type</key> <key>device_type</key>
<string>Thunderbolt 3 Controller</string> <string>System peripheral</string>
<key>linkDetails</key>
<data>
CAAAAAMAAAA=
</data>
<key>model</key> <key>model</key>
<string>JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016]</string> <string>JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016]</string>
</dict> </dict>
@ -1037,24 +1171,6 @@
<key>PlistPath</key> <key>PlistPath</key>
<string>Contents/Info.plist</string> <string>Contents/Info.plist</string>
</dict> </dict>
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>ThunderboltReset.kext</string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/ThunderboltReset</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict> <dict>
<key>Arch</key> <key>Arch</key>
<string>x86_64</string> <string>x86_64</string>
@ -1337,6 +1453,8 @@
<dict> <dict>
<key>Automatic</key> <key>Automatic</key>
<true/> <true/>
<key>CustomMemory</key>
<false/>
<key>Generic</key> <key>Generic</key>
<dict> <dict>
<key>AdviseWindows</key> <key>AdviseWindows</key>

View file

@ -1,8 +1,8 @@
# macOS on Thinkpad X1 Carbon 6th Generation, Model 20KH\* # macOS on Thinkpad X1 Carbon 6th Generation, Model 20KH\*
[![macOS](https://img.shields.io/badge/macOS-Catalina-yellow.svg)](https://www.apple.com/macos/catalina/) [![macOS](https://img.shields.io/badge/macOS-Big_Sur-yellow.svg)](https://www.apple.com/macos/catalina/)
[![version](https://img.shields.io/badge/10.15.7-yellow)](https://support.apple.com/en-us/HT210642) [![version](https://img.shields.io/badge/11.0.1-yellow)](https://support.apple.com/en-us/HT210642)
[![BIOS](https://img.shields.io/badge/BIOS-1.45-blue)](https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-x-series-laptops/thinkpad-x1-carbon-6th-gen-type-20kh-20kg/downloads/driver-list/component?name=BIOS%2FUEFI) [![BIOS](https://img.shields.io/badge/BIOS-1.50-blue)](https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-x-series-laptops/thinkpad-x1-carbon-6th-gen-type-20kh-20kg/downloads/driver-list/component?name=BIOS%2FUEFI)
[![MODEL](https://img.shields.io/badge/Model-20KH*-blue)](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/references/x1c6-Platform_Specifications.pdf) [![MODEL](https://img.shields.io/badge/Model-20KH*-blue)](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/references/x1c6-Platform_Specifications.pdf)
[![OpenCore](https://img.shields.io/badge/OpenCore-0.6.3-green)](https://github.com/acidanthera/OpenCorePkg) [![OpenCore](https://img.shields.io/badge/OpenCore-0.6.3-green)](https://github.com/acidanthera/OpenCorePkg)
[![LICENSE](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/996icu/996.ICU/blob/master/LICENSE) [![LICENSE](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/996icu/996.ICU/blob/master/LICENSE)
@ -25,52 +25,23 @@
##### Recent | [Changelog Archive](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/CHANGELOG.md) ##### Recent | [Changelog Archive](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/CHANGELOG.md)
> ### 2020-11-3 > ### 2020-11-13
#### Changed #### Changed
- OC to 0.6.3 and upgrade various Acidanthera kexts - Upgraded to Big Sur
- Restructured docs: depricated legacy things and combined duplicates. - Upgraded to BIOS-v1.50 and added corresponding ACPI dump.
- `YogaSMC` is now the preferred method to handle Fn keys instead of ThinkpadAssisstant. - Upgraded `YogaSMC` to stable build `1.3.0`
- Note that `YogaSMC` is still in its infancy, so you still prefer ThinkpadAssistant, use `SSDT-Keyboard-Legacy.dsl` and `/patches/OpenCore Patches/ Keyboard-Legacy.plist` - Compatibiltity and improvements on `SSDT-Battery`. Thanks @benbender
- Thank you @zhen-zen for the great kext and app. - Experimental TB3 patch by @benbender:
- Updated `config.plsit`: - Complete hotplug and power management without modded TB3 controller firmware
- Removed depricated ACPI renames in accordance with new ACPI patches. - NOTE: Brokenb USB 3.1 Gen2 hotplug still, but everything else is amazing!
- Added `Arch` value to each kext entry in accordance with new OpenCore doc. - Everyone thanks @benbender again! This would not have been possible without his hard work and research.
- Added Thunderbolt 3 Device Properties.
- Added `ExtendBTFeatureFlags` value to replace `BT4LEContinuityFixup`
- Reorganized subdirectories within `/patches/` to make things easier to find and understand.
- Renamed `3_README-POSTinstallation.md` to `SUMMARY.md` since it's not really a step but more of an overview of what patches what.
- More readble and better writing of `SSDT-Keyboard`
- New `SSDT-PNLF` to accomodate `AppleBacklightSmoother.kext`
- New battery patch `SSDT-Battery` that fixes accesses to 16byte-EC-field HWAC (Issue #82).
- `SSDT-Sleep` is an all-in-one sleep patch over `SSDT-PTSWAK`, `SSDT-GPRW`, `SSDT-EXT*`
- It is no longer necessary to set sleep mode to `Linux` in BIOS as it is now indepently set by `SSDT-Sleep`
- `If (_OSI ("Darwin"))` and `SSDT-DTPG` are now replaced in favor of `SSDT-Darwin` and `OSDW`, just like in genuine Macs.
- Removed `USBPorts.kext` in favor of patching/mapping via ACPI with `SSDT-XHC1`, `SSDT-XHC2`, and `SSDT-USBX`
- `README.md`:
- Turned different sections into menus for better readability.
- Merged `3_README-POSTinstallation.md` into the `SUMMARY` section.
- Set `HibernateMode` to `NVRAM` instead of `Auto`
#### Added
- `update.sh` script to automatically build and replace all ACPI patches
- `SSDT-HWAC` to patch access to 16byte-EC-field HWAC
- `SSDT-EC` to patch embedded controller for use with `YogaSMC`
- `SSDT-Debug`, `SSDT-HOOKS`, and `Debug.plist` for debugging if needed
- `SSDT-INIT` to configure system values: `HPET`, `DYTC`, and `DPTF`
- `YogaSMC.kext` to interface with the device's EC. Make sure to also install the [app and pref pane](https://github.com/zhen-zen/YogaSMC/releases).
- `AppleBacklightSmoother.kext` is just as its name implies.
- `BrightnessKeys.kext` to handle Fn keys with ACPI renames.
- Documentation of modding the Thunderbolt 3 controller.
#### Removed #### Removed
- Deprecated legacy keyboard patches. `YogaSMC` is now recommended and preferred.
- `SSDT-HPET`, similar to genuine Macs, HPET is now disabled within `SSDT-INIT` - `TbtForcePower.efi` as it is no longer needed.
- `ThunderboltReset.kext` has it is no longer needed.
#### Remark
- A large of these changes are due to the hardwork of [@benbender](https://github.com/benbender), who debugged and authored many of the new ACPI patches. Thank you for your hard work!
<details> <details>
<summary><strong> SUMMARY </strong></summary> <summary><strong> SUMMARY </strong></summary>
@ -112,13 +83,9 @@
| 4K UHD output via HDMI/ DisplayPort **(Modded BIOS)** | ✅ | See `DMVT Pre-Allocated` to `64M` | See [docs/1_README-HARDWAREandBIOS.md](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/1_README-HARDWAREandBIOS.md) for information about modding the BIOS. | | 4K UHD output via HDMI/ DisplayPort **(Modded BIOS)** | ✅ | See `DMVT Pre-Allocated` to `64M` | See [docs/1_README-HARDWAREandBIOS.md](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/1_README-HARDWAREandBIOS.md) for information about modding the BIOS. |
| 4K UHD output via HDMI/ DisplayPort **(Vanilla BIOS)** | ✅ | See `/patches/OpenCore Patches/4K-Output-wo-BIOSmod.plist` | - | | 4K UHD output via HDMI/ DisplayPort **(Vanilla BIOS)** | ✅ | See `/patches/OpenCore Patches/4K-Output-wo-BIOSmod.plist` | - |
| USB 2.0, USB 3.0, and Micro SD Card Reader | ✅ | `SSDT-XHC1.aml` | - | | USB 2.0, USB 3.0, and Micro SD Card Reader | ✅ | `SSDT-XHC1.aml` | - |
| USB 3.1 | ⚠️ | `SSDT-XHC2.aml` | - | | USB 3.1 | ⚠️ | `SSDT-XHC2.aml` | Hotplug WIP |
| USB Power Properties in macOS | ✅ | `SSDT-USBX.aml` | - | | USB Power Properties in macOS | ✅ | `SSDT-USBX.aml` | - |
| Thunderbolt 3 **(Cold Boot)** | ✅ | `SSDT-TB3.aml`, | TB3 device must be plugged in before boot. | | Thunderbolt 3 Hotplug | ✅ | `SSDT-TB3.aml` | Native interface within System Report |
| Thunderbolt 3 Hotplug **(Modded Controller and BIOS)** | ⚠️ | `SSDT-TB3.aml` | [3_README-other.md](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/3_README-other.md), [Issue #24](https://github.com/tylernguyen/x1c6-hackintosh/issues/24#issuecomment-603183002) |
| Thunderbolt 3 Hotplug **(Modded Controller and Vanilla BIOS)** | ⚠️ | `SSDT-TB3.aml` | [3_README-other.md](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/3_README-other.md),[Issue #24](https://github.com/tylernguyen/x1c6-hackintosh/issues/24) |
| Thunderbolt 3 Hotplug **(Vanilla Controller and Modded BIOS)** | ⚠️ | `SSDT-TB3.aml`, `ThunderboltReset.kext`, `GPIO3 Force Pwr` and `GPIO3 Force Pwr for PR05` checked in BIOS | [3_README-other.md](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/3_README-other.md),[Issue #24](https://github.com/tylernguyen/x1c6-hackintosh/issues/24) |
| Thunderbolt 3 Hotplug **(Vanilla Controller and BIOS)** | ⚠️ | `SSDT-TB3.aml`, `ThunderboltReset.kext`, and `TbtForcePower.efi` | [3_README-other.md](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/3_README-other.md),[Issue #24](https://github.com/tylernguyen/x1c6-hackintosh/issues/24) |
> ### Display, TrackPad, TrackPoint, and Keyboard > ### Display, TrackPad, TrackPoint, and Keyboard
| Feature | Status | Dependency | Remarks | | Feature | Status | Dependency | Remarks |
@ -126,9 +93,9 @@
| Brightness Adjustments | ✅ | `WhateverGreen.kext`, `SSDT-PNLF.aml`, `AppleBacklightSmoother.kext`, and `BrightnessKeys.kext`| `AppleBacklightSmoother.kext` is optional for smoother birghtness adjustments | | Brightness Adjustments | ✅ | `WhateverGreen.kext`, `SSDT-PNLF.aml`, `AppleBacklightSmoother.kext`, and `BrightnessKeys.kext`| `AppleBacklightSmoother.kext` is optional for smoother birghtness adjustments |
| HiDPI _(Optional)_ | ✅ | [xzhih/one-key-hidpi](https://github.com/xzhih/one-key-hidpi) | Scaling issues post-sleep fixed with AAPL, ig-platform `BAAnWQ==` | | HiDPI _(Optional)_ | ✅ | [xzhih/one-key-hidpi](https://github.com/xzhih/one-key-hidpi) | Scaling issues post-sleep fixed with AAPL, ig-platform `BAAnWQ==` |
| TrackPoint | ✅ | `VoodooPS2Controller.kext` | - | | TrackPoint | ✅ | `VoodooPS2Controller.kext` | - |
| TrackPad | ✅ | `VoodooPS2Controller.kext` or `VoodooSMBus.kext` and `VoodooRMI.kext` | I prefer `VoodooRMI.kext` so that is the repository default. | | TrackPad | ✅ | `VoodooPS2Controller.kext` or `VoodooSMBus.kext` and `VoodooRMI.kext` | `VoodooRMI.kext` is recommended and preferred over `VoodooPS2`. |
| Built-in Keyboard | ✅ | `VoodooPS2Controller.kext` | Optimizations recommended, see [`docs/3_README-other.md`](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/3_README-other.md) | | Built-in Keyboard | ✅ | `VoodooPS2Controller.kext` | Optimizations recommended, see [`docs/3_README-other.md`](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/3_README-other.md) |
| Multimedia Keys | ✅ | `BrightnessKeys.kext` and [YogaSMC](https://github.com/zhen-zen/YogaSMC) or [ThinkpadAssistant](https://github.com/MSzturc/ThinkpadAssistant) with legacy patches | YogaSMC is the repo default, `SSDT-Keyboard-Legacy.aml`, `patches/OpenCore Patches/ Keyboard-Legacy.plist` if you want to use [ThinkpadAssistant](https://github.com/MSzturc/ThinkpadAssistant) instead | | Multimedia Keys | ✅ | `BrightnessKeys.kext` and [YogaSMC](https://github.com/zhen-zen/YogaSMC) | `YogaSMC` is recommended and preferred over ThinkpadAssisstant |
> ### macOS Continuity > ### macOS Continuity
| Feature | Status | Dependency | Remarks | | Feature | Status | Dependency | Remarks |

View file

@ -54,7 +54,7 @@ At the minimum, these BIOS settings must be made to install and run macOS withou
| Main Menu | Sub 1 | Sub 2 | Sub 3 | | Main Menu | Sub 1 | Sub 2 | Sub 3 |
| --------- | ----------- | --------------------------------------------- | ------------------------------------------------------------------ | | --------- | ----------- | --------------------------------------------- | ------------------------------------------------------------------ |
| | >> Config | >> Thunderbolt (TM) 3 | Thunderbolt BIOS Assist Mode `Disabled` | | | >> Config | >> Thunderbolt (TM) 3 | Thunderbolt BIOS Assist Mode `Disabled` |
| | | | Thunderbolt(TM) Device `Enabled` | | | | | Thunderbolt(TM) Device `Disabled` |
> ## Modding the BIOS: > ## Modding the BIOS:
@ -121,29 +121,3 @@ The following are further optimization settings that can be figured once your BI
| Advanced Tab | >> Power & Performance | >> CPU - Power Management Control | Boot performance mode `Max Battery` | | | Advanced Tab | >> Power & Performance | >> CPU - Power Management Control | Boot performance mode `Max Battery` | |
| | | | >> Config TDP Configurations | `Down` | | | | | >> Config TDP Configurations | `Down` |
| | | | | | | | | | | |
* If you do do want to use Thunderbolt 3 hotplug on macOS (at the expense of idle power consumption):
| Main Menu | Sub 1 | Sub 2 | Sub 3 |
|--------------|------------------------|------------------------------------|------------------------------------------------------------------------|
| Advanced Tab | >> Intel Advanced Menu | >> Thunderbolt(TM) Configuration | GPIO3 Force Pwr `Checked` |
| | | | GPIO3 Force Pwr for PR05 `Checked` |
| | | | |
* Native macOS Thunderbolt interfacing, at the expense of TB3 hotplugging on other OSes:
If macOS is your only OS on the machine, or if you only need to use Thunderbolt 3 hotplug on macOS. There is a custom modded firmware that can be flashed onto the Thunderbolt 3 controller that allows for native Thunderbolt interfacing in macOS:
https://www.tonymacx86.com/threads/success-gigabyte-designare-z390-thunderbolt-3-i7-9700k-amd-rx-580.267551/page-2452#post-2160674
- Screenshot/testing courtesy of @nottthebee
* The Thunderbolt chip is located on the top right of the motherboard.
* A note before you do this, however, the modded thunderbolt firmware will still require that you disable Thunderbolt BIOS assist, so again, TB3 hotplug will come at the cost of power consumption.
* Secondly, as far as I can tell, this mod is really to make things look cleaner and more native within macOS, and doesn't have any real improvements versus the TB3 method currently in this repo.
> ## Modding the Thunderbolt 3 Controller:
The `Intel JHL6540 (Alpine Ridge 4C)` TB3 chip is labeled as `Winbond` and `W25Q80DVS` is located on the top right of the motherboard.
- Download [macOS compatible firmware](https://www.tonymacx86.com/attachments/lenovo-x1-carbon-nvm-43-mod-1-caseysj-bin-zip.483524/)
- Again, [@notthebee](https://github.com/notthebee) also has a useful video to follow: https://www.youtube.com/watch?v=ce7kqUEccUM
- Remember to dump the vanilla twice and use `diff` to make sure things were dumped properly, store this backup somewhere safe.
- Once the vanilla firmware has been safely dumped and backed up, you can flash the custom firmware onto the controller.
- Successfully modding your Thunderbolt 3 controller can be confirmed via macOS's System Report:
<img align="center" src="https://user-images.githubusercontent.com/30384331/89741356-2a62ab80-da80-11ea-8c76-e1f3aaa1d41d.png" alt="macOS native TB3" width="300">

View file

@ -35,35 +35,13 @@
- See current available patches in `/patches/Internal Displays/`, merge them with `config.plist` - See current available patches in `/patches/Internal Displays/`, merge them with `config.plist`
- If a patch is not yet created for your display model. Please see [Issue #60](https://github.com/tylernguyen/x1c6-hackintosh/issues/60) to create your own EDID override. Please create a pull request to add your EDID override for different displays. - If a patch is not yet created for your display model. Please see [Issue #60](https://github.com/tylernguyen/x1c6-hackintosh/issues/60) to create your own EDID override. Please create a pull request to add your EDID override for different displays.
> ## Thunderbolt 3 Hotplug a.k.a The Big Boss (Work in Progress): > ## Thunderbolt 3 Hotplug
Summary, TB3 hotplug works perfectly, but with some caveats: - Native-like integration with macOS in System Report without the need of flashing a modded firmware. Thank you @benbender
- Firstly, refer to [docs/1_README-HARDWAREandBIOS.md](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/1_README-HARDWAREandBIOS.md) for BIOS configurations having to do with TB3 hotplug. - Please make sure of these settings in BIOS:
- `Thunderbolt BIOS Assist` needs to be disabled which raises idle CPU power consumption to 2W as opposed to ~0.8W with the option enabled. - Thunderbolt BIOS Assist Mode `Disabled`
- See the ongoing issue/discussion [Issue #24](https://github.com/tylernguyen/x1c6-hackintosh/issues/24) - Thunderbolt(TM) Device `Disabled`
- USB 3.1 Gen2 hotplug still WIP.
With those done, there are two scenarios:
- You want to use TB3 hotplug on both macOS and another OS, such as Linux or Windows. In this case, stick with the current TB3 hotplug setup in this repo. As my repo is currently designed around compatibility with other OSes as I need Windows for work.
- You only need TB3 hotplug on macOS. In this case, it is possible to reflash the Thunderbolt controller chip on the machine with a modded firmware designed to allow native Thunderbolt interfacing with macOS. See [docs/1_README-HARDWAREandBIOS.md](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/1_README-HARDWAREandBIOS.md).
With Thunderbolt 3 Hotplug, these are the possible scenarios:
- **Modded Controller and BIOS:**
- No additional kexts or drivers needed. (You can remove TB3 related kexts and drivers from your EFI)
- TB3 Hotplug will work natively in macOS.
- TB3 Hotplug will NOT work in Windows or other OS'es.
- **Modded Controller and Vanilla BIOS:**
- No additional kexts or drivers needed. (You can remove TB3 related kexts and drivers from your EFI)
- TB3 Hotplug will work natively in macOS.
- TB3 Hotplug will NOT work in Windows or other OS'es.
- **Vanilla Controller and Modded BIOS:**
- Use `ThunderboltReset.kext`
- Use modded BIOS to force power on `PR09` and `PR05`
- **Vanilla Controller and BIOS:**
- Use `ThunderboltReset.kext` and `TbtForcePower.efi`
- Hotplug will not work on Power port (`PR05`)
- Regardless, current TB3 hotplug implementations are not perfect. Current conflicts include getting USB 3.1 gen2, pm, tb - in osx + win all working at the same time.
For a more detailed, and better explaination, refer to [osy86's Thunderbolt Hotplug Docs](https://github.com/osy86/HaC-Mini/tree/master/details)
> ## Keyboard: > ## Keyboard:

View file

@ -3,6 +3,24 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
> ### 2020-11-13
#### Changed
- Upgraded to Big Sur
- Upgraded to BIOS-v1.50 and added corresponding ACPI dump.
- Upgraded `YogaSMC` to stable build `1.3.0`
- Compatibiltity and improvements on `SSDT-Battery`. Thanks @benbender
- Experimental TB3 patch by @benbender:
- Complete hotplug and power management without modded TB3 controller firmware
- NOTE: Brokenb USB 3.1 Gen2 hotplug still, but everything else is amazing!
- Everyone thanks @benbender again! This would not have been possible without his hard work and research.
#### Removed
- Deprecated legacy keyboard patches. `YogaSMC` is now recommended and preferred.
- `TbtForcePower.efi` as it is no longer needed.
- `ThunderboltReset.kext` has it is no longer needed.
> ### 2020-11-3 > ### 2020-11-3
#### Changed #### Changed

View file

@ -1,139 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ACPI</key>
<dict>
<key>Patch</key>
<array>
<dict>
<key>Comment</key>
<string>TP-BAT:GBIF03 to XBIF03</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
R0JJRgM=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WEJJRgM=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
</dict>
<dict>
<key>Comment</key>
<string>TP-BAT:GBIX03 to XBIX03</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
R0JJWAM=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WEJJWAM=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
</dict>
<dict>
<key>Comment</key>
<string>TP-BAT:GBST04 to XBST04</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
R0JTVAQ=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WEJTVAQ=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
</dict>
<dict>
<key>Comment</key>
<string>TP-BAT:AJTP03 to XJTP03</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
QUpUUAM=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WEpUUAM=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
</array>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ACPI</key>
<dict>
<key>Patch</key>
<array>
<dict>
<key>Comment</key>
<string>Battery: BAT0 to BATX</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
hkJBVDA=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
hkJBVFg=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict>
</array>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ACPI</key>
<dict>
<key>Patch</key>
<array>
<dict>
<key>Comment</key>
<string>INIT: OINIT to ZINI</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
FEcaT0lOSQ==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
FEcaWklOSQ==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict>
</array>
</dict>
</dict>
</plist>

View file

@ -1,397 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ACPI</key>
<dict>
<key>Add</key>
<array>
<dict>
<key>Comment</key>
<string>Thinkpad Keyboard (Need x1c6-keyboard.plist)</string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>SSDT-Keyboard.aml</string>
</dict>
</array>
<key>Patch</key>
<array>
<dict>
<key>Comment</key>
<string>_Q6A to XQ6A (F4 - Microphone Mute)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1E2QQ==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFE2QQ==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q15 to XQ15 (F5 - Brightness Down)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1ExNQ==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFExNQ==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q14 to XQ14 (F6 - Brightness Up)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1ExNA==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFExNA==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q16 to XQ16 (F7 - Dual Display)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1ExNg==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFExNg==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q64 to XQ64 (F8 - Network)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1E2NA==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFE2NA==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q66 to XQ66 (F9 - Settings)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1E2Ng==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFE2Ng==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q60 to XQ60 (F10 - Bluetooth)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1E2MA==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFE2MA==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q61 to XQ61 (F11 - Keyboard)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1E2MQ==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFE2MQ==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q62 to XQ62 (F12 - Star)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1E2Mg==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFE2Mg==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q1F to XQ1F (Keyboard backlight - Fn + Space)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1ExRg==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFExRg==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
<dict>
<key>Comment</key>
<string>_Q74 to XQ74 (FnLock - Fn + Esc)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1E3NA==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WFE3NA==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
</data>
</dict>
</array>
</dict>
</dict>
</plist>

View file

@ -14,23 +14,32 @@
<key>Enabled</key> <key>Enabled</key>
<true/> <true/>
<key>Find</key> <key>Find</key>
<data>BkdQUlcCcA==</data> <data>
R1BSVwI=
</data>
<key>Limit</key> <key>Limit</key>
<integer>0</integer> <integer>0</integer>
<key>Mask</key> <key>Mask</key>
<data></data> <data>
</data>
<key>OemTableId</key> <key>OemTableId</key>
<data></data> <data>
</data>
<key>Replace</key> <key>Replace</key>
<data>BlpQUlcCcA==</data> <data>
WlBSVwI=
</data>
<key>ReplaceMask</key> <key>ReplaceMask</key>
<data></data> <data>
</data>
<key>Skip</key> <key>Skip</key>
<integer>0</integer> <integer>0</integer>
<key>TableLength</key> <key>TableLength</key>
<integer>0</integer> <integer>0</integer>
<key>TableSignature</key> <key>TableSignature</key>
<data>RFNEVA==</data> <data>
RFNEVA==
</data>
</dict> </dict>
<dict> <dict>
<key>Comment</key> <key>Comment</key>
@ -40,23 +49,67 @@
<key>Enabled</key> <key>Enabled</key>
<true/> <true/>
<key>Find</key> <key>Find</key>
<data>X1dBSwk=</data> <data>
X1dBSwk=
</data>
<key>Limit</key> <key>Limit</key>
<integer>0</integer> <integer>0</integer>
<key>Mask</key> <key>Mask</key>
<data></data> <data>
</data>
<key>OemTableId</key> <key>OemTableId</key>
<data></data> <data>
</data>
<key>Replace</key> <key>Replace</key>
<data>WldBSwk=</data> <data>
WldBSwk=
</data>
<key>ReplaceMask</key> <key>ReplaceMask</key>
<data></data> <data>
</data>
<key>Skip</key> <key>Skip</key>
<integer>0</integer> <integer>0</integer>
<key>TableLength</key> <key>TableLength</key>
<integer>0</integer> <integer>0</integer>
<key>TableSignature</key> <key>TableSignature</key>
<data>RFNEVA==</data> <data>
RFNEVA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>S3 Sleep: _PTS to ZPTS</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1BUUw==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WlBUUw==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict> </dict>
</array> </array>
</dict> </dict>

View file

@ -6,41 +6,6 @@
<dict> <dict>
<key>Patch</key> <key>Patch</key>
<array> <array>
<dict>
<key>Comment</key>
<string>Thunderbolt 3: _L27 to XL27</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X0wyNw==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WEwyNw==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict>
<dict> <dict>
<key>Comment</key> <key>Comment</key>
<string>Thunderbolt 3: RP09:_PS0 to RP09:XPS0</string> <string>Thunderbolt 3: RP09:_PS0 to RP09:XPS0</string>
@ -115,14 +80,14 @@
</dict> </dict>
<dict> <dict>
<key>Comment</key> <key>Comment</key>
<string>Thunderbolt 3: _L6F to XL6F (Thunderbolt 3 Hotplug GPE)</string> <string>Thunderbolt 3: NTFY to XTFY</string>
<key>Count</key> <key>Count</key>
<integer>0</integer> <integer>0</integer>
<key>Enabled</key> <key>Enabled</key>
<true/> <true/>
<key>Find</key> <key>Find</key>
<data> <data>
X0w2Rg== FENHTlRGWQk=
</data> </data>
<key>Limit</key> <key>Limit</key>
<integer>0</integer> <integer>0</integer>
@ -134,7 +99,7 @@
</data> </data>
<key>Replace</key> <key>Replace</key>
<data> <data>
WEw2Rg== FENHWFRGWQk=
</data> </data>
<key>ReplaceMask</key> <key>ReplaceMask</key>
<data> <data>
@ -149,7 +114,7 @@
</dict> </dict>
<dict> <dict>
<key>Comment</key> <key>Comment</key>
<string>Thunderbolt 3: RP09._INI to RP09.XINI for ICM disable (ThunderboltReset.kext)</string> <string>Thunderbolt 3: RP09._INI to RP09.XINI for ICM disable</string>
<key>Count</key> <key>Count</key>
<integer>1</integer> <integer>1</integer>
<key>Enabled</key> <key>Enabled</key>
@ -181,72 +146,6 @@
<data> <data>
</data> </data>
</dict> </dict>
<dict>
<key>Comment</key>
<string>Thunderbolt 3: _PTS to ZPTS(1,N)</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
X1BUUwE=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
WlBUUwE=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict>
</array>
</dict>
<key>Kernel</key>
<dict>
<key>Add</key>
<array>
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>ThunderboltReset.kext</string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/ThunderboltReset</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
</array>
</dict>
<key>UEFI</key>
<dict>
<key>Drivers</key>
<array>
<string>TbtForcePower.efi</string>
</array> </array>
</dict> </dict>
</dict> </dict>

View file

@ -8,14 +8,50 @@
<array> <array>
<dict> <dict>
<key>Comment</key> <key>Comment</key>
<string>XHC1: Notify(XHC_, 0x02) to XHC1 (Fix Restart on Shutdown)</string> <string>XHC1: _UPC to XUPC</string>
<key>Count</key> <key>Count</key>
<integer>0</integer> <integer>0</integer>
<key>Enabled</key> <key>Enabled</key>
<true/> <true/>
<key>Find</key> <key>Find</key>
<data> <data>
hlhIQ18K X1VQQw==
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
UHJvalNzZHQ=
</data>
<key>Replace</key>
<data>
WFVQQw==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>6103</integer>
<key>TableSignature</key>
<data>
U1NEVA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>XHC1: _PS0 to XPS0</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
FEIQX1BTMAg=
</data> </data>
<key>Limit</key> <key>Limit</key>
<integer>0</integer> <integer>0</integer>
@ -27,7 +63,42 @@
</data> </data>
<key>Replace</key> <key>Replace</key>
<data> <data>
hlhIQzEK FEIQWFBTMAg=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data>
RFNEVA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>XHC1: _PS3 to XPS3</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
FEY/X1BTMwg=
</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data>
</data>
<key>OemTableId</key>
<data>
</data>
<key>Replace</key>
<data>
FEY/WFBTMwg=
</data> </data>
<key>ReplaceMask</key> <key>ReplaceMask</key>
<data> <data>

View file

@ -1,50 +1,115 @@
// Depends on /patches/OpenCore Patches/ Battery.plist
// //
// SSDT-BATX // SSDT-BATX
// Revision 5 // Revision 7
// //
// Copyleft (c) 2020 by bb. No rights reserved. // Copyleft (c) 2020 by bb. No rights reserved.
// //
// //
// Abstract: // Abstract:
//
// This SSDT is a complete, self-contained replacement for all battery-patches on Thinkpads which share // This SSDT is a complete, self-contained replacement for all battery-patches on Thinkpads which share
// a common EC-layout for battery-handling. It should be compatible with all(?) T- and X-series Thinkpads and maybe even more. // a common EC-layout [1] for battery-handling. It should be compatible with all(?) T- and X-series Thinkpads which are using the basic H8-EC-Layout [2].
// //
// It doesn't need any patches to the original DSDT, handles single- and dual-battery-systems gracefully and adds // Its designed for the requirements of VirtualSMC [3], leaves the original DSDT largely untouched,
// support for `Battery Information Supplement` (see: https://github.com/acidanthera/VirtualSMC/blob/master/Docs/Battery%20Information%20Supplement.md). // handles single- and dual-battery-systems gracefully and adds support for `Battery Information Supplement` [4].
// //
// It is faster, more compatible and much more robust than existing patches as it doesn't relie on the original DSDT-implementation // Sadly, it needs patching of battery-ACPI-notifies as the EC doesn't seem to be updated correctly by the firmware if they are missing.
// for battery-handling and EC-access. It eliminates the need to patch mutexes, notifies or EC-fields completely. //
// It is faster, more compatible and much more robust than existing patches as it doesn't rely on the original DSDT-implementation
// for battery-handling and EC-access. It eliminates the need to patch mutexes and EC-fields completely. Patching notify()'s is
// not needed, but may be desireable for smoother operation - espacially on dual-battery-systems.
// //
// It replaces any battery-related DSDT-patches and any SSDT like SSDT-BAT0, SSDT-BATT, SSDT-BATC, SSDT-BATN and similar. // It replaces any battery-related DSDT-patches and any SSDT like SSDT-BAT0, SSDT-BATT, SSDT-BATC, SSDT-BATN and similar.
// //
// Its only dependency is the memory-layout of the Embedded Controller (EC), which is mostly the same for all decent modern thinkpads // Because of its implementation, its only dependency is the memory-layout of the Embedded Controller (EC) [1],
// (at least T440/X440 upwards) and nothing else. Just drop the SSDT in and be done. // which is mostly the same for all decent modern thinkpads (at least T440/X440 upwards) and nothing else.
// For most Thinkpads, this should be the only thing you need to handle your batteries. Nothing more, nothing less. // Just drop the SSDT in and be done. For most Thinkpads, this should be the only thing you need to handle your batteries.
// Nothing more, nothing less.
// //
// But be aware: this is newly created stuff, not much tested or battle proven yet. May contain bugs and edgecases. // But be aware: this is newly created stuff, not much tested or battle proven yet. May contain bugs and edgecases.
// If so, please open a bug @ https://github.com/benbender/x1c6-hackintosh/issues // If so, please open a bug @ https://github.com/benbender/x1c6-hackintosh/issues.
// Additionally, as this implementation is more straight-forward and according to specs, it may reveal bugs and glitches
// in other parts of the system.
//
// Compatibility:
//
// - Lenovo Thinkpad X1 Carbon generation 6 (X1C6)
// - Lenovo Thinkpad T480 (T480)
// - Lenovo Thinkpad T460 (T460)
// - Lenovo Thinkpad T460 (T440)
// - ... many more to be added as testing is done
// //
// //
// References: // Technical Background
// https://github.com/coreboot/coreboot/blob/master/src/ec/quanta/it8518/acpi/ec.asl //
// https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf // On genuine MacBooks batteries are connected via SBS (Smart Battery System [5]) to the
// https://github.com/acidanthera/VirtualSMC/blob/master/Docs/Battery%20Information%20Supplement.md // SMC (System Management Controller) [6]. The SMC provides the battery-data via SMC-keys [7] to the OS.
//
// On Hackintoshes we "only" have an emulated SMC as substitute for the HW-SMC because of the missing hardware.
// Our systems usually provide battery-data, read from an EC (Embedded Controller), via ACPI [8].
//
// In practice the OS reads SMC-keys provided by VirtualSMC which uses its SMCBatteryManager-plugin to poll those
// raw-data from ACPI which normally reads those data from the EC of the machine.
//
// Every part of the flow computes and interpretes the data. Therefor control in this SSDT is limited.
//
// As the ACPI-battery-interface is a proven standard and commonly implemented, this approach should, theoretically,
// work out of the box on most laptop-systems.
//
// In practice the AppleACPIPlatform.kext doesn't implement access to EC-fields larger than 8 bits and
// will crash on reading them. This limitation of the driver in OSX is the reason why all those battery-patching
// is neccessary in the first place. We need to ensure that every EC-field, accessed from OSX, is 8 bit at most.
//
// Additionally no such thing as dual-battery-systems exist in mac-world. OSX is able to recognize
// multiple batteries, but will only handle display of the data for the first battery. Therefor we need
// to combine multiple batteries transperantly into one and hide additional batteries to the OS.
//
// Implementation-wise, the apple-approach is able to provide some more data to the OS in comparison to ACPI.
// That might be the reason why apple opted for their implementation in the first place. To circumvent those
// limitations of the ACPI specification, VirtualSMC adds `Battery Information Supplement` (BIS).
//
// BIS tries to add the missing information normally provided on genuine MacBooks. Therefor it enables
// much more OSX-native handling of batteries but also may reveal glitches and bugs between implementations
// of OSX/ACPI/EC. Therefor its configureable in this SSDT.
//
//
// Known Issues:
//
// - no known issues atm
//
//
// Links & References:
//
// [1] https://github.com/coreboot/coreboot/blob/master/src/ec/quanta/it8518/acpi/ec.asl
// [2] https://en.wikipedia.org/wiki/H8_Family
// [3] https://github.com/acidanthera/VirtualSMC
// [4] https://github.com/acidanthera/VirtualSMC/blob/master/Docs/Battery%20Information%20Supplement.md
// [5] https://en.wikipedia.org/wiki/Smart_Battery_System
// [6] https://en.wikipedia.org/wiki/System_Management_Controller
// [7] https://github.com/acidanthera/VirtualSMC/blob/master/Docs/SMCKeys.txt
// [6] https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
// //
// //
// Changelog: // Changelog:
// Revision 1 - Raised timeout for mutexes, factored bank-switching out, added sleep to bank-switching, moved HWAC to its own SSDT //
// Revision 2 - Prelimitary dual-battery-support, large refactoring // Revision 7 - Smaller fixes, adds Notify-patches as EC won't update without them in edge-cases, replaces fake serials with battery-serial
// Revision 3 - Remove need of patched notifies, handle battery attach/detach inside, make the whole device self-contained (exept for the EC-helpers) // Revision 6 - fixes, make the whole system more configureable, adds technical backround-documentation
// Revision 4 - Waits on initialization of the batts now. Besides that: Optimization, rework, cleanup, fixes. Truely self-contained now. And faster.
// Revision 5 - optimization, bug-fixing. Adds temp, concatenates string-data on combined batteries. // Revision 5 - optimization, bug-fixing. Adds temp, concatenates string-data on combined batteries.
// Revision 4 - Waits on initialization of the batts now. Besides that: Optimization, rework, cleanup, fixes. Truely self-contained now. And faster.
// Revision 3 - Remove need of patched notifies, handle battery attach/detach inside, make the whole device self-contained (exept for the EC-helpers)
// Revision 2 - Prelimitary dual-battery-support, large refactoring
// Revision 1 - Raised timeout for mutexes, factored bank-switching out, added sleep to bank-switching, moved HWAC to its own SSDT
// //
// //
// Add the following methods if didn't have them defined anyways:
//
// Credits @benbender // Credits @benbender
DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00007000)
{ {
// Please ensure that your LPC bus-device is available at \_SB.PCI0.LPCB (check your DSDT).
// Some older Thinkpads provide the LPC on \_SB.PCI0.LPC and if thats the case for you,
// you need to adjust the paths in the following line until the first "Scope ()".
External (_SB.PCI0.LPCB.EC, DeviceObj) External (_SB.PCI0.LPCB.EC, DeviceObj)
// @see https://en.wikipedia.org/wiki/Bank_switching // @see https://en.wikipedia.org/wiki/Bank_switching
@ -76,18 +141,46 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
{ {
/************************* Configuration *************************/ /************************* Configuration *************************/
Name (BDBG, One) //
// Enable debugging output
//
// Add https://github.com/acidanthera/DebugEnhancer to your kexts
// and add `debug=0x12a acpi_layer=0x8 acpi_level=0x2` to your boot-args
// to see the output in syslog/dmesg (f.e. via `sudo dmesg|egrep BATX`)
//
Name (BDBG, Zero) // possible values: One / Zero
//
// Enable Battery Information Supplement (BIS)
//
// BIS tries to add the missing information normally provided on genuine MacBooks
// but not available in the ACPI-specification. It enables much more OSX-native handling
// of batteries but also may reveal glitches and bugs between implementation of OSX/ACPI/EC.
//
// Therefor its configureable here.
//
// See https://github.com/acidanthera/VirtualSMC/blob/master/Docs/Battery%20Information%20Supplement.md
//
Name (BBIS, One) // possible values: One / Zero
//
// Disable quickpoll in VirtualSMC SMCBatteryManager
//
// Implicitly disabled if BBIS is disabled
//
Name (BDQP, One) // possible values: One / Zero
/************************* Mutex **********************************/ /************************* Mutex **********************************/
// We reimplement the battery-mutex here to solve the need to patch the original mutex
// on older thinkpads where the mutex has a non-zero synclevel which isn't handled by OSX.
Mutex (BAXM, 0x00) Mutex (BAXM, 0x00)
/************************* EC overlay *****************************/ /************************* EC overlay *****************************/
Field (BRAM, ByteAcc, NoLock, Preserve)
Field(BRAM, ByteAcc, NoLock, Preserve)
{ {
Offset (0x38), Offset (0x38),
// HB0S: [Battery 0 status (read only)] // HB0S: [Battery 0 status (read only)]
@ -106,8 +199,15 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
HB1S, 7, /* Battery 1 state */ HB1S, 7, /* Battery 1 state */
HB1A, 1, /* Battery 1 present */ HB1A, 1, /* Battery 1 present */
Offset (0xC9), Offset (0x46),
HWAT, 8, /* Wattage of AC/DC */ , 1,
, 1,
, 1,
, 1,
HPAC, 1,
// Offset (0xC9),
// HWAT, 8, /* Wattage of AC/DC */
// Zero on the X1C6. Probably because of the charging is handled by the TI USB-C-PD-chip. // Zero on the X1C6. Probably because of the charging is handled by the TI USB-C-PD-chip.
// Offset (0xCC), // Offset (0xCC),
@ -435,23 +535,7 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
*/ */
Method (SBSN, 0, NotSerialized) Method (SBSN, 0, NotSerialized)
{ {
Local0 = B1B2 (SN00, SN01) Return (B1B2 (SN00, SN01))
Local3 = Buffer (0x06)
{
" "
}
Local2 = 0x04
While (Local0)
{
Divide (Local0, 10, Local1, Local0)
Local3 [Local2] = (Local1 + 0x30)
Local2--
}
Return (ToString (Local3))
} }
/** /**
@ -610,7 +694,6 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
0x01, // 0x00: BIXRevision - Revision - Integer 0x01, // 0x00: BIXRevision - Revision - Integer
0x01, // 0x01: BIXPowerUnit - Power Unit: mAh - Integer (DWORD) 0x01, // 0x01: BIXPowerUnit - Power Unit: mAh - Integer (DWORD)
// ACPI spec : 0 - mWh : 1 - mAh // ACPI spec : 0 - mWh : 1 - mAh
// We are always outputting mAh.
0xFFFFFFFF, // 0x02: BIXDesignCapacity - Design Capacity - Integer (DWORD) 0xFFFFFFFF, // 0x02: BIXDesignCapacity - Design Capacity - Integer (DWORD)
0xFFFFFFFF, // 0x03: BIXLastFullChargeCapacity - Last Full Charge Capacity - Integer (DWORD) 0xFFFFFFFF, // 0x03: BIXLastFullChargeCapacity - Last Full Charge Capacity - Integer (DWORD)
0x01, // 0x04: BIXBatteryTechnology - Battery Technology: Rechargeable - Integer (DWORD) 0x01, // 0x04: BIXBatteryTechnology - Battery Technology: Rechargeable - Integer (DWORD)
@ -766,7 +849,7 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
Arg1 [0x05] = SBDV /* \_SB_.PCI0.LPCB.EC__.BATX.SBDV */ Arg1 [0x05] = SBDV /* \_SB_.PCI0.LPCB.EC__.BATX.SBDV */
// Serial Number // Serial Number
Arg1 [0x11] = SBSN /* \_SB_.PCI0.LPCB.EC__.BATX.SBSN */ Arg1 [0x11] = ToString (SBSN) /* \_SB_.PCI0.LPCB.EC__.BATX.SBSN */
// //
@ -810,8 +893,11 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
* _BIF object plus additional battery information. The _BIF object is deprecated in lieu of _BIX in ACPI 4.0 * _BIF object plus additional battery information. The _BIF object is deprecated in lieu of _BIX in ACPI 4.0
*/ */
Method (_BIX, 0, NotSerialized) // _BIX: Battery Information Extended Method (_BIX, 0, NotSerialized) // _BIX: Battery Information Extended
{
If (BDBG == One)
{ {
Debug = "BATX:_BIX" Debug = "BATX:_BIX"
}
// needs to be run in any way as it waits for the bat-device to be available // needs to be run in any way as it waits for the bat-device to be available
BX0I = GBIX (0x00, PBIX) BX0I = GBIX (0x00, PBIX)
@ -974,19 +1060,45 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
Local6 = HB1S Local6 = HB1S
} }
// Not charging If ((Local6 & 0x20))
Local0 = 0x00
If ((Local6 & 0x20) == 0x20)
{ {
// 2 = Charging // 2 = Charging
Local0 = 0x02 Local0 = 2
} }
ElseIf ((Local6 & 0x40) == 0x40) ElseIf ((Local6 & 0x40) )
{ {
// 1 = Discharging // 1 = Discharging
Local0 = 0x01 Local0 = 1
} }
Else
{
// 0 = Not charging / Full
Local0 = 0
}
// Set critical flag if battery is empty
If ((Local6 & 0x0F) == 0)
{
Local6 = Local6 | 0x04
}
Store (Zero, Local1)
// Check if AC is present
If (HPAC)
{
// Set only charging/discharging bits
And (Local0, 0x03, Local1)
}
Else
{
// Always discharging when on battery power
Local0 = One
}
// Flag if the battery level is critical
Local4 = Local0 & 0x04
Local0 = Local1 | Local4
// //
@ -1019,17 +1131,18 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
If ((Local1 >= 0x8000)) If ((Local1 >= 0x8000))
{ {
// If discharging // If discharging
If ((Local0 & 0x01) == 0x01) If ((Local0 & 0x01))
{ {
// Negate present rate // Negate present rate
Local1 = (0x00010000 - Local1) Local1 = (0x00010000 - Local1)
} }
Else Else
{ {
// Error
Local1 = 0x00 Local1 = 0x00
} }
} }
ElseIf (!(Local0 & 0x02) == 0x02) ElseIf (!(Local0 & 0x02))
{ {
Local1 = 0x00 Local1 = 0x00
} }
@ -1069,8 +1182,11 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
* Battery status * Battery status
*/ */
Method (_BST, 0, NotSerialized) // _BST: Battery Status Method (_BST, 0, NotSerialized) // _BST: Battery Status
{
If (BDBG == One)
{ {
Debug = "BATX:_BST()" Debug = "BATX:_BST()"
}
// Check if battery is added or removed // Check if battery is added or removed
Local3 = DerefOf (PBAI [0x00]) Local3 = DerefOf (PBAI [0x00])
@ -1146,18 +1262,18 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
Local4 = DerefOf (BT0P [0x00]) Local4 = DerefOf (BT0P [0x00])
Local5 = DerefOf (BT1P [0x00]) Local5 = DerefOf (BT1P [0x00])
If (Local4 != Local5) // Discharging
Local0 [0x00] = 0
If ((Local4 == 2) || (Local5 == 2))
{ {
If (((Local4 & 0x02) == 0x02) || ((Local5 & 0x02) == 0x02)) // 2 = Critical
{ Local0 [0x00] = 2
// 2 = Charging
Local0 [0x00] = 0x02
} }
ElseIf (((Local4 & 0x01) == 0x01) || ((Local5 & 0x01) == 0x01)) ElseIf ((Local4 == 1) || (Local5 == 1))
{ {
// 1 = Discharging // 1 = Charging
Local0 [0x00] = 0x01 Local0 [0x00] = 1
}
} }
// _BST 1 - Battery Present Rate - add BAT0 and BAT1 values // _BST 1 - Battery Present Rate - add BAT0 and BAT1 values
@ -1182,7 +1298,9 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
} }
// Provide the API for `Battery Information Supplement` if enabled in configuration above
If (BBIS)
{
/** /**
* Battery Status Supplement pack layout * Battery Status Supplement pack layout
*/ */
@ -1264,8 +1382,11 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
* Battery Status Supplement * Battery Status Supplement
*/ */
Method (CBSS, 0, NotSerialized) Method (CBSS, 0, NotSerialized)
{
If (BDBG == One)
{ {
Debug = "BATX:CBSS()" Debug = "BATX:CBSS()"
}
If (!H8DR) If (!H8DR)
{ {
@ -1339,9 +1460,10 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
*/ */
Name (PBIS, Package (0x07) Name (PBIS, Package (0x07)
{ {
// 0x006F007F, // 0x00: BISConfig - config, double check if you have valid AverageRate before 0x007F007F, // 0x00: BISConfig - config
// fliping that bit to 0x007F007F since it will disable quickPoll // double check if you have valid AverageRate before disabling QuicPoll
0x007F007F, // disable quickpoll // - 0x007F007F - Quickpoll disabled, more native battery handling
// - 0x006F007F - Quickpoll enabled, more robust battery handling
0xFFFFFFFF, // 0x01: BISManufactureDate - ManufactureDate (0x1), AppleSmartBattery format 0xFFFFFFFF, // 0x01: BISManufactureDate - ManufactureDate (0x1), AppleSmartBattery format
0x00002342, // 0x02: BISPackLotCode - PackLotCode 0x00002342, // 0x02: BISPackLotCode - PackLotCode
0x00002342, // 0x03: BISPCBLotCode - PCBLotCode 0x00002342, // 0x03: BISPCBLotCode - PCBLotCode
@ -1355,11 +1477,14 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
*/ */
Method (CBIS, 0, NotSerialized) Method (CBIS, 0, NotSerialized)
{ {
Debug = "BATX:CBIS()" If (BDQP == One)
If (!H8DR)
{ {
Return (PBIS) PBIS[0x00] = 0x006F007F
}
If (BDBG == One)
{
Debug = "BATX:CBIS()"
} }
If (Acquire (BAXM, 65535)) If (Acquire (BAXM, 65535))
@ -1369,7 +1494,6 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
Return (PBIS) Return (PBIS)
} }
// //
// Information Page 2 - // Information Page 2 -
// //
@ -1378,11 +1502,19 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_Battery", 0x00001000)
// 0x01: ManufactureDate (0x1), AppleSmartBattery format // 0x01: ManufactureDate (0x1), AppleSmartBattery format
PBIS [0x01] = SBDT PBIS [0x01] = SBDT
// Serial Number
PBIS [0x02] = SBSN /* \_SB_.PCI0.LPCB.EC__.BATX.SBSN */
PBIS [0x03] = SBSN /* \_SB_.PCI0.LPCB.EC__.BATX.SBSN */
PBIS [0x04] = SBSN /* \_SB_.PCI0.LPCB.EC__.BATX.SBSN */
PBIS [0x05] = SBSN /* \_SB_.PCI0.LPCB.EC__.BATX.SBSN */
PBIS [0x06] = SBSN /* \_SB_.PCI0.LPCB.EC__.BATX.SBSN */
Release (BAXM) Release (BAXM)
Return (PBIS) Return (PBIS)
} }
} }
} }
}
} }
//EOF //EOF

View file

@ -36,26 +36,5 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_DMAC", 0x00001000)
Return (Zero) Return (Zero)
} }
} }
/* FPU / MATH */
Device(MAT0)
{
Name (_HID, EISAID("PNP0C04"))
Name (_CRS, ResourceTemplate()
{
IO (Decode16, 0xf0, 0xf0, 0x01, 0x01)
IRQNoFlags() { 13 }
})
Method (_STA, 0, NotSerialized)
{
If (OSDW ())
{
Return (0x0F)
}
Return (Zero)
}
}
} }
} }

View file

@ -1,4 +1,6 @@
/* /*
* Depends on /patches/OpenCore Patches/ HWAC.plist
*
* On many modern hackintoshed thinkpads there are ofthen accesses to the 16-bit EC-field `HWAC`, which are mostly * On many modern hackintoshed thinkpads there are ofthen accesses to the 16-bit EC-field `HWAC`, which are mostly
* not handled by battery-patches (f.e. those currated by @daliansky). Those accesses are (mostly) located in the _OWAK() * not handled by battery-patches (f.e. those currated by @daliansky). Those accesses are (mostly) located in the _OWAK()
* and/or _L17-ACPI-methods of the original DSDT. * and/or _L17-ACPI-methods of the original DSDT.
@ -26,7 +28,6 @@
* This includes 16, 32, 64, and larger fields.` * This includes 16, 32, 64, and larger fields.`
* - @Rehabman, https://www.tonymacx86.com/threads/guide-how-to-patch-dsdt-for-working-battery-status.116102/ * - @Rehabman, https://www.tonymacx86.com/threads/guide-how-to-patch-dsdt-for-working-battery-status.116102/
* *
* Depends on /patches/OpenCore Patches/ HWAC.plist
*/ */
@ -37,9 +38,9 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_HWAC", 0x00001000)
Scope (\_SB.PCI0.LPCB.EC) Scope (\_SB.PCI0.LPCB.EC)
{ {
// /**
// EC region overlay. * EC region overlay.
// */
OperationRegion (ERAM, EmbeddedControl, 0x00, 0x0100) OperationRegion (ERAM, EmbeddedControl, 0x00, 0x0100)
Field (ERAM, ByteAcc, NoLock, Preserve) Field (ERAM, ByteAcc, NoLock, Preserve)
{ {

View file

@ -1,3 +1,5 @@
// Depends on /patches/OpenCore Patches/ INIT.plist
//
/* /*
Source: https://github.com/tianocore/edk2-platforms/blob/master/Platform/Intel/KabylakeOpenBoardPkg/Include/Acpi/GlobalNvs.asl Source: https://github.com/tianocore/edk2-platforms/blob/master/Platform/Intel/KabylakeOpenBoardPkg/Include/Acpi/GlobalNvs.asl
// //
@ -43,21 +45,37 @@
Offset(83), TBS1, 8, // Offset(83), Thunderbolt(TM) Root port selector Offset(83), TBS1, 8, // Offset(83), Thunderbolt(TM) Root port selector
Offset(84), BDID, 8, // Offset(84), Board ID Offset(84), BDID, 8, // Offset(84), Board ID
*/ */
//
// Credits @benbender // Credits @benbender
DefinitionBlock ("", "SSDT", 2, "tyler", "_INIT", 0x00001000) DefinitionBlock ("", "SSDT", 2, "tyler", "_INIT", 0x00001000)
{ {
// External method from SSDT-Darwin.dsl
External (OSDW, MethodObj) // 0 Arguments External (OSDW, MethodObj) // 0 Arguments
External (_SB.PCI0, DeviceObj)
// System
External (HPTE, FieldUnitObj) // HPET enabled? External (HPTE, FieldUnitObj) // HPET enabled?
External (WNTF, FieldUnitObj) // DYTC enabled? External (WNTF, FieldUnitObj) // DYTC enabled?
External (DPTF, FieldUnitObj) // DPTF enabled? External (DPTF, FieldUnitObj) // DPTF enabled?
External (OSYS, FieldUnitObj) // OS type
If (OSDW ()) External (ZINI, MethodObj)
// Thunderbolt
External (_SB.PCI0.RP09.INIT, MethodObj)
Scope (\_SB.PCI0)
{
Method (OINI, 0, NotSerialized)
{
If (OSDW())
{ {
Debug = "INIT: Set Variables..." Debug = "INIT: Set Variables..."
// Disable HPET. It shouldn't be needed on modern systems anyway and is also disabled in genuine OSX // disable HPET. It shouldn't be needed on modern systems anyway and is also disabled in genuine OSX
HPTE = Zero HPTE = Zero
// Enables DYTC, Lenovos thermal solution. Can be controlled by YogaSMC // Enables DYTC, Lenovos thermal solution. Can be controlled by YogaSMC
@ -65,5 +83,19 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_INIT", 0x00001000)
// Disable DPTF, we use DYTC! // Disable DPTF, we use DYTC!
DPTF = Zero DPTF = Zero
// Patch OSYS to native value of darwin
OSYS = 0x07DF
}
ZINI ()
// Thunderbolt-setup
If (OSDW () && CondRefOf (\_SB.PCI0.RP09.INIT))
{
\_SB.PCI0.RP09.INIT ()
}
}
} }
} }
//EOF

View file

@ -1,327 +0,0 @@
/*
* For use with ThinkpadAssistant (would need ACPI renames: /patches/OpenCore Patches/ Keyboard-Legacy.plist)
* https://github.com/MSzturc/ThinkpadAssistant
*
*/
DefinitionBlock("", "SSDT", 2, "tyler", "_KBD", 0)
{
External (OSDW, MethodObj)
External (_SB.PCI0.LPCB.KBD, DeviceObj)
External (_SB.PCI0.LPCB.EC, DeviceObj)
External (_SB.PCI0.LPCB.EC.XQ74, MethodObj) // FnLock
External (_SB.PCI0.LPCB.EC.XQ6A, MethodObj) // F4 - Mic Mute
External (_SB.PCI0.LPCB.EC.XQ15, MethodObj) // F5
External (_SB.PCI0.LPCB.EC.XQ14, MethodObj) // F6
External (_SB.PCI0.LPCB.EC.XQ16, MethodObj) // F7
External (_SB.PCI0.LPCB.EC.XQ64, MethodObj) // F8
External (_SB.PCI0.LPCB.EC.XQ66, MethodObj) // F9
External (_SB.PCI0.LPCB.EC.XQ60, MethodObj) // F10
External (_SB.PCI0.LPCB.EC.XQ61, MethodObj) // F11
External (_SB.PCI0.LPCB.EC.XQ62, MethodObj) // F12
External (_SB.PCI0.LPCB.EC.XQ1F, MethodObj) // Keyboard Backlight (Fn+Space)
External (_SB.PCI0.LPCB.EC.HKEY.MHKQ, MethodObj) // FnLock LED
External (_SB.PCI0.LPCB.EC.HKEY.MMTS, MethodObj) // F4 - Mic Mute LED
External (_SB.PCI0.LPCB.EC.HKEY.MLCS, MethodObj) // Keyboard Backlight LED
Scope (_SB.PCI0.LPCB.EC)
{
Name (FUNL, Zero) // FnLock LED
Method (_Q74, 0, NotSerialized) // FnLock (Fn + Esc)
{
If (OSDW ())
{
FUNL = (FUNL + 1) % 2
Switch (FUNL)
{
Case (One)
{
// Right Shift + F18
Notify (KBD, 0x012A)
Notify (KBD, 0x0369)
Notify (KBD, 0x01aa)
// Enable LED
\_SB.PCI0.LPCB.EC.HKEY.MHKQ (0x02)
}
Case (Zero)
{
// Left Shift + F18
Notify (KBD, 0x0136)
Notify (KBD, 0x0369)
Notify (KBD, 0x01b6)
// Disable LED
\_SB.PCI0.LPCB.EC.HKEY.MHKQ (Zero)
}
}
}
Else
{
// Call original _Q74 method.
XQ74()
}
}
Name (MICL, Zero) // F4 - Mic Mute LED
Method (_Q6A, 0, NotSerialized) // F4 - Microphone Mute = F20
{
If (OSDW ())
{
MICL = (MICL + 1) % 2
Switch (MICL)
{
Case (One)
{
// Right Shift + F20
Notify (KBD, 0x0136)
Notify (KBD, 0x036B)
Notify (KBD, 0x01b6)
// Enable LED
\_SB.PCI0.LPCB.EC.HKEY.MMTS (0x02)
}
Case (Zero)
{
// Left Shift + F20
Notify (KBD, 0x012A)
Notify (KBD, 0x036B)
Notify (KBD, 0x01aa)
// Disable LED
\_SB.PCI0.LPCB.EC.HKEY.MMTS (Zero)
}
}
}
Else
{
// Call original _Q6A method.
XQ6A()
}
}
Method (_Q15, 0, NotSerialized) // F5 - Brightness Down = F14
{
If (OSDW ())
{
Notify(KBD, 0x0405)
Notify(KBD, 0x20) // Reserved
}
Else
{
// Call original _Q15 method.
XQ15()
}
}
Method (_Q14, 0, NotSerialized) // F6 - Brightness Up = F15
{
If (OSDW ())
{
Notify(KBD, 0x0406)
Notify(KBD, 0x10) // Reserved
}
Else
{
// Call original _Q14 method.
XQ14()
}
}
Method (_Q16, 0, NotSerialized) // F7 - Dual Display = F16
{
If (OSDW ())
{
Notify(KBD, 0x0367)
}
Else
{
// Call original _Q16 method.
XQ16()
}
}
Method (_Q64, 0, NotSerialized) // F8 - Network = F17
{
If (OSDW ())
{
Notify(KBD, 0x0368)
}
Else
{
// Call original _Q64 method.
XQ64()
}
}
Method (_Q66, 0, NotSerialized) // F9 - Settings = F18
{
If (OSDW ())
{
Notify(KBD, 0x0369)
}
Else
{
// Call original _Q66 method.
XQ66()
}
}
Method (_Q60, 0, NotSerialized) // F10 - Bluetooth
{
If (OSDW ())
{
// Left Shift + F17
Notify (KBD, 0x012A)
Notify (KBD, 0x0368)
Notify (KBD, 0x01AA)
}
Else
{
// Call original _Q60 method.
XQ60()
}
}
Method (_Q61, 0, NotSerialized) // F11 - Keyboard
{
If (OSDW ())
{
// Send a down event for the Control key (scancode 1d), then a one-shot event (down then up) for
// the up arrow key (scancode 0e 48), and finally an up event for the Control key (break scancode 9d).
// This is picked up by VoodooPS2 and sent to macOS as the Control+Up key combo.
Notify (KBD, 0x011D)
Notify (KBD, 0x0448)
Notify (KBD, 0x019D)
}
Else
{
// Call original _Q61 method.
XQ61()
}
}
Method (_Q62, 0, NotSerialized) // F12 - Star = F19
{
If (OSDW ())
{
Notify(KBD, 0x036A)
}
Else
{
// Call original _Q62 method.
XQ62()
}
}
Name (KEYL, Zero) // Keyboard Backlight LED (Fn+Space)
Method (_Q1F, 0, NotSerialized) // cycle keyboard backlight
{
If (OSDW ())
{
KEYL = (KEYL + 1) % 3
Switch (KEYL)
{
Case (Zero)
{
// Left Shift + F16.
Notify (KBD, 0x012a)
Notify (KBD, 0x0367)
Notify (KBD, 0x01aa)
// Bright --> Off
\_SB.PCI0.LPCB.EC.HKEY.MLCS (Zero)
}
Case (One)
{
// Right Shift + F16.
Notify (KBD, 0x0136)
Notify (KBD, 0x0367)
Notify (KBD, 0x01b6)
// Off --> Dim
\_SB.PCI0.LPCB.EC.HKEY.MLCS (One)
}
Case (0x02)
{
// Left Shift + F19.
Notify (KBD, 0x012a)
Notify (KBD, 0x036a)
Notify (KBD, 0x01aa)
// Dim --> Bright
\_SB.PCI0.LPCB.EC.HKEY.MLCS (0x02)
}
}
}
Else
{
// Call original _Q1F method.
XQ1F()
}
}
}
Scope (_SB.PCI0.LPCB.KBD)
{
Method(_DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return (Package()
{
"RM,oem-id", "LENOVO",
"RM,oem-table-id", "Thinkpad_ClickPad",
})
}
// Overrides (the example data here is default in the Info.plist)
Name(RMCF, Package()
{
"Synaptics TouchPad", Package()
{
"BogusDeltaThreshX", 800,
"BogusDeltaThreshY", 800,
"Clicking", ">y",
"DragLockTempMask", 0x40004,
"DynamicEWMode", ">n",
"FakeMiddleButton", ">n",
"HWResetOnStart", ">y",
//"ForcePassThrough", ">y",
//"SkipPassThrough", ">y",
"PalmNoAction When Typing", ">y",
"ScrollResolution", 800,
"SmoothInput", ">y",
"UnsmoothInput", ">y",
"Thinkpad", ">y",
"EdgeBottom", 0,
"FingerZ", 30,
"MaxTapTime", 100000000,
"MouseMultiplierX", 2,
"MouseMultiplierY", 2,
"MouseScrollMultiplierX", 2,
"MouseScrollMultiplierY", 2,
//"TrackpointScrollYMultiplier", 1, //Change this value to 0xFFFF in order to inverse the vertical scroll direction of the Trackpoint when holding the middle mouse button.
//"TrackpointScrollXMultiplier", 1, //Change this value to 0xFFFF in order to inverse the horizontal scroll direction of the Trackpoint when holding the middle mouse button.
},
"Keyboard", Package()
{
"Custom PS2 Map", Package()
{
Package() { },
"e037=64", // PrtSc = F13
"46=80", // Fn + K = Deadkey
"e045=80", // Fn + P = Deadkey
"38=e05b", // Left Alt (mismapped to Left GUI by default) = Left Alt
"e038=e05c", // Right Alt (mismapped to Right GUI by default) = Right Alt
"e05b=38", // Windows (mismapped to Left Alt by default) = Left GUI
// "1d=80", // Fn + B = Deadkey
// "54=80", // Fn + S = Deadkey
},
},
})
}
}
//EOF

View file

@ -1,7 +1,9 @@
/* /*
* For use with BrightnessKeys.kext and YogaSMC * For use with BrightnessKeys.kext, YogaSMC, and VoodooRMI
* https://github.com/zhen-zen/YogaSMC * https://github.com/zhen-zen/YogaSMC
* *
* For more customizations, refer to YogaSMCPrefPane, VoodooRMI's info.plist
* and/or third party software such as BetterTouchTool or Karabiner-Elements.
*/ */
DefinitionBlock("", "SSDT", 2, "tyler", "_KBD", 0) DefinitionBlock("", "SSDT", 2, "tyler", "_KBD", 0)
@ -10,46 +12,8 @@ DefinitionBlock("", "SSDT", 2, "tyler", "_KBD", 0)
Scope (_SB.PCI0.LPCB.KBD) Scope (_SB.PCI0.LPCB.KBD)
{ {
Method(_DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return (Package()
{
"RM,oem-id", "LENOVO",
"RM,oem-table-id", "Thinkpad_ClickPad",
})
}
// Overrides (the example data here is default in the Info.plist)
Name(RMCF, Package() Name(RMCF, Package()
{ {
"Synaptics TouchPad", Package()
{
"BogusDeltaThreshX", 800,
"BogusDeltaThreshY", 800,
"Clicking", ">y",
"DragLockTempMask", 0x40004,
"DynamicEWMode", ">n",
"FakeMiddleButton", ">n",
"HWResetOnStart", ">y",
//"ForcePassThrough", ">y",
//"SkipPassThrough", ">y",
"PalmNoAction When Typing", ">y",
"ScrollResolution", 800,
"SmoothInput", ">y",
"UnsmoothInput", ">y",
"Thinkpad", ">y",
"EdgeBottom", 0,
"FingerZ", 30,
"MaxTapTime", 100000000,
"MouseMultiplierX", 2,
"MouseMultiplierY", 2,
"MouseScrollMultiplierX", 2,
"MouseScrollMultiplierY", 2,
//"TrackpointScrollYMultiplier", 1, //Change this value to 0xFFFF in order to inverse the vertical scroll direction of the Trackpoint when holding the middle mouse button.
//"TrackpointScrollXMultiplier", 1, //Change this value to 0xFFFF in order to inverse the horizontal scroll direction of the Trackpoint when holding the middle mouse button.
},
"Keyboard", Package() "Keyboard", Package()
{ {
"Custom PS2 Map", Package() "Custom PS2 Map", Package()

File diff suppressed because it is too large Load diff

View file

@ -1,42 +0,0 @@
/*
* Fix USB Power
* https://dortania.github.io/OpenCore-Post-Install/usb/misc/power.html
*/
DefinitionBlock ("", "SSDT", 2, "tyler", "_USBX", 0x00001000)
{
External (DTGP, MethodObj) // 4 Arguments
External (OSDW, MethodObj) // 0 Arguments
Scope (\_SB)
{
Device (\_SB.USBX)
{
Name (_ADR, Zero) // _ADR: Address
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
Local0 = Package ()
{
// Values from genuine macbook14,1 with same USB-controller
"kUSBSleepPortCurrentLimit", 2100,
"kUSBWakePortCurrentLimit", 2100,
"kUSBSleepPowerSupply", 9600,
"kUSBWakePowerSupply", 9600,
}
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (OSDW ())
{
Return (0x0F)
}
Return (Zero)
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,15 @@
/* //
* USB 3.1 // USB-C 3.1 Gen2-controller
*/ //
// The controller is part of the alpine ridge Thunderbolt-controller.
//
// At the moment there is no known way to have - or at least I haven't found it yet -
// to have native Thunderbolt incl. power-management and USB-C 3.1 Gen2-hotplug at the
// same time. For the moment I opted for thunderbolt and the runtime power saving.
//
// So sadly, this is broken on runtime for the moment :(
//
// Credits @benbender
DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000) DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
{ {
@ -9,8 +18,11 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
External (OSDW, MethodObj) // OS Is Darwin? External (OSDW, MethodObj) // OS Is Darwin?
External (_SB.PCI0.RP09.RUSB, IntObj) External (_SB.PCI0.RP09.RUSB, IntObj)
External (_SB.PCI0.RP09.GXCI, FieldUnitObj) External (_SB.PCI0.RP09.RTBT, IntObj)
External (_SB.PCI0.RP09.GXCI, IntObj)
External (_SB.PCI0.RP09.GNHI, IntObj)
External (_SB.PCI0.RP09.UGIO, MethodObj) External (_SB.PCI0.RP09.UGIO, MethodObj)
External (_SB.PCI0.RP09.TBST, MethodObj)
External (_SB.PCI0.RP09.UPSB.DSB2, DeviceObj) External (_SB.PCI0.RP09.UPSB.DSB2, DeviceObj)
External (_SB.PCI0.RP09.UPSB.PCED, MethodObj) External (_SB.PCI0.RP09.UPSB.PCED, MethodObj)
External (_SB.PCI0.RP09.UPSB.MDUV, IntObj) External (_SB.PCI0.RP09.UPSB.MDUV, IntObj)
@ -21,14 +33,12 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
External (_SB.PCI0.RP09.UPSB.DSB2.LACT, FieldUnitObj) External (_SB.PCI0.RP09.UPSB.DSB2.LACT, FieldUnitObj)
External (_SB.PCI0.RP09.UPSB.DSB2.LTRN, FieldUnitObj) External (_SB.PCI0.RP09.UPSB.DSB2.LTRN, FieldUnitObj)
External (_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TPLD, MethodObj) External (_SB.PCI0.RP09.UPN1, IntObj)
External (_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TUPC, MethodObj) External (_SB.PCI0.RP09.UPN2, IntObj)
External (TBSE, IntObj) External (TBSE, IntObj)
External (TBTS, IntObj) External (TBTS, IntObj)
External (TBAS, IntObj) External (TBAS, IntObj)
External (UPT1, IntObj)
External (UPT2, IntObj)
External (USME, IntObj) External (USME, IntObj)
Name (U2OP, One) // Companion controller present? Name (U2OP, One) // Companion controller present?
@ -59,77 +69,70 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
*/ */
Method (PCED, 0, Serialized) Method (PCED, 0, Serialized)
{ {
Debug = "TB:UPSB:DSB2:XHC2:PCED - PCI Enable downstream" Debug = "TB:DSB2:XHC2:PCED"
// Debug = "TB:UPSB:DSB2:XHC2:PCED - enable GPIO" Debug = "TB:DSB2:XHC2:PCED - Request USB-GPIO to be enabled & force TBT-GPIO"
\_SB.PCI0.RP09.GXCI = One \_SB.PCI0.RP09.GXCI = One
\_SB.PCI0.RP09.GNHI = One
// this powers up both TBT and USB when needed // this powers up both TBT and USB when needed
If (\_SB.PCI0.RP09.UGIO () != Zero) If (\_SB.PCI0.RP09.UGIO () != Zero)
{ {
// Debug = "TB:UPSB:DSB2:XHC2:PCED - GPIOs changed, restored = true" Debug = "TB:DSB2:XHC2:PCED - GPIOs changed, restored = true"
\_SB.PCI0.RP09.UPSB.DSB2.PRSR = One \_SB.PCI0.RP09.UPSB.DSB2.PRSR = One
} }
// Do some link training // Local0 = Zero
Local0 = Zero // Local1 = Zero
Local1 = Zero Local5 = (Timer + 0x00989680)
Local5 = (Timer + 10000000)
// Debug = "TB:UPSB:DSB2:XHC2:PCED - restored flag, THUNDERBOLT_PCI_LINK_MGMT_DEVICE.PRSR" Debug = Concatenate ("TB:DSB2:XHC2:PCED - restored flag, THUNDERBOLT_PCI_LINK_MGMT_DEVICE.PRSR: ", \_SB.PCI0.RP09.UPSB.DSB2.PRSR)
// Debug = \_SB.PCI0.RP09.UPSB.DSB2.PRSR
If (\_SB.PCI0.RP09.UPSB.DSB2.PRSR != Zero) If (\_SB.PCI0.RP09.UPSB.DSB2.PRSR != Zero)
{ {
// Debug = "TB:UPSB:DSB2:XHC2:PCED - Wait for power up" Debug = "TB:DSB2:XHC2:PCED - Wait for power up"
// Debug = "TB:UPSB:DSB2:XHC2:PCED - Wait for downstream bridge to appear" Debug = "TB:DSB2:XHC2:PCED - Wait for downstream bridge to appear"
Local5 = (Timer + 0x00989680)
Local5 = (Timer + 10000000)
While (Timer <= Local5) While (Timer <= Local5)
{ {
// Debug = "TB:UPSB:DSB2:XHC2:PCED - Wait for link training..." Debug = "TB:DSB2:XHC2:PCED - Wait for link training..."
If (\_SB.PCI0.RP09.UPSB.DSB2.LACR == Zero) If (\_SB.PCI0.RP09.UPSB.DSB2.LACR == Zero)
{ {
If (\_SB.PCI0.RP09.UPSB.DSB2.LTRN != One) If (\_SB.PCI0.RP09.UPSB.DSB2.LTRN != One)
{ {
// Debug = "TB:UPSB:DSB2:XHC2:PCED - Link training cleared" Debug = "TB:DSB2:XHC2:PCED - Link training cleared"
Break Break
} }
} }
ElseIf ((\_SB.PCI0.RP09.UPSB.DSB2.LTRN != One) && (\_SB.PCI0.RP09.UPSB.DSB2.LACT == One)) ElseIf ((\_SB.PCI0.RP09.UPSB.DSB2.LTRN != One) && (\_SB.PCI0.RP09.UPSB.DSB2.LACT == One))
{ {
// Debug = "TB:UPSB:DSB2:XHC2:PCED - Link training cleared and link is active" Debug = "TB:DSB2:XHC2:PCED - Link training cleared and link is active"
Break Break
} }
Sleep (10) Sleep (0x0A)
} }
Sleep (150) Sleep (0x96)
} }
\_SB.PCI0.RP09.UPSB.DSB2.PRSR = Zero \_SB.PCI0.RP09.UPSB.DSB2.PRSR = Zero
While (Timer <= Local5) While (Timer <= Local5)
{ {
// Debug = "TB:UPSB:DSB2:XHC2:PCED - Wait for config space..." Debug = "TB:DSB2:XHC2:PCED - Wait for config space..."
If (\_SB.PCI0.RP09.UPSB.DSB2.XHC2.AVND != 0xFFFFFFFF) If (\_SB.PCI0.RP09.UPSB.DSB2.XHC2.AVND != 0xFFFFFFFF)
{ {
// Debug = "TB:UPSB:DSB2:XHC2:PCED - Read VID/DID" Debug = "TB:DSB2:XHC2:PCED - DSB2 Up - Read VID/DID"
\_SB.PCI0.RP09.UPSB.DSB2.PCIA = One \_SB.PCI0.RP09.UPSB.DSB2.PCIA = One
Break Break
} }
Sleep (10) Sleep (0x0A)
} }
\_SB.PCI0.RP09.UPSB.DSB2.IIP3 = Zero \_SB.PCI0.RP09.UPSB.DSB2.IIP3 = Zero
} }
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If (U2OP == One)
{ {
Local0 = Package (0x06) Local0 = Package (0x06)
{ {
@ -140,17 +143,6 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
"UsbCompanionControllerPresent", "UsbCompanionControllerPresent",
One One
} }
}
Else
{
Local0 = Package (0x04)
{
"USBBusNumber",
Zero,
"AAPL,xhci-clock-id",
One
}
}
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0) Return (Local0)
@ -158,20 +150,22 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
Name (HS, Package (0x01) Name (HS, Package (0x01)
{ {
"XHC1" "XHC"
}) })
Name (FS, Package (0x01) Name (FS, Package (0x01)
{ {
"XHC1" "XHC"
}) })
Name (LS, Package (0x01) Name (LS, Package (0x01)
{ {
"XHC1" "XHC"
}) })
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{ {
Return (Package (0x02) Return (Package ()
{ {
0x6D, 0x6D,
0x03 0x03
@ -180,25 +174,24 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
Method (_PS0, 0, Serialized) // _PS0: Power State 0 Method (_PS0, 0, Serialized) // _PS0: Power State 0
{ {
Debug = "TB:UPSB:DSB2:XHC2:_PS0" Debug = "TB:DSB2:XHC2:_PS0"
// Debug = "TB:UPSB:DSB2:XHC2:_PS0 - USME: " // One
// Debug = USME
// Debug = "TB:UPSB:DSB2:XHC2:_PS0 - TBTS: " // One
// Debug = TBTS
// Debug = "TB:UPSB:DSB2:XHC2:_PS0 - TBSE: " // 0x09
// Debug = TBSE
// Debug = "TB:UPSB:DSB2:XHC2:_PS0 - TBAS: " // Zero
// Debug = TBAS
If (OSDW ()) If (OSDW ())
{ {
PCED () PCED ()
\_SB.PCI0.RP09.TBST ()
} }
} }
Method (_PS3, 0, Serialized) // _PS3: Power State 3 Method (_PS3, 0, Serialized) // _PS3: Power State 3
{ {
Debug = "TB:UPSB:DSB2:XHC2:_PS3" Debug = "TB:DSB2:XHC2:_PS3"
If (OSDW ())
{
\_SB.PCI0.RP09.TBST ()
}
} }
/** /**
@ -207,26 +200,19 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
*/ */
Method (RTPC, 1, Serialized) Method (RTPC, 1, Serialized)
{ {
If (OSDW ()) Debug = Concatenate ("TB:DSB2:XHC2:RTPC called with Arg0: ", Arg0)
{
If (Arg0 <= One) If (Arg0 <= One)
{ {
If (Arg0 == One) Debug = Concatenate ("TB:NHI0:RTPC setting RUSB to: ", Arg0)
{
Debug = "TB:UPSB:DSB2:XHC2:RTPC - USB3.2 Run Time Power Check - Enabling"
}
If (Arg0 == Zero)
{
Debug = "TB:UPSB:DSB2:XHC2:RTPC - USB3.2 Run Time Power Check - Disabling"
}
\_SB.PCI0.RP09.RUSB = Arg0 \_SB.PCI0.RP09.RUSB = Arg0
}
Else // Force TB on
If (Arg0 == One)
{ {
Debug = "TB:UPSB:DSB2:XHC2:RTPC - USB3.2 Run Time Power Check - ??? - Arg0: " Debug = Concatenate ("TB:NHI0:RTPC forcing RTBT to: ", Arg0)
Debug = Arg0 \_SB.PCI0.RP09.RTBT = One
} }
} }
@ -237,22 +223,14 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
* USB cable check * USB cable check
* Called by XHC driver to check cable status * Called by XHC driver to check cable status
* Used as idle hint. * Used as idle hint.
*
* Return:
* kUSBTypeCCableTypeNone = 0,
* kUSBTypeCCableTypeUSB = 1,
*/ */
Method (MODU, 0, Serialized) Method (MODU, 0, Serialized)
{ {
If (\_SB.PCI0.RP09.UPSB.MDUV == Zero) Debug = Concatenate ("TB:DSB2:XHC2:MODU - return: ", \_SB.PCI0.RP09.UPSB.MDUV)
{
Debug = "TB:UPSB:DSB2:XHC2:MODU - USB cable check - unplugged (MDUV = Zero)"
}
ElseIf (\_SB.PCI0.RP09.UPSB.MDUV == One)
{
Debug = "TB:UPSB:DSB2:XHC2:MODU - USB cable check - plugged (MDUV = One)"
}
Else
{
Debug = "TB:UPSB:DSB2:XHC2:MODU - USB cable check - ??? - MDUV: "
Debug = \_SB.PCI0.RP09.UPSB.MDUV
}
Return (\_SB.PCI0.RP09.UPSB.MDUV) Return (\_SB.PCI0.RP09.UPSB.MDUV)
} }
@ -264,31 +242,6 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
Device (SSP1) Device (SSP1)
{ {
Name (_ADR, 0x03) // _ADR: Address Name (_ADR, 0x03) // _ADR: Address
// Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities
// {
// If ((USME == Zero))
// {
// Return (\_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TUPC (One, 0x09))
// }
// Else
// {
// Return (\_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TUPC (One, 0x0A))
// }
// }
// Method (_PLD, 0, NotSerialized) // _PLD: Physical Location of Device
// {
// If ((USME == Zero))
// {
// Return (\_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TPLD (One, One))
// }
// Else
// {
// Return (\_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TPLD (One, UPT1))
// }
// }
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{ {
0xFF, 0xFF,
@ -296,72 +249,34 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
Zero, Zero,
Zero Zero
}) })
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
Name (HS, Package ()
{ {
ToPLD ( "XHC",
PLD_Revision = 0x1,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x0,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0,
PLD_VerticalOffset = 0x0,
PLD_HorizontalOffset = 0x0)
})
Name (HS, Package (0x02)
{
"XHC1",
0x03 0x03
}) })
Name (FS, Package (0x02)
Name (FS, Package ()
{ {
"XHC1", "XHC",
0x03 0x03
}) })
Name (LS, Package (0x02)
Name (LS, Package ()
{ {
"XHC1", "XHC",
0x03 0x03
}) })
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{ {
If (U2OP == One) Local0 = Package ()
{
Local0 = Package (0x04)
{ {
"UsbCPortNumber", "UsbCPortNumber",
0x02, \_SB.PCI0.RP09.UPN1,
"UsbCompanionPortPresent", "UsbCompanionPortPresent",
One One
} }
}
Else
{
Local0 = Package (0x02)
{
"UsbCPortNumber",
0x02,
}
}
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0) Return (Local0)
@ -371,31 +286,6 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
Device (SSP2) Device (SSP2)
{ {
Name (_ADR, 0x04) // _ADR: Address Name (_ADR, 0x04) // _ADR: Address
// Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities
// {
// If ((USME == Zero))
// {
// Return (\_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TUPC (One, 0x09))
// }
// Else
// {
// Return (\_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TUPC (One, 0x0A))
// }
// }
// Method (_PLD, 0, NotSerialized) // _PLD: Physical Location of Device
// {
// If ((USME == Zero))
// {
// Return (\_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TPLD (One, 0x02))
// }
// Else
// {
// Return (\_SB.PCI0.RP09.PXSX.TBDU.XHC.RHUB.TPLD (One, UPT2))
// }
// }
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{ {
0xFF, 0xFF,
@ -403,74 +293,34 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
Zero, Zero,
Zero Zero
}) })
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
Name (HS, Package ()
{ {
ToPLD ( "XHC",
PLD_Revision = 0x1, 0x04
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "LOWER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x0,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0,
PLD_VerticalOffset = 0x0,
PLD_HorizontalOffset = 0x0)
}) })
Name (HS, Package (0x02) Name (FS, Package ()
{ {
"XHC1", "XHC",
0x04 0x04
}) })
Name (FS, Package (0x02)
Name (LS, Package ()
{ {
"XHC1", "XHC",
0x04
})
Name (LS, Package (0x02)
{
"XHC1",
0x04 0x04
}) })
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{ {
If (U2OP == One) Local0 = Package ()
{
Local0 = Package (0x04)
{ {
"UsbCPortNumber", "UsbCPortNumber",
One, \_SB.PCI0.RP09.UPN2,
"UsbCompanionPortPresent", "UsbCompanionPortPresent",
One One
} }
}
Else
{
Local0 = Package (0x02)
{
"UsbCPortNumber",
One,
}
}
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0) Return (Local0)
@ -479,4 +329,5 @@ DefinitionBlock ("", "SSDT", 2, "tyler", "_XHC2", 0x00001000)
} }
} }
} }
} }