我所知道的EC====>LID
$ r0 T$ a) l% b2 ?+ W) [5 m; ]% q1 i
1.What’s lid?
8 D! p! g; g( k& A$ ]* k( w% c9 ^* s9 T
Lid是盖子的意思,在NB上其实就是指Panel打开和关闭的过程。不知道有没有人试过用磁石去碰NB的底边缘,试过就会发现一碰NB就会进S3、S4当然也可能什么动作都没有(取决于OS的配置)。其实这部分是因为大多NB都是通过一颗magnet switch IC控制lid。Lid有两种状态Open和Close HW的线路通常还会将它们用作背光的始能信号。
7 |' Z s1 K4 I: q- T- H* a5 K+ M. X# M) ?6 {/ X9 g. e
! m' _# P" \9 _' B6 o6 I3 x& S# y2 {2.Lid Open
/ W- g1 Z0 o: ]. R6 b) M, e) u3 |+ j
Lid Open就是通常上讲的开盖,HW会将这支信号拉到EC一根GPIO pin上,也就是说一旦Lid状态有变化EC这端就会收到中断, EC收到中断后会发SCI通知host,host再去做其他的动作。可是通常第一次开机的时候Panel是打开的,NB并没有供电所以EC没法更新lid的状态,这时EC就会在进入S0的时候根据lid这根GPIO的状态(H&L)去更新lid的状态。在OS装载的过程中会主动去call BIOS中的asl code去更新Lid的状态。
( _0 D2 a; K' S, t Y3.Lid Close / S) s* }! l4 }$ r, Z1 ^* J
- M7 v1 i6 j( o9 jLid Close指的是合盖,EC处理的过程和Lid Open基本一致,区别之处在于EC记录 Lid的状态有变化。另外在OS下有一个选项可以设置Lid Close时OS可以进行的动作。如下图所示:
+ W0 z% s% N$ y$ J) `0 v
" K/ P4 |! }/ m2 N" f: D
& H! o/ F( d4 K3 y, R5 y, o
7 F+ x5 x8 a# R8 {+ R- \2 ~* E0 Q
1 F) r# |) N; f% j' Z4 }/ C* r- h+ U: p. j* E
如上图1所示close lid可以选择的action有三种2 h" u. y& V& R1 s
# P; n' u6 O7 p1. Do nothing ' e$ u" q% \" H8 L/ \* i3 y
2. Stand by * ]# {; A- I* l8 q
3. Hibernate
' p7 F. |. ^9 D& @这些功能是怎么实现的呢?完整的流程如下图所示: * K+ ?1 z' ]" {! A- T# o" H. J
( e; ]2 P# R. N; ^0 n7 ^
/ A8 _( x) ^5 g& e7 E& G
3 {' a5 d' G. w/ |) N& S 4 A; H3 D" s$ O, [! n% {3 [
/ f: F3 g( C: U9 q( i" r% R
图2就是完整的工作过程,步骤5是猜的。要知道真正的做法恐怕只有问了微软才知道J。 6 d* M$ H' z# U) V) C7 h3 G3 C
: |+ a" ? M# c7 w5 S& C
- g; k& n6 @# y, i+ R S U( M, G% N
Peter
1 [2 }5 E( _; k; F0 {9 v' G! q% r' z |