gujiangjiang 发表于 2017-3-11 20:28
因为我的XPS15用的就是Hotpatch,所以一直想给我的老惠普用上hotpatch,其他所有的都不是什么大问题,就是 ...
你可以看我电池部分的整个思路和过程,再参考 RM 的 Hotpatch。
其实就分为几步:
1.找到所有需要拆分的变量。
2.重新加入需要拆分的变量,语法和原先的一样,无需拆分的不用写,但是在同一个偏移量下需要留下空的偏移。
例如:- Field (ECR2, ByteAcc, NoLock, Preserve)
- {
- Offset (0x87),
- ,8,//LB1, 8,
- ,8,//LB2, 8,
- BDC0, 8, BDC1, 8,
- Offset (0x8D),
- BFC0, 8, BFC1, 8,
- RTE0, 8, RTE1, 8,
- //BTC, 1,
- Offset (0x92),
- BME0, 8, BME1, 8,
- ,8,//BDN, 8,
- BDV0, 8, BDV1, 8,
- BCX0, 8, BCX1, 8,
- //BST, 4,
- Offset (0x9B),
- ATE0, 8, ATE1, 8,
- BPR0, 8, BPR1, 8,
- BCR0, 8, BCR1, 8,
- BRC0, 8, BRC1, 8,
- BCC0, 8, BCC1, 8,
- BPV0, 8, BPV1, 8,
- BCA0, 8, BCA1, 8,
- BCB0, 8, BCB1, 8,
- BCP0, 8, BCP1, 8,
- ,16,//BCW, 16,
- ATF0, 8, ATF1, 8,
- ,16,//BCL, 16,
- AXC0, 8, AXC1, 8,
- ,8,//BCG1, 8,
- ,1,//BT1I, 1,
- ,1,//BT2I, 1,
- ,2,//, 2,
- ,4,//BATN, 4,
- BST0, 8, BST1, 8,
- //...
- Offset (0xC9),
- BSN0, 8, BSN1, 8,
- BDA0, 8, BDA1, 8,
- //BMF, 8,
- //Offset (0xCF),
- //CTLB, 8,
- //Offset (0xD1),
- //BTY, 8,
- //Offset (0xD5),
- //MFAC, 8,//d5
- //CFAN, 8,//d6
- //PFAN, 8,//d7
- //OCPS, 8,//d8
- //OCPR, 8,//d9
- //OCPE, 8,//da
- //TMP1, 8,//db
- //TMP2, 8,//dc
- //NABT, 4,//dd
- //BCM, 4,
- //CCBQ, 16,//de
- Offset(0xe0),
- CBT0, 8, CBT1, 8,
- //...
- }
复制代码 整个就是 RM 的例子,你看第一行的
Offset (0x87),
,8,//LB1, 8,
,8,//LB2, 8,
BDC0, 8, BDC1, 8,
BDC0和 BDC1是他需要将原先的拆分出来的,而这个偏移量 Offset (0x87), 下面,也就是BDC0, 8, BDC1, 8, 的上面原先是存在两个 8位(/LB1, 8,LB2, 8,) 无需拆分的变量,故此你就留空,写成 ,8, 编译之后,你直接打开 aml 文件,你会发现,这些空的 ,8,不见了,取而代之的是:- Offset (0x87),
- Offset (0x88),
- Offset (0x89),
- BDC0, 8,
- BDC1, 8,
复制代码 明白了吗?你留空了名称,只写8的话,编译器会自动帮你计算偏移量。
其实你也可以直接自己计算偏移量,重写整个 Field。
这里是我参考 RM 的例子
https://raw.githubusercontent.com/RehabMan/HP-ProBook-4x30s-DSDT-Patch/master/hotpatch/SSDT-BATT.dsl
https://raw.githubusercontent.com/RehabMan/HP-ProBook-4x30s-DSDT-Patch/master/patches/06_Battery.txt
最后,其实如果能 DSDT Patch 的话,建议就无需使用 Hotpatch,因为直接 Patch 比 Hotpatch 更高效。
请教版主 口袋妖怪原话:“AppleACPIPlatform 在读取庞大的 DSDT 之外,又要载入一堆 SSDTs,载入以后 又要将某些部分 甚至说全部的code 合并,然后某些 _DSM 方法 转换成 efi string 供一些API读取,这样太慢了,但好处就是 不用碰DSDT 避免因BIOS改动等等导致DSDT变化。”
http://www.insanelymac.com/forum ... is-ready/?p=2358593
上面链接是她与 RM 讨论 Hotpatch 的问题。 |