關閉Power managament 裏的 Sleep button 功能
[轉貼]
... start
根據ACPI 3.0, 4.7.2.2.2 章提到,當沒有 sleep button時
FACP table 裏的 SLP_BUTTON 要設為 1, Sleep button 這個 object 要拿掉
但我在 XP 下用 acpiview 或 acpiscope 去看, FACP 裏的 SLP_BUTTON 確實為 1
也找不到 PNP0C0E 這個 device
... end
Indicated Support | Sleep_Button Flag | Sleep Button Device Object |
No sleep button | Set | Absent |
Fixed hardware sleep button | Clear | Absent |
Control method sleep button | Set | Absent |
重點:
1. FADT table 裏的 SLP_BUTTON 要設為 1 (可用acpiscope看)
2. 不能有「SLPB」與「PNP0C0E」
ref:
Power managament 裏的 Sleep button 消不掉
FACP的值對應code
ACPI 3.0b
FACP - Flag | Bit Length | Bit Offset | Description |
SLP_BUTTON | 1 | 5 | 翻一下spec |
RTC_S4 | 1 | 7 | 翻一下spec |
BIOS code定義如下:
(acpi1_0.h)
#define EFI_ACPI_1_0_SLP_BUTTON (1 << 5)
#define EFI_ACPI_1_0_RTC_S4 (1 << 7)
有acpi1_0.h、acpi1_2.h、acpi1_3.h,但try and error後,只有改acpi1_0.h才有效,
整個Bios code翻過來找後,都沒有使用EFI_ACPI_1_0_SLP_BUTTON的影子,
可能是在kernel裡吧@@
_GPE與_Lxx
Name(_PRW,Package(2))
{
0x03, // 與Scope(\_GPE)底下的Method(_Lxx)相呼應
0x04 // Lowest sleep state to wake from
}
Method(_L03) // USB1 Device
{
Notify(\_SB.PCI0.USB1, 0x02)
}
其中,0x03h是依據該chip的spec所定義的,
(GPEx_STS的PM暫存器的第3個bit,而不是電路圖上第3個GPIO的pin腳)
CreateByteField
CreateByteField(SourceBuffer, ByteIndex, ByteFieldName)
sample code:
CreateByteField(AC00, 0, SA00)
CreateByteField(AC00, 1, SA01)
CreateByteField(AC00, 2, SA02)
CreateByteField(AC00, 3, SA03)
CreateByteField(AC00, 4, SA04)
CreateByteField(AC00, 5, SA05)
CreateByteField(AC00, 6, SA06)
CreateByteField(AC00, 7, SA07)
AC00 共有 8*8 bytes大小,每一個 byte分別用 SA00~SA07代表
沒有留言:
張貼留言