捕捉EC产生的QEVENT
Qevent就是一个SCI,该信号是从EC的ECSCI pin发出来的。当EC产生一个SCI后,OS是怎么捕捉到的呢?
这在ACPI SPEC中ACPI Embedded Controller Interface 章节有详细的说明。
大致的意思是:
EC端在准备发送SCI的时候,首先会把SCI_EVT这个bit置一,等待Host端发送0x84查询命令。当收到查询命令后,EC才会将QEvent number发送出去。
假如Host要去捕捉这个QEvent要该怎么做呢?
1.使用轮询的方式,不断地读取EC Status port(0x66端口)
2.检查读取值的bit5是否为1,若为一,表示EC有SCI产生,此时需要往EC的command port(0x66)发送0x84查询指令
3.从DATA port(0x62)读取QEvent number的值
代码如下:
// void Get_Qevent() { UINT8 q_event_number = 0; while(1) { /*** EC genetate SCI step: 1.Set SCI_EVT bit to 1 2.Wait 0x84 query command 3.After receiving 0x84, send QEvent. ***/ /* Query 0x66 port if a SCI will be generated */ UINT8 Ec_Sc_Data = IoRead8(EC_C_PORT); Print(L"0x66 port data = 0x%2X\n\r", Ec_Sc_Data); /* EC Ready to send SCI */ if(Ec_Sc_Data & EC_S_SCI_EVT) { /* Send 0x84 query command */ OemSendCmdToEcOrKbc (EC_C_PORT, EC_C_GET_QEVENT, FALSE); /* Read QEvent number from 0x62 port */ q_event_number = OemGetDataFromEcOrKbc (EC_C_PORT, FALSE); break; } /* Query time 500ms */ gBS->Stall(500); } Print(L"QEvent Number = 0x%2X\n\r", q_event_number); }
版权声明:
作者:bin
链接:https://ay123.net/mystudy/670/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
捕捉EC产生的QEVENT
Qevent就是一个SCI,该信号是从EC的ECSCI pin发出来的。当EC产生一个SCI后,OS是怎么捕捉到的呢?
这在ACPI SPEC中ACPI Embedded Controller Interface 章节有……
共有 0 条评论