PS2 KB & MS的线路链接
PS2 设备一般是由Cable连接到主板上面,与主板连接的Header有7个pin脚,分别是Vcc、GND、KCLK、MCLK、KDATA、MDATA和DET#。DET#是用于检测PS2 Cable是否插入主板,DET#信号一般会连接到CPU的一个GPIO上面。KCLK和MCLK是键盘和鼠标的时钟信号,KDATA和MDATA是键鼠的DATA信号,这两个信号一般交给8042、8048芯片处理,8042芯片现在集成在EC的内部,EC留有四个可以复用的Pin脚,ITE的EC芯片一般是可以复用为GPIO也可以当做KCLK、KDATA、MCLK、MDATA使用。所以EC的配置PS2设备的时候,一定要记得配置这四个Pin脚的复用功能。
SIO芯片会预留两个LDN给Mouse和Keyboard,这两个LDN要使能。
EC上面的KB & MS需要通过IoPort与CPU通信,一般是用Port60/64,当然这个Port是可以进行配置的,ITE的配置方法是LDN5(Keyboard Configuration Register)的60 61 62 63四个寄存器进行配置。所以添加PS2设备的时候,需要提前将Port60/64进行解码。
PS2 KB & MS是不支持热插拔的PNP设备,所以安装以后需要通过ASL Code向OS宣告PS2设备的存在。
实际项目中的做法:
EE工程师会在CPU上面选择一个GPIO作为PS2 Detector,然后EC会去收集这个GPIO的Status,存放在EcRam里面。在Asl Code里面,会判断之前获取的GPIO状态,根据不同的状态给OS汇报不同的信息,例如,PS2 Cable已经Plugged in,则会宣告拥有PS2,这样在设备管理器里面才能看到PS2 KB和MS,OS才会去加载驱动和PS2 KB MS Ack并建立通讯通路。反之,不会给OS汇报PS2设备,OS不知道自己挂载了PS2设备,也不会在设备管理器里面显示PS2 设备的相关消息。