Chrome OS ACPI 设备

Chrome OS 特有的硬件功能通过 Chrome OS ACPI 设备公开。Chrome OS ACPI 设备的即插即用 ID 为 GGL0001,硬件 ID 为 GOOG0016。支持以下 ACPI 对象

支持的 ACPI 对象

对象

描述

CHSW

Chrome OS 开关位置

HWID

Chrome OS 硬件 ID

FWID

Chrome OS 固件版本

FRID

Chrome OS 只读固件版本

BINF

Chrome OS 启动信息

GPIO

Chrome OS GPIO 分配

VBNV

Chrome OS NVRAM 位置

VDTA

Chrome OS 验证启动数据

FMAP

Chrome OS flashmap 基地址

MLST

Chrome OS 方法列表

CHSW(Chrome OS 开关位置)

此控制方法返回 Chrome OS 特定硬件开关的开关位置。

参数:

结果代码:

一个整数,包含作为位域的开关位置

0x00000002

x86 固件启动时按下恢复按钮。

0x00000004

EC 固件启动时按下恢复按钮。(如果 EC EEPROM 可重写则需要;否则可选)

0x00000020

x86 固件启动时启用了开发者开关。

0x00000200

x86 固件启动时固件写保护已禁用。(如果固件写保护通过 x86 BIOS 控制则需要;否则可选)

所有其他位均保留,应设置为 0。

HWID(Chrome OS 硬件 ID)

此控制方法返回 Chromebook 的硬件 ID。

参数:

结果代码:

一个以 null 结尾的 ASCII 字符串,包含来自 EEPROM 的 Model-Specific Data 区域的硬件 ID。

请注意,硬件 ID 最多可包含 256 个字符,包括终止 null。

FWID(Chrome OS 固件版本)

此控制方法返回主处理器固件的可重写部分的固件版本。

参数:

结果代码:

一个以 null 结尾的 ASCII 字符串,包含主处理器固件的可重写部分的完整固件版本。

FRID(Chrome OS 只读固件版本)

此控制方法返回主处理器固件的只读部分的固件版本。

参数:

结果代码:

一个以 null 结尾的 ASCII 字符串,包含主处理器固件的只读(bootstrap + recovery)部分的完整固件版本。

BINF(Chrome OS 启动信息)

此控制方法返回有关当前启动的信息。

参数:

结果代码:

Package {
        Reserved1
        Reserved2
        Active EC Firmware
        Active Main Firmware Type
        Reserved5
}

字段

格式

描述

Reserved1

DWORD

设置为 256 (0x100)。这表明该字段不再使用。

Reserved2

DWORD

设置为 256 (0x100)。这表明该字段不再使用。

Active EC firmware

DWORD

启动期间使用的 EC 固件。

  • 0 - 只读(恢复)固件

  • 1 - 可重写固件。

如果 EC 固件始终为只读,则设置为 0。

Active Main Firmware Type

DWORD

启动期间使用的主固件类型。

  • 0 - 恢复

  • 1 - 正常

  • 2 - 开发者

  • 3 - 网络启动(仅用于工厂安装)

其他值已保留。

Reserved5

DWORD

设置为 256 (0x100)。这表明该字段不再使用。

GPIO(Chrome OS GPIO 分配)

此控制方法返回有关 Chrome OS 特定硬件的 Chrome OS 特定 GPIO 分配的信息,以便内核可以直接控制该硬件。

参数:

结果代码:

Package {
        Package {
                // First GPIO assignment
                Signal Type        //DWORD
                Attributes         //DWORD
                Controller Offset  //DWORD
                Controller Name    //ASCIIZ
        },
        ...
        Package {
                // Last GPIO assignment
                Signal Type        //DWORD
                Attributes         //DWORD
                Controller Offset  //DWORD
                Controller Name    //ASCIIZ
        }
}

其中 ASCIIZ 表示以 null 结尾的 ASCII 字符串。

字段

格式

描述

信号类型

DWORD

GPIO 信号的类型

  • 0x00000001 - 恢复按钮

  • 0x00000002 - 开发者模式开关

  • 0x00000003 - 固件写保护开关

  • 0x00000100 - 调试头 GPIO 0

  • ...

  • 0x000001FF - 调试头 GPIO 255

其他值已保留。

属性

DWORD

作为位域的信号属性

  • 0x00000001 - 信号为高电平有效(对于按钮,GPIO 值为 1 表示按下按钮;对于开关,GPIO 值为 1 表示启用开关)。如果此位为 0,则信号为低电平有效。对于调试头 GPIO,设置为 0。

控制器偏移

DWORD

指定控制器上的 GPIO 编号。

控制器名称

ASCIIZ

GPIO 控制器的名称。当前支持的名称:“NM10” - Intel NM10 芯片

VBNV(Chrome OS NVRAM 位置)

此控制方法返回用于与 BIOS 通信的 NVRAM (CMOS) 位置的信息。

参数:

结果代码:

Package {
        NV Storage Block Offset  //DWORD
        NV Storage Block Size    //DWORD
}

字段

格式

描述

NV 存储块偏移

DWORD

经验证的启动非易失性存储块在 CMOS bank 0 中的偏移量,从第一个可写 CMOS 字节开始计算(即,偏移量 = 0 是时钟数据的 14 个字节之后的字节)。

NV 存储块大小

DWORD

经验证的启动非易失性存储块的大小(以字节为单位)。

FMAP(Chrome OS flashmap 地址)

此控制方法返回主处理器固件 flashmap 起始位置的物理内存地址。

参数:

None结果代码:

一个 DWORD,包含主处理器固件 flashmap 起始位置的物理内存地址。

VDTA(Chrome OS 验证启动数据)

此控制方法返回在固件验证步骤和内核验证步骤之间共享的验证启动数据块。

参数:

结果代码:

包含验证启动数据块的缓冲区。

MECK(管理引擎校验和)

此控制方法返回在启动期间从管理引擎扩展寄存器中读取的 SHA-1 或 SHA-256 哈希值。哈希值通过 ACPI 导出,以便操作系统可以验证 ME 固件是否已更改。如果管理引擎不存在,或者固件无法读取扩展寄存器,则此缓冲区可以为零。

参数:

结果代码:

包含 ME 哈希的缓冲区。

MLST(Chrome OS 方法列表)

此控制方法返回 Chrome OS 硬件设备支持的其他控制方法的列表。

参数:

结果代码:

一个包含以 null 结尾的 ASCII 字符串列表的包,每个字符串对应 Chrome OS 硬件设备支持的一个控制方法,不包括 MLST 方法本身。对于此版本的规范,结果是

Package {
        "CHSW",
        "FWID",
        "HWID",
        "FRID",
        "BINF",
        "GPIO",
        "VBNV",
        "FMAP",
        "VDTA",
        "MECK"
}