|
; P1 ~+ U; a2 x; K4 X2 x: a( k. N1. What’s it?
5 C1 Y+ u6 ]6 c5 i/ ]5 A
' B( O; b- M- _; H5 b0 k
0 {' j; Y: U# u* E( q' X7 F
6 }) z" b6 c5 Y& d% f; Y/ ]5 e: n" zAuto Detect Function 指的是BIOS和EC配合探测NB上存在哪些device。常见的device如wlan,bluetooth,camera ,3G等都是USBDevice,它们都接在usb port上面,而始能信号则是由EC控制。探测结束以后,当用户按下hot key时EC可以根据探测的结果给出相应Function。比如当wlan不存在时,该hotkey的功能可能就是search key 功能。
' {+ o$ |8 b& f
) Q# p, m8 Y/ d6 O, ^- R. P9 a2. Why need it?
: Z: ` D9 [* P( u6 Q/ `0 K6 H
+ d: n, m( ~. m% R7 G# d5 d' _& h3 C/ t- Q- S, r
9 }& H) F2 |4 h1 o/ s$ S. N# m
4 v; O) v# k+ _' f这个功能的存在主要是因为同一个model在出货的时候因为客户要求,或者市场地位的不同可能配置会不一样,比如搭配不同的cpu,上不同的外围Device等等。这样EC就需要知道哪些设备存在,否则就会出现漏电以及配合NB上层软体出错的状况。另外Auto Detect还有一个功能就是它能够保持device的前一次的开关状态,这样只要没有断电就算是下了S5再回到S0,这些设备还会保持下S5之前的状态,这样可能会比较人性化一些。( T1 t, T" A/ H! W8 `
9 j: H1 o2 p. J: N! x5 K" a3. How to implement?% R2 E" u* p4 ], q* v7 D+ }
5 i1 _+ M0 j: r+ N' b# c# s" y
_& A$ ^2 K* J* p, h
# \: `+ k" T* D H0 r% Y# DAuto Detect听上去挺神秘,其实实现起来也还是挺简单的J。因为这些device都是接在usb port上,如果它们power on那么usb port上的Connect status 就会显示device is present on port,如此BIOS就可以检测出设备存在与否。具体来讲是这样首先BIOS要从EC读回所有device的上次power status,
& x% Q/ z& h$ ^7 ?! a2 Q然后BIOS发命令让EC power on device,BIOS读取相关usb port上的状态确定device是否存在;接下来BIOS回填探测到的设备存在状况到EC相应位置;最后BIOS将读回的power status送给EC,EC根据这些状态给device送始能信号,这样device就保持了上次的状态,这就是Auto detect的完整过程,完整流程如下图1所示:
7 J) ^, n2 R' y! m6 Y
/ v# A) r2 l# s% L* q @! ]1 h/ h
" {' Y# y- {1 I9 h- L( r% |0 w9 P8 p: I1 U
图 1
! I) l+ {7 C) ]' J$ C: M: Z4 m) A U$ L! b9 b/ T1 P! }9 ?# |& I
0 I% o! ]6 d q2 j* D
Peter |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入计匠网
×
|