|
--易祝兵 2007-12-7
+ R: B( D7 w3 Y0 r4 Y/ C8 E在BIOS初始化platform PM寄存器后,支持ACPI的操作系统会开启ACPI模式,一般同时开启SCI事件的响应。
; Y7 v3 P. N; ]0 l* i4 S+ O" |" @0 E5 b
什么是SCI?什么是SMI?
" |' A" i v2 Y% x" c% j3 s这里如您不知道,我只大致解释一下:
' T, g4 P& h/ p4 H! I3 ]. m. t3 Q' pSCI:系统控制中断,会由产生一个IRQ x(此x号码,一般可由平台的寄存器设定)中断请求,操作系统的ACPI驱动会响应此中断。
$ G" g4 ^. P. F9 }3 D2 VSMI:系统管理中断,由各设备或软件需要SMM服务时,下拉CPU的SMI Pin所产生,系统不论在做什么,都会挂起现执行的操作,跳至一个特殊的模式,叫系统管理模式(SMM)(当然是比操作系统有更高的优先权啦,才不管你0/3 level什么的。)$ c4 G0 X8 x6 K5 \) s7 V/ y
3 u; x& B4 q) w8 b
当你配置了一个GPIO产生events后,又打开了ACPI和SCI。那么系统在此GPIO Status发生变化的时候,ACPI驱动就会捕捉到。即:一般就执行一个ACPI里_GPE()内的一个方法。这是普通的。
9 u# a, A) x+ \8 H( k$ K- j+ l6 B G2 v0 D) {# |7 Q, i; U
ICH7 GPIO Status的寄存器如下:
" I+ [# o& U/ \2 M1 T& ?
- O0 F; x& q J2 H9 j
) b) L! T/ U& ^- H
让GPIO产生SCI或SMI的Switch寄存器:# Z5 b# U6 B: x2 a# l. y( b
9 Q, N8 R% q# }: X8 ^5 |1 B, a
' r. U" d o8 }$ f3 f5 k2 T一种机器所用到的的GPIO:, o: I3 H/ z( ^( v' f
& }8 x9 ?$ [; o
( `9 o; Y2 z4 g处理这些事件的方法如下:, {+ {1 Q8 p; G! i9 O. E) E
) }& ?1 N0 f3 C8 v
注意上面,的_L04是指你GPEx_STS的PM寄存器的第4个bit位发生变化时,所执行的ACPI事件方法,并不一定是指第4个GPIO所生产的方法,各平台有各平台的Chipset手册,注意看好。5 L( J- J ~( l' v& z. ^
, Z; y; q7 A. ^; ~9 w; o z那什么是Q方法?
0 L6 M. |! M* l3 X% I: h当你的平台定义了ACPI嵌入式控制器(EC,PNPID:PNP0C09[PNPID的文档,见本站内的贴子:http://www.ufoit.com/bbs/thread-97-1-1.html]),并指定了EC所使用的GPIO,那么,此GPIO的事件(状态发生变化)产生时,就会产生一个Q事件,处理此事件的,就叫Q方法,可以有从0到FF个,即: _Q00() ~ Q255()。
8 W$ }+ Y7 \/ y) `
" i" H* O8 x+ {6 e k% X既然有256个,哪如何区分Q事件呢?4 K% m, _2 G" Q" `# Y! h
当Q事件产生时,OSPM会向ACPI EC发出一个命令去查询此Q事件的号码。EC会响应并回复一个号码给OSPM,然后OSPM就会执行ACPI里的某个Q方法。
2 E5 X$ v1 A9 r* B& p: e8 Y( [ ?4 z1 y3 a$ g! o
如EC发现温度发生变化,就会向ACPI Thermal驱动发出通知,更新ACPI Thermal,以便系统按要求处理散热方案,如下图:
! X( U0 h: `% c% g3 {7 a) |Method(_Q34) { // embedded controller event for thermal Notify" s1 r& X3 v, |9 q: |/ u& ?
(\_SB.TZ0.THM1, 0x80)
5 u) F5 Q# e( U! L4 u}
% S* f+ d$ E. s9 _4 ^1 J
! i0 X1 V8 |( C8 [+ y B4 w% _) ~8 o详见文档: ACPI 3.0b -> 5.6.2.2.3 Queuing the Matching Control Method for Execution.) M, R9 D- f) z. S7 v, `
如找不到ACPI 3.0b请到:http://www.ufoit.com/bbs/thread-7-1-1.html 处或 http://www.acpi.info 下载。 |
|