|
2013/8/28 下午 05:30:50
各位前輩你們好,我最近剛接觸ASL code,對裡面的Scope, Method 有問題卻找不到答案,SPEC裡也沒有寫得很清楚,在這請有經驗的前輩們不吝賜教。我的問題是當關機時,我需要去聽這個關機event,然後透過I2C送訊號把某個裝置關掉。問題出在如何去收這個event?
從ACPI spec50.pdf上有提到 (7.4 OSPM usage of _GTS, _PTS, _TTS) ,當系統要進入到某個State時(S1, S2,..,S5),OSPM會依訊呼叫 _TTS => _PTS => _GTS 這些 control method ,並可藉由它的參數 Arg0 ,得知它要進入的state。以我的狀況,我有收到 _PTS 且可以得到 Arg0 = 0x05,所以可以知道此時系統要進入到 shutdown state。然而我卻收不到_TTS 這一個 event (從uart log 得知,_PTS 的log 有出來,_TTS卻沒反應)。
1. 若能收到_PTS,是否 _TTS 一定也會發出來?
2. _TTS 指的是Transition To State︳意思是要切換到某Sx state。所以 Method (\_TTS, 1, NotSerialized ) 的用法,是否表示當系統要切換state時,就會去掃有宣告_TTS的code,然後執行它裡面的 function? 例如: ======================= Device (A) { Method (\_TTS, 1, NotSerialized ) { If(LEqual(Arg0, 0x01)) A_function; }
}
Device (B) { Method (\_TTS, 1, NotSerialized ) { If(LEqual(Arg0, 0x01)) B_function; }
} ======================= 當系統從 S0 -> S1時,它就會發現 Device A & B有宣告 _TTS,所以會去執行 A_function & B_function,這觀念對嗎? 若不對請糾正我。
3. 我有試過在device 或 \SB 下收_TTS,但都沒有反應,是否因為我宣告的scope不正確 ?
謝謝!
|
|
|
|
|
|
|
|
|
|
|
板主 : 徵求中
Top 10 評價排行 |
 |
組合語言 |
|
|
|
|
|
|
|
|
|
組合語言 |
 |
|
|
專家等級 |
評價 |
|
|
一代宗師 |
10000 |
|
|
曠世奇才 |
5000 |
|
|
頂尖高手 |
3000 |
|
|
卓越專家 |
1500 |
|
|
優秀好手 |
750 |
|
|
|
|
|
|
|