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 的特定于型号的数据区域的硬件 ID。

请注意,硬件 ID 的长度可以长达 256 个字符,包括终止 null。

FWID(Chrome OS 固件版本)

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

参数:

结果代码:

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

FRID(Chrome OS 只读固件版本)

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

参数:

结果代码:

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

BINF(Chrome OS 启动信息)

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

参数:

结果代码:

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

字段

格式

描述

保留 1

DWORD

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

保留 2

DWORD

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

活动的 EC 固件

DWORD

启动期间使用的 EC 固件。

  • 0 - 只读(恢复)固件

  • 1 - 可重写固件。

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

活动主固件类型

DWORD

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

  • 0 - 恢复

  • 1 - 正常

  • 2 - 开发者

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

其他值保留。

保留 5

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” - 英特尔 NM10 芯片

VBNV(Chrome OS NVRAM 位置)

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

参数:

结果代码:

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

字段

格式

描述

NV 存储块偏移

DWORD

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

NV 存储块大小

DWORD

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

FMAP(Chrome OS flashmap 地址)

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

参数:

无结果代码:

一个 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"
}