ACPI里的EC(三)

407 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情

简介

紧接上文继续。

一、EC命令集

突发启用嵌入式控制器, BE_EC (0x82)

这个命令字节允许OSPM请求EC的专门关注,并且(除了关键事件)防止EC做除了接收主机处理器的命令和数据以外的任务(无论是系统管理中断处理程序还是OSPM)。这个命令是一个优化,允许主处理器发出几个命令以减少EC接口的延迟。当控制器处于突发模式时,如果主机没有在以下范围内发出命令,它就应该转入突发禁用状态。

  • 第一次访问 - 400微秒
  • 随后的访问 - 每个50微秒
  • 总的突发时间 - 1毫秒 此外,EC可以在任何时候解除突发模式,以处理一个关键事件。如果EC因为任何原因而禁用脉冲串模式,而不是脉冲串禁用命令,它应该产生一个SCI到OSPM以表明这一变化。 当处于突发模式时,ECOSPM驱动的这些准则。SCI像正常情况一样产生,包括IBF=0和OBF=1。访问应在50微秒内得到响应。

突发禁用嵌入式控制器,BD_EC (0x83)

这个命令字节将EC从之前的突发使能命令中释放出来,并允许它恢复正常处理。这条命令是由OSPM或系统管理中断处理程序在完成其对EC的整个队列命令序列后,由OSPM或系统管理中断处理程序发送。

查询嵌入式控制器,QR_EC (0x84)

当EC_SC寄存器中的SCI_EVT标志被设置时,OSPM驱动会发送此命令。当EC检测到一个必须与OSPM通信的系统事件时,它首先设置EC_SC寄存器中的SCI_EVT标志,产生一个SCI,然后等待OSPM发送查询(QR_EC)命令。OSPM检测到EC的SCI,看到SCI_EVT标志被设置,并向EC发送查询命令。在收到QR_EC命令的字字节时,EC会放置一个通知字节,其值在0-255之间,表明通知的原因。通知字节指出哪一个中断处理程序操作应该由OSPM执行以处理该通知。通知字节指出OSPM应该执行哪个中断处理操作来处理嵌入式控制器的SCI。查询值为0,是为虚假的查询结果保留的。虚假的查询结果,表示 "没有未决事件"。

二、示例

void Core_Port(BYTE PM)
{
    switch(PM)
    {
        case 0x80:
        ACPI_Cmd_80Data();
	    break;

		case 0x81:
        ACPI_Cmd_81Data();
	    break;

        case 0x82:
        ACPI_Cmd_82Data();
	    break;

	case 0x83:
        ACPI_Cmd_83Data();
	    break;    

        case 0x84:
        ACPI_Cmd_84Data();
	    break;  
     }
}

三、完结

未完待续。