-----------------2017.6.21更新--------------
DSDT 打补丁:
Patches marked with [R] are credits ofRehabMan, taken from his superb Laptop Patches repo. You are encouraged to usethem off the live repo. They are reported here for persistence andexact-version matching purposes.(译者注:懒得翻译了) [R] [syn] Rename _DSM methods to XDSM - into_all method label _DSM set_label begin XDSM end;
- into_all method code_regex _DSM replaceall_matched begin XDSM end;
复制代码*Notes: this is a generic prep-patch.*
[R] [igpu] Brightness fix - into_all device label PNLF remove_entry;
- into definitionblock code_regex . insert
- begin
- Scope (_SB)\n
- {\n
- Device (PNLF)\n
- {\n
- Name (_ADR, Zero)\n
- Name (_HID, EisaId ("APP0002"))\n
- Name (_CID, "backlight")\n
- Name (_UID, 10)\n
- Name (_STA, 0x0B)\n
- }\n
- }\n
- end;
复制代码*Notes:这个补丁可以在MacOS里开启盒盖睡眠和亮度调节。但这个不能全范围调节亮度,详情见下面的“keyboardpatch”和”OSIS patch”. [R] [sys] Fix _WAK Arg0 v2 - into method label _WAK code_regex ([\s\S]*) replace_matched
- begin
- If (LOr(LLess(Arg0,1),LGreater(Arg0,5))) { Store(3,Arg0) }\n
- %1
- end;
- into method label \_WAK code_regex ([\s\S]*) replace_matched
- begin
- If (LOr(LLess(Arg0,1),LGreater(Arg0,5))) { Store(3,Arg0) }\n
- %1
- end;
复制代码*Notes:这个可能在10.12中不是必须的。 [R] [sys] Fix Mutex with non-zero SyncLevel - into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
- into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
- into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
- into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
- into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
- into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
- into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
- into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
- into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
- into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
复制代码*Notes: this is a generic prep-patch.* [R] [sys] HPET Fix - into method label _STA parent_hid PNP0103 remove_entry;
- into device name_hid PNP0103 code_regex Name\s\(_STA\,\s+0x0F\) remove_matched;
- into device name_hid PNP0103 insert
- begin
- Name (_STA, 0x0F)\n
- end;
- into method label _CRS parent_hid PNP0103 remove_entry;
- into device name_hid PNP0103 insert
- begin
- Method (_CRS, 0, NotSerialized)\n
- {\n
- Return (BUF0)\n
- }\n
- end;
- *Notes: this is a generic prep-patch.*
复制代码*Notes: this is a generic prep-patch.* [R] [sys] IRQ Fix - into device name_hid PNP0000 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
- into device name_hid PNP0100 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
- into device name_hid PNP0B00 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
- into device name_hid PNP0103 code_regex IRQNoFlags\s\(\)\n\s+\{.*\} removeall_matched;
- into device name_hid PNP0103 code_regex Name\s\(([^,]+),\sResourceTemplate\s\(\).*\n\s+\{((?:.|\n)*)\}\) replace_matched
- begin
- Name (%1, ResourceTemplate()\n
- {\n
- IRQNoFlags() { 0, 8, 11, 15 }\n
- %2
- })\n
- end;
复制代码*Notes: this is a generic prep-patch.* [R] [sys] RTC Fix - into device name_hid PNP0B00 code_regex (IO\s\((?:\s*[^,]+,\s*(?:\/\/\s.*)?\s*\n)+\s*)(\dx\d+)(,\s*(?:\/\/\s.*)?\s*\n\s*\)) replace_matched begin %10x02%3 end;
复制代码*Notes: this is a generic prep-patch.* [R] [sys] Skylake LPC - into method label _DSM parent_adr 0x001F0000 remove_entry;
- into device name_adr 0x001F0000 insert
- begin
- Method (_DSM, 4, NotSerialized)\n
- {\n
- If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
- Return (Package()\n
- {\n
- "compatible", "pci8086,9cc1",\n
- })\n
- }\n
- end;
复制代码*Notes: this is a generic prep-patch.* [R] [sys] SMBUS Fix - into device label BUS0 parent_adr 0x001F0003 remove_entry;
- into device name_adr 0x001F0003 insert
- begin
- Device (BUS0)\n
- {\n
- Name (_CID, "smbus")\n
- Name (_ADR, Zero)\n
- Device (DVL0)\n
- {\n
- Name (_ADR, 0x57)\n
- Name (_CID, "diagsvault")\n
- Method (_DSM, 4, NotSerialized)\n
- {\n
- If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
- Return (Package() { "address", 0x57 })\n
- }\n
- }\n
- }\n
- end;
复制代码*Notes: this is a generic prep-patch.* [R] [usb] usb_prw_0x6d_xhc_skl - into device label XHC1 name_adr 0x00140000 remove_entry;
- into method label _PRW parent_adr 0x00140000 remove_entry;
- into method label _PRW parent_adr 0x00140001 remove_entry;
- into method label _PRW parent_adr 0x001F0003 remove_entry;
- into method label _PRW parent_adr 0x00190000 remove_entry;
- into method label _PRW parent_adr 0x001F0006 remove_entry;
- into method label _PRW parent_label _SB.PCI0.EHC1 remove_entry;
- into method label _PRW parent_label _SB.PCI0.EHC2 remove_entry;
- into method label _PRW parent_label _SB.PCI0.XHC remove_entry;
- into method label _PRW parent_label \_SB.PCI0.EHC1 remove_entry;
- into method label _PRW parent_label \_SB.PCI0.EHC2 remove_entry;
- into method label _PRW parent_label \_SB.PCI0.XHC remove_entry;
- into device name_adr 0x00140000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched;
- into device name_adr 0x00140001 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched;
- into device name_adr 0x001F0003 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched;
- into device name_adr 0x00190000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched;
- into device name_adr 0x00140000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\n.*\}\) remove_matched;
- into device name_adr 0x00140001 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\n.*\}\) remove_matched;
- into device name_adr 0x001F0003 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\n.*\}\) remove_matched;
- into device name_adr 0x00190000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\n.*\}\) remove_matched;
- into device name_adr 0x00140000 insert begin Method(_PRW) { Return(Package() { 0x6D, 0 }) } end;
- into device name_adr 0x00140001 insert begin Method(_PRW) { Return(Package() { 0x6D, 0 }) } end;
- into device name_adr 0x001F0003 insert begin Method(_PRW) { Return(Package() { 0x6D, 0 }) } end;
- into device name_adr 0x00190000 insert begin Method(_PRW) { Return(Package() { 0x6D, 0 }) } end;
- into device name_adr 0x001F0006 insert begin Method(_PRW) { Return(Package() { 0x6D, 0 }) } end;
- into method label _DSM parent_adr 0x00140000 remove_entry;
- into device name_adr 0x00140000 insert
- begin
- Method (_DSM, 4, NotSerialized)\n
- {\n
- If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
- Return (Package()\n
- {\n
- "subsystem-id", Buffer() { 0x70, 0x72, 0x00, 0x00 },\n
- "subsystem-vendor-id", Buffer() { 0x86, 0x80, 0x00, 0x00 },\n
- "AAPL,current-available", 2100,\n
- "AAPL,current-extra", 2200,\n
- "AAPL,current-extra-in-sleep", 1600,\n
- "AAPL,device-internal", 0x02,\n
- "AAPL,max-port-current-in-sleep", 2100,\n
- })\n
- }\n
- end;
复制代码*Notes:打完这个补丁后就能为苹果设备输出更大的电流,在10.12中,即使系统属性说没有连接苹果设备后输出大电流,每个usb接口输出的也都为1A。
[R] Fix Shutdown->reboot - into method label _PTS code_regex ([\s\S]*) replace_matched
- begin
- If (LNotEqual(Arg0,5)) {\n
- %1\n
- }\n
- end;
复制代码*Notes:这个补丁修复了当usb设备插入电脑后睡眠立马唤醒的问题。 MATH device (credit syscl) - into method label _STA parent_hid PNP0C04 remove_entry;
- *Notes: this is a generic prep-patch.*
- Set OSIS to linux (credit VBO)
- into_all method code_regex If\s+\([\\]?_OSI\s+\(\"Linux\"\)\) replace_matched begin If(LOr(_OSI("Darwin"),_OSI("Linux"))) end;
- into_all method code_regex If\s+\([\\]?_OSI\s+\(LINX\)\) replace_matched begin If(LOr(_OSI("Darwin"),_OSI(LINX))) end;
复制代码*Notes:这需要IntelBacklight ad VoodooPS2Controller kexts内核文件和亮度健的正确运行相结合。亮度等级非常灵活,亮度可以变得非常非常小,几乎看不见。没有显著的PWM. Keyboard patch (credit VBO) - into method label SMEE replace_content
- begin
- Local0 = Arg0\n
- Local0 = GENS (0x11, Zero, Zero)\n
- If ((\_SB.OSID () >= 0x20))\n
- {\n
- If ((Local0 & 0x04))\n
- {\n
- // Brightness up\n
- Notify(\_SB.PCI0.LPCB.PS2K, 0x0206)\n
- Notify(\_SB.PCI0.LPCB.PS2K, 0x0286)\n
- EV5 (One, Zero)\n
- }\n
- If ((Local0 & 0x02))\n
- {\n
- // Brightness down\n
- Notify(\_SB.PCI0.LPCB.PS2K, 0x0205)\n
- Notify(\_SB.PCI0.LPCB.PS2K, 0x0285)\n
- EV5 (0x02, Zero)\n
- }\n
- }\n
- If ((Local0 & 0x08))\n
- {\n
- Local0 = GENS (0x1D, Zero, Zero)\n
- EV16 (Local0, Zero)\n
- }\n
- end;
复制代码*Notes:这需要在"OSIS Linux patch"生效后才会使亮度快捷键生效。
保存打过补丁的DSDT.aml。一定要记得保存原来的和修改过的DSDT.dsl,以防你以后需要应用或还原某些补丁。 将打过补丁的DSDT.aml和在我附件里所有的SSDT*.aml放到CLOVER/ACPI/patched文件夹。 所有的.aml文件将会被自动加载。 不要将原始的SSDT复制到/patched文件夹里,我们不会删除原始的SSDT,所以你不需要再次注入它们,会出现问题
|