2010年4月1日 星期四

筆記-1


關閉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

Table 4-9 Sleep Button Support


























Indicated SupportSleep_Button FlagSleep Button Device Object
No sleep buttonSetAbsent
Fixed hardware sleep buttonClearAbsent
Control method sleep buttonSetAbsent




圖:(電源選項->進階)修改前



(電源選項->進階)修改後


重點:
1. FADT table 裏的 SLP_BUTTON 要設為 1 (可用acpiscope看)
2. 不能有「SLPB」與「PNP0C0E」

ref:
Power managament 裏的 Sleep button 消不掉





FACP的值對應code

ACPI 3.0b
Table 5-10 Fixed ACPI Description Table Fixed Feature Flags
























FACP - FlagBit LengthBit OffsetDescription
SLP_BUTTON15翻一下spec
RTC_S417翻一下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腳)

圖:V10_Tigerpoint




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代表

沒有留言:

張貼留言