[BIOS][ACPI] GPE.asl 的 _Lxx , _Exx

現在還是處於BIOS初學者的階段
之前一直很困惑 acpi  code 中
在GPE.asl 中 有一個 _Lxx 的功能
看起來像是GPO控制,但是又對不起來,常常搞混

今天終於搞懂了
其實 xx 指的就是 南橋設計的 GPE0_STS bit
_L01 指的就是 GPE0_STS.bit0
_L21 指的就是 GPE0_STS.bit21
_L81 指的就是 GPE0_STS.bit81

至於為什麼會跟GPIO搞混呢?
其實也不算搞混

在GPE0_STS通常會有一些bit是定義南橋的GPIO
如果定義在bit0~bit96 , 剛好就會是 _L00 ~ _L60 (十六進位)

所以會有以為,數字就是表示GPIO位置的意思
其實並不然

而 _L , _E  zp 則是分別表示 level/Edge trigger的意思

 _Lxx 就是表示 某個 bit 突然被set 1的意思

有時會跟device 的 wake 搭配

在 pch.asl定義的device(以LAN為例) ,通常會在 裏頭定義 _PRW
會定義在device 在 Sx state 可以由 GPIO yy喚醒

假設LAN支援S3 wake from gpio13好了
他就會這樣寫

Device(LAN) {
................
    Method(_PRW, 0) { Return(GPRW(0x0D, 3)) }  // can wakeup from S3 state
................
 }

而在wake up時
就會call _L0D method ,

裏頭就可以
設定一些 如果被wake up的話 ,要做的事

method(_L0D){
 ...........
 }


留言

匿名表示…
您好,
關於這行 "_L21 指的就是 GPE0_STS.bit21"

_Lxx中的xx,應該是 16進制,
而 bit的表示方式,我看到都是用十進制表示

所以 _L21 指的應該是 GPE0_STS.bit33

這樣寫會不會比較恰當@@

這個網誌中的熱門文章

如何在VS2022 Community 簡要的設定UDK2018的環境

自製讀取 H 檔案並找出 define 的程式

如何Build UDK2018