Legacy USB在两种情况下的实现

Legacy USB的实现分成两种情况:

第一,系统中有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

你可能感兴趣的:(keyboard)