Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 =====================
0004 Chrome OS ACPI Device
0005 =====================
0006 
0007 Hardware functionality specific to Chrome OS is exposed through a Chrome OS ACPI device.
0008 The plug and play ID of a Chrome OS ACPI device is GGL0001. GGL is a valid PNP ID of Google.
0009 PNP ID can be used with the ACPI devices according to the guidelines. The following ACPI
0010 objects are supported:
0011 
0012 .. flat-table:: Supported ACPI Objects
0013    :widths: 1 2
0014    :header-rows: 1
0015 
0016    * - Object
0017      - Description
0018 
0019    * - CHSW
0020      - Chrome OS switch positions
0021 
0022    * - HWID
0023      - Chrome OS hardware ID
0024 
0025    * - FWID
0026      - Chrome OS firmware version
0027 
0028    * - FRID
0029      - Chrome OS read-only firmware version
0030 
0031    * - BINF
0032      - Chrome OS boot information
0033 
0034    * - GPIO
0035      - Chrome OS GPIO assignments
0036 
0037    * - VBNV
0038      - Chrome OS NVRAM locations
0039 
0040    * - VDTA
0041      - Chrome OS verified boot data
0042 
0043    * - FMAP
0044      - Chrome OS flashmap base address
0045 
0046    * - MLST
0047      - Chrome OS method list
0048 
0049 CHSW (Chrome OS switch positions)
0050 =================================
0051 This control method returns the switch positions for Chrome OS specific hardware switches.
0052 
0053 Arguments:
0054 ----------
0055 None
0056 
0057 Result code:
0058 ------------
0059 An integer containing the switch positions as bitfields:
0060 
0061 .. flat-table::
0062    :widths: 1 2
0063 
0064    * - 0x00000002
0065      - Recovery button was pressed when x86 firmware booted.
0066 
0067    * - 0x00000004
0068      - Recovery button was pressed when EC firmware booted. (required if EC EEPROM is
0069        rewritable; otherwise optional)
0070 
0071    * - 0x00000020
0072      - Developer switch was enabled when x86 firmware booted.
0073 
0074    * - 0x00000200
0075      - Firmware write protection was disabled when x86 firmware booted. (required if
0076        firmware write protection is controlled through x86 BIOS; otherwise optional)
0077 
0078 All other bits are reserved and should be set to 0.
0079 
0080 HWID (Chrome OS hardware ID)
0081 ============================
0082 This control method returns the hardware ID for the Chromebook.
0083 
0084 Arguments:
0085 ----------
0086 None
0087 
0088 Result code:
0089 ------------
0090 A null-terminated ASCII string containing the hardware ID from the Model-Specific Data area of
0091 EEPROM.
0092 
0093 Note that the hardware ID can be up to 256 characters long, including the terminating null.
0094 
0095 FWID (Chrome OS firmware version)
0096 =================================
0097 This control method returns the firmware version for the rewritable portion of the main
0098 processor firmware.
0099 
0100 Arguments:
0101 ----------
0102 None
0103 
0104 Result code:
0105 ------------
0106 A null-terminated ASCII string containing the complete firmware version for the rewritable
0107 portion of the main processor firmware.
0108 
0109 FRID (Chrome OS read-only firmware version)
0110 ===========================================
0111 This control method returns the firmware version for the read-only portion of the main
0112 processor firmware.
0113 
0114 Arguments:
0115 ----------
0116 None
0117 
0118 Result code:
0119 ------------
0120 A null-terminated ASCII string containing the complete firmware version for the read-only
0121 (bootstrap + recovery ) portion of the main processor firmware.
0122 
0123 BINF (Chrome OS boot information)
0124 =================================
0125 This control method returns information about the current boot.
0126 
0127 Arguments:
0128 ----------
0129 None
0130 
0131 Result code:
0132 ------------
0133 
0134 .. code-block::
0135 
0136    Package {
0137            Reserved1
0138            Reserved2
0139            Active EC Firmware
0140            Active Main Firmware Type
0141            Reserved5
0142    }
0143 
0144 .. flat-table::
0145    :widths: 1 1 2
0146    :header-rows: 1
0147 
0148    * - Field
0149      - Format
0150      - Description
0151 
0152    * - Reserved1
0153      - DWORD
0154      - Set to 256 (0x100). This indicates this field is no longer used.
0155 
0156    * - Reserved2
0157      - DWORD
0158      - Set to 256 (0x100). This indicates this field is no longer used.
0159 
0160    * - Active EC firmware
0161      - DWORD
0162      - The EC firmware which was used during boot.
0163 
0164        - 0 - Read-only (recovery) firmware
0165        - 1 - Rewritable firmware.
0166 
0167        Set to 0 if EC firmware is always read-only.
0168 
0169    * - Active Main Firmware Type
0170      - DWORD
0171      - The main firmware type which was used during boot.
0172 
0173        - 0 - Recovery
0174        - 1 - Normal
0175        - 2 - Developer
0176        - 3 - netboot (factory installation only)
0177 
0178        Other values are reserved.
0179 
0180    * - Reserved5
0181      - DWORD
0182      - Set to 256 (0x100). This indicates this field is no longer used.
0183 
0184 GPIO (Chrome OS GPIO assignments)
0185 =================================
0186 This control method returns information about Chrome OS specific GPIO assignments for
0187 Chrome OS hardware, so the kernel can directly control that hardware.
0188 
0189 Arguments:
0190 ----------
0191 None
0192 
0193 Result code:
0194 ------------
0195 .. code-block::
0196 
0197         Package {
0198                 Package {
0199                         // First GPIO assignment
0200                         Signal Type        //DWORD
0201                         Attributes         //DWORD
0202                         Controller Offset  //DWORD
0203                         Controller Name    //ASCIIZ
0204                 },
0205                 ...
0206                 Package {
0207                         // Last GPIO assignment
0208                         Signal Type        //DWORD
0209                         Attributes         //DWORD
0210                         Controller Offset  //DWORD
0211                         Controller Name    //ASCIIZ
0212                 }
0213         }
0214 
0215 Where ASCIIZ means a null-terminated ASCII string.
0216 
0217 .. flat-table::
0218    :widths: 1 1 2
0219    :header-rows: 1
0220 
0221    * - Field
0222      - Format
0223      - Description
0224 
0225    * - Signal Type
0226      - DWORD
0227      - Type of GPIO signal
0228 
0229        - 0x00000001 - Recovery button
0230        - 0x00000002 - Developer mode switch
0231        - 0x00000003 - Firmware write protection switch
0232        - 0x00000100 - Debug header GPIO 0
0233        - ...
0234        - 0x000001FF - Debug header GPIO 255
0235 
0236        Other values are reserved.
0237 
0238    * - Attributes
0239      - DWORD
0240      - Signal attributes as bitfields:
0241 
0242        - 0x00000001 - Signal is active-high (for button, a GPIO value
0243          of 1 means the button is pressed; for switches, a GPIO value
0244          of 1 means the switch is enabled). If this bit is 0, the signal
0245          is active low. Set to 0 for debug header GPIOs.
0246 
0247    * - Controller Offset
0248      - DWORD
0249      - GPIO number on the specified controller.
0250 
0251    * - Controller Name
0252      - ASCIIZ
0253      - Name of the controller for the GPIO.
0254        Currently supported names:
0255        "NM10" - Intel NM10 chip
0256 
0257 VBNV (Chrome OS NVRAM locations)
0258 ================================
0259 This control method returns information about the NVRAM (CMOS) locations used to
0260 communicate with the BIOS.
0261 
0262 Arguments:
0263 ----------
0264 None
0265 
0266 Result code:
0267 ------------
0268 .. code-block::
0269 
0270         Package {
0271                 NV Storage Block Offset  //DWORD
0272                 NV Storage Block Size    //DWORD
0273         }
0274 
0275 .. flat-table::
0276    :widths: 1 1 2
0277    :header-rows: 1
0278 
0279    * - Field
0280      - Format
0281      - Description
0282 
0283    * - NV Storage Block Offset
0284      - DWORD
0285      - Offset in CMOS bank 0 of the verified boot non-volatile storage block, counting from
0286        the first writable CMOS byte (that is, offset=0 is the byte following the 14 bytes of
0287        clock data).
0288 
0289    * - NV Storage Block Size
0290      - DWORD
0291      - Size in bytes of the verified boot non-volatile storage block.
0292 
0293 FMAP (Chrome OS flashmap address)
0294 =================================
0295 This control method returns the physical memory address of the start of the main processor
0296 firmware flashmap.
0297 
0298 Arguments:
0299 ----------
0300 None
0301 
0302 NoneResult code:
0303 ----------------
0304 A DWORD containing the physical memory address of the start of the main processor firmware
0305 flashmap.
0306 
0307 VDTA (Chrome OS verified boot data)
0308 ===================================
0309 This control method returns the verified boot data block shared between the firmware
0310 verification step and the kernel verification step.
0311 
0312 Arguments:
0313 ----------
0314 None
0315 
0316 Result code:
0317 ------------
0318 A buffer containing the verified boot data block.
0319 
0320 MECK (Management Engine Checksum)
0321 =================================
0322 This control method returns the SHA-1 or SHA-256 hash that is read out of the Management
0323 Engine extended registers during boot. The hash is exported via ACPI so the OS can verify that
0324 the ME firmware has not changed. If Management Engine is not present, or if the firmware was
0325 unable to read the extended registers, this buffer can be zero.
0326 
0327 Arguments:
0328 ----------
0329 None
0330 
0331 Result code:
0332 ------------
0333 A buffer containing the ME hash.
0334 
0335 MLST (Chrome OS method list)
0336 ============================
0337 This control method returns a list of the other control methods supported by the Chrome OS
0338 hardware device.
0339 
0340 Arguments:
0341 ----------
0342 None
0343 
0344 Result code:
0345 ------------
0346 A package containing a list of null-terminated ASCII strings, one for each control method
0347 supported by the Chrome OS hardware device, not including the MLST method itself.
0348 For this version of the specification, the result is:
0349 
0350 .. code-block::
0351 
0352         Package {
0353                 "CHSW",
0354                 "FWID",
0355                 "HWID",
0356                 "FRID",
0357                 "BINF",
0358                 "GPIO",
0359                 "VBNV",
0360                 "FMAP",
0361                 "VDTA",
0362                 "MECK"
0363         }