第一,系统中有8042(KBC)
SMM代码从USB Keyboard/Mouse获得输入后,用0D2H(Keyboard)或0D3H(Mouse)把数据送入8042, 8042把他当成是PS/2 Keyboard或Mouse输入,触发IRQ1或IRQ12。INT9/INT74h从KBC读出Scan Code并完成中断服务。
第二,系统中没有8042(KBC),是Legacy Free的系统
SMM代码需要一种硬件机制来帮助触发IRQ1、IRQ12。
这是通过Software IRQ Generation Register来实现的。
地址:TCOBase+10h, bit1--IRQ12_CAUSE, when software set this bit to 1, IRQ12 will be asserted
bit0--IRQ1_CAUSE, when software set this bit to 1, IRQ1 will be asserted.
1. 如何判断8042是否存在?/ 如何判断一个系统是Legacy Free?
从64H端口读出值来(IORead8(0x64)), 若为0xFF, 则KBC不存在,是Legacy Free的系统;
若不是0xFF,则KBC存在。
2. 如何Enable Legacy USB circuit to cause SMI#?
PMBase+30H, bit3 LEGACY_USB_EN
3. ULKMC--USB Legacy Keyboard/Mouse Control
LPC B0:Dev31:F0:Reg94H bit4:0, Enable USB interrupt/Port64 write/Port64 read/Port60 write/Port60 read cause an SMI event