在14s上装Linux的时候注意到一个报错:
- [ 0.349127] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.LPC0.EC0], AE_NOT_FOUND (20200717/dswload2-162)
- [ 0.349138] fbcon: Taking over console
- [ 0.349755] ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20200717/psobject-220)
复制代码
disasm出dsl看了一眼,ssdt11 DeviceObj的 Remote Reference写错了,写的是: EC0
- External (_SB_.PCI0.LPC0.EC0_, DeviceObj)
复制代码
但是dsdt里设备的名字应该是: EC
- Device (EC)
- {
- Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */) // _HID: Hardware ID
- Name (_GPE, 0x03) // _GPE: General Purpose Events
- ......
- }
复制代码
另外,我尝试在系统中控制风扇,但是实在找不到风扇是什么机制在控制,SMU MP2强制PWM Level并不能改变风扇状态,ACPI ERAM的定义里也没有找到疑似的寄存器,不知道联想工程师放不方便透露一下相关的设计,有无系统中override风扇的寄存器,或者如果能BIOS实现ACPI PNP0C0B _FSC那再好不过了。
- OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
- Field (ERAM, ByteAcc, NoLock, Preserve)
- {
- XDSB, 1,
- XEGA, 1,
- XEHY, 1,
- XFNE, 1,
- XSEM, 1,
- XN3R, 1,
- XEBY, 1,
- XETM, 1,
- , 1,
- , 1,
- PFLG, 1,
- Offset (0x02),
- , 1,
- PLED, 1,
- , 1,
- MSET, 1,
- Offset (0x03),
- DSHP, 1,
- IGPK, 1,
- CHGR, 1,
- LNON, 1,
- CBAT, 1,
- ADO0, 1,
- ADO1, 1,
- Offset (0x04),
- Offset (0x0B),
- TPSE, 2,
- , 1,
- L65C, 1,
- G75C, 1,
- Offset (0x0C),
- Offset (0x0D),
- XONE, 1,
- , 1,
- XONM, 2,
- XCBK, 4,
- XFNS, 2,
- , 1,
- XSCS, 1,
- XSDS, 1,
- Offset (0x0F),
- XBCG, 1,
- YBCG, 1,
- XBRF, 1,
- Offset (0x10),
- Offset (0x21),
- XNHB, 16,
- Offset (0x24),
- XR24, 8,
- Offset (0x26),
- Offset (0x2A),
- HATR, 8,
- HT0H, 8,
- HT0L, 8,
- HT1H, 8,
- HT1L, 8,
- Offset (0x34),
- , 3,
- XDCT, 1,
- , 1,
- Offset (0x35),
- , 1,
- XBCT, 1,
- Offset (0x38),
- XB0S, 7,
- XBTS, 1,
- Offset (0x3A),
- , 1,
- , 1,
- , 1,
- , 1,
- XCBD, 1,
- XCWL, 1,
- XCWW, 1,
- Offset (0x3B),
- , 1,
- XBLH, 1,
- , 1,
- BTDH, 1,
- USBN, 1,
- , 2,
- S3FG, 1,
- Offset (0x46),
- , 1,
- , 1,
- XPLD, 1,
- XTCC, 1,
- XCPW, 1,
- XKAC, 1,
- XYAC, 1,
- XCKI, 1,
- , 1,
- , 1,
- , 1,
- , 1,
- , 1,
- , 1,
- , 1,
- XLNK, 1,
- , 1,
- XSTS, 1,
- , 2,
- , 1,
- XOKI, 1,
- , 1,
- Offset (0x49),
- Offset (0x4E),
- , 1,
- ACOV, 1,
- RMCS, 1,
- , 1,
- X4E4, 1,
- X4E5, 1,
- Offset (0x50),
- SMPR, 8,
- SMST, 8,
- SMAD, 8,
- SMCM, 8,
- SMD0, 100,
- Offset (0x74),
- BCNT, 8,
- SMAA, 8,
- BATD, 16,
- XTM0, 8,
- XTM1, 8,
- XTM2, 8,
- Offset (0x7C),
- TSR2, 8,
- TSR4, 8,
- Offset (0x7F),
- TSR3, 8,
- TSR5, 8,
- HIID, 8,
- Offset (0x89),
- XGHM, 8,
- Offset (0x8C),
- , 1,
- , 1,
- , 2,
- XPME, 1,
- , 1,
- NSAD, 1,
- Offset (0x8D),
- Offset (0x90),
- Offset (0x91),
- Offset (0x92),
- Offset (0x93),
- Offset (0x94),
- XMSB, 8,
- Offset (0x96),
- Offset (0xA0),
- XAIF, 128,
- Offset (0xB4),
- YBTS, 8,
- Offset (0xB6),
- Offset (0xB7),
- Offset (0xC0),
- VCMD, 8,
- VDAT, 8,
- VST1, 8,
- Offset (0xC5),
- , 1,
- , 1,
- , 1,
- , 1,
- , 1,
- QKCH, 1,
- Offset (0xC9),
- AC65, 8,
- Offset (0xCB),
- XFUD, 1,
- Offset (0xCC),
- XWMH, 8,
- XWML, 8,
- Offset (0xCF),
- XSID, 8,
- Offset (0xD2),
- BHCD, 8,
- BAHL, 8,
- BAHH, 8,
- BATL, 8,
- BATH, 8,
- Offset (0xD8),
- ECLV, 8,
- WLSE, 1,
- BTDE, 1,
- CCDE, 1,
- WWAE, 1,
- , 1,
- , 1,
- , 1,
- KBMF, 1,
- Offset (0xE0),
- XCRC, 16,
- XCAC, 16,
- XCVO, 16,
- Offset (0xEB),
- , 1,
- , 1,
- NOPD, 1
- }
复制代码
从ERAM中可以看到EC有XTM0~2 3组温度传感器,但是ACPI ThemalZone中只暴露了XTM0,未免有些可惜,希望可以最大化的利用硬件能力。
通过追踪Windows版联想管家的行为我大致确定 省电,均衡,野兽 三种模式的控制是通过ACPI的DYTC Method进行的,我大概摸清了用法,但在没有文档支持的情况下不敢upstream。如果联想方便发布相关文档的话,我可以为Linux上游的ideapad-acpi驱动增加相关的功能,让Linux用户也获得同等体验。
谢谢。
|
|