持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情
简介
紧接上文继续。
一、EC的寄存器
嵌入式控制器数据,EC_DATA (R/W)
这是一个读/写寄存器,允许向EC发出额外的命令字节,并允许OSPM读取由嵌入式控制器返回的数据。主机对该端口的写操作被锁在输入端。
主机对这个端口的写入被锁在输入数据寄存器中,输入缓冲区满的标志被设置在状态寄存器中。从这个寄存器中读出的数据从输出数据寄存器中返回,并清除状态寄存器中的输出缓冲区满标志。
二、EC命令集
EC命令集允许OSPM与EC进行通信。ACPI定义了与EC一起使用的命令和它们的字节编码,见下表。下表显示了这些命令及其字节编码。
| 命令 | 字节编码 |
|---|---|
| RD_EC | 0x80 |
| WR_EC | 0x81 |
| BE_EC | 0x82 |
| BD_EC | 0x83 |
| QR_EC | 0x84 |
读取嵌入式控制器, RD_EC (0x80)
这个命令字节允许OSPM在EC的地址空间中读取一个字节。
这个命令字节被保留给OSPM专用,它指示EC产生SCI以响应相关的事务(即EC状态寄存器中的IBF=0或OBF=1),而不是SMI。这个命令由一个命令字节组成,写入到
EC命令寄存器(EC_SC),然后是一个写到EC数据寄存器(EC_D)的地址字节。EC数据寄存器(EC_DATA)。然后,EC在寻址位置返回字节,在OBF标志被设置后,数据在数据端口被读取。
写入嵌入式控制器, WR_EC (0x81)
这个命令字节允许OSPM在EC的地址空间写一个字节。
这个命令字节被保留给OSPM专用,它指示EC在响应SCI的时候产生SCI。它指示EC产生SCI以响应相关的事务(即EC状态寄存器中的IBF=0或OBF=1),而不是SMI。
状态寄存器中的IBF=0或OBF=1),而不是SMI。该命令允许OSPM在EC的地址空间写入一个字节。它包括一个写到EC令寄存器(EC_SC)的命令字节,然后是一个写到EC数据寄存器(EC_DATA)的地址字节,接着是一个写到EC数据寄存器的数据字节,寄存器(EC_DATA);这是在寻址位置写入的数据字节。
三、示例
void OEM_ACPI_Cmd_81(void)
{
if(IS_MASK_SET(SYS_MISC1,ACPI_OS)) // ACPI mode
{
if(IS_MASK_CLEAR(PM1STS,BURST)) // Non-burst mode
{
ECCheckBurstMode = 1;
}
}
}
四、完结
未完待续。