From: Simon Glass <sjg(a)chromium.org>
This series implements support for Microsoft's Computer Hardware
Identifier (CHID) specification in U-Boot. CHIDs provide a standardised
way to identify hardware configurations using SMBIOS data, enabling
automatic selection of appropriate device tree overlays and drivers when
the firmware itself lacks support for devicetree.
The CHID system generates UUIDs from various combinations of hardware
information (manufacturer, product name, BIOS version, etc.) creating a
hierarchy from most to least specific. This allows U-Boot to
automatically select the correct devicetree compatible-string for the
hardware on which it running.
This series includes:
* Core CHID Infrastructure:
- UUID v5 generation with Microsoft's CHID namespace
- Support for all 15 CHID variants (HardwareID-00 through HardwareID-14)
- SMBIOS data extraction and processing
* Devicetree Integration:
- hwids_to_dtsi.py script to convert CHID files to devicetree .dtsi
- Automatic inclusion of the .dtsi into the board'' devicetree
- Runtime compatible-string-selection based on hardware CHIDs
* chid command:
- chid show - show current hardware information and generated CHIDs
- chid list - list all supported CHID variants and generated UUIDs
- chid variants - show information about CHID variant restrictions
- chid compat - select the compatible string for current hardware
* ARM/EFI Support:
- CHID mappings for a selection of ARM-based Windows devices
- Support for Qualcomm Snapdragon platforms (MSM8998, SC7180, SC8180X,
SC8280XP, SDM850, X1E series)
* Testing:
- Sandbox tests using mock SMBIOS data
- CI integration for hwids_to_dtsi validation
- Validation against Microsoft's ComputerHardwareIds.exe output
Documentation is provided for this new subsystem and associated
commands.
Simon Glass (25):
lib: Rename gen_v5_guid() to indicate it is little-endian
uuid: Refactor v5 GUID generation into BE and LE variants
smbios: Correct logic in smbios_get_header()
smbios: Update smbios_get_header() to return a void *
smbios: Expand the documentation
smbios: Provide a sandbox test
smbios: Improve comments for entry-point structures
smbios: Add comments for smbios_type1 (System Information)
smbios: Add docs for the main types
test: Add more SMBIOS data to sandbox
efi: arm: Provide CHIDs for the app
efi: arm: Provide a mapping from CHIDs to compatible
chid: Create a basic CHID header and smbios interface
chid: Provide a command to access chid features
uuid: Add a constant for the length of a UUID
chid: Support calculating values for each variant
chid: Add subcommand for dealing with variants
chid: Provide some developer docs
scripts: Add a tool to convert CHIDs to devicetree
CI: Plumb in the hwids_to_dtsi tests
sandbox: Provide hwid files for testing
Makefile: Integrate CHID files into the build
chid: Implement selection of the compatible string
chid: doc: Describe how the CHID feature works
cmd: chid: Add 'compat' subcommand to find compatible string
.gitlab-ci.yml | 3 +-
arch/sandbox/dts/test.dts | 24 +
board/coreboot/coreboot/sysinfo.c | 31 +-
.../efi/efi-arm_app/hwids/compatible.hwidmap | 45 +
.../hwids/msm8998-lenovo-miix-630-81f1.txt | 33 +
.../efi-arm_app/hwids/sc7180-acer-aspire1.txt | 32 +
.../hwids/sc8180x-lenovo-flex-5g-81xe.txt | 32 +
.../hwids/sc8180x-lenovo-flex-5g-82ak.txt | 33 +
.../hwids/sc8280xp-huawei-gaokun3.txt | 38 +
.../sc8280xp-lenovo-thinkpad-x13s-21bx.txt | 33 +
.../sc8280xp-lenovo-thinkpad-x13s-21by.txt | 32 +
.../hwids/sc8280xp-microsoft-blackrock.txt | 32 +
.../sc8280xp-microsoft-surface-pro-9-5G.txt | 32 +
.../hwids/sdm850-lenovo-yoga-c630.txt | 32 +
.../efi/efi-arm_app/hwids/x1e001de-devkit.txt | 30 +
.../x1e78100-lenovo-thinkpad-t14s-21n1.txt | 38 +
.../x1e78100-lenovo-thinkpad-t14s-21n2.txt | 37 +
.../hwids/x1e80100-asus-vivobook-s15.txt | 38 +
.../hwids/x1e80100-asus-zenbook-a14.txt | 37 +
board/efi/efi-arm_app/hwids/x1e80100-crd.txt | 34 +
.../x1e80100-dell-inspiron-14-plus-7441.txt | 37 +
.../hwids/x1e80100-dell-latitude-7455.txt | 33 +
.../hwids/x1e80100-dell-xps13-9345.txt | 32 +
.../hwids/x1e80100-hp-omnibook-x14.txt | 33 +
.../hwids/x1e80100-lenovo-yoga-slim7x.txt | 32 +
.../hwids/x1e80100-microsoft-denali.txt | 37 +
.../hwids/x1e80100-microsoft-romulus13.txt | 37 +
.../hwids/x1e80100-microsoft-romulus15.txt | 37 +
.../hwids/x1p42100-asus-vivobook-s15.txt | 37 +
.../hwids/x1p42100-asus-zenbook-a14.txt | 37 +
.../hwids/x1p42100-hp-omnibook-x14.txt | 33 +
.../hwids/x1p42100-lenovo-ideapad-5-2in1.txt | 37 +
.../x1p42100-microsoft-surface-pro-12in.txt | 37 +
.../hwids/x1p64100-acer-swift-sf14-11.txt | 37 +
board/sandbox/hwids/compatible.hwidmap | 12 +
board/sandbox/hwids/test-device-1.txt | 22 +
board/sandbox/hwids/test-device-2.txt | 19 +
cmd/Kconfig | 10 +
cmd/Makefile | 1 +
cmd/chid.c | 160 ++++
cmd/smbios.c | 4 +-
doc/develop/chid.rst | 338 ++++++++
doc/develop/index.rst | 1 +
doc/develop/smbios.rst | 65 ++
doc/usage/cmd/chid.rst | 114 +++
doc/usage/cmd/smbios.rst | 3 +-
doc/usage/index.rst | 2 +
doc/usage/smbios.rst | 180 ++++
include/chid.h | 230 +++++
include/smbios.h | 239 +++++-
include/u-boot/uuid.h | 16 +-
lib/Kconfig | 9 +
lib/Makefile | 2 +
lib/chid.c | 515 ++++++++++++
lib/efi_loader/efi_firmware.c | 8 +-
lib/smbios-parser.c | 15 +-
lib/uuid.c | 30 +-
scripts/Makefile.lib | 21 +
scripts/hwids_to_dtsi.py | 795 ++++++++++++++++++
test/cmd/Makefile | 2 +
test/cmd/chid.c | 125 +++
test/cmd/smbios.c | 137 +++
test/lib/Makefile | 1 +
test/lib/chid.c | 392 +++++++++
test/lib/uuid.c | 10 +-
test/py/tests/test_smbios.py | 2 +-
test/run | 1 +
test/scripts/test_hwids_to_dtsi.py | 306 +++++++
tools/mkeficapsule.c | 7 +-
69 files changed, 4867 insertions(+), 69 deletions(-)
create mode 100644 board/efi/efi-arm_app/hwids/compatible.hwidmap
create mode 100644 board/efi/efi-arm_app/hwids/msm8998-lenovo-miix-630-81f1.txt
create mode 100644 board/efi/efi-arm_app/hwids/sc7180-acer-aspire1.txt
create mode 100644 board/efi/efi-arm_app/hwids/sc8180x-lenovo-flex-5g-81xe.txt
create mode 100644 board/efi/efi-arm_app/hwids/sc8180x-lenovo-flex-5g-82ak.txt
create mode 100644 board/efi/efi-arm_app/hwids/sc8280xp-huawei-gaokun3.txt
create mode 100644 board/efi/efi-arm_app/hwids/sc8280xp-lenovo-thinkpad-x13s-21bx.txt
create mode 100644 board/efi/efi-arm_app/hwids/sc8280xp-lenovo-thinkpad-x13s-21by.txt
create mode 100644 board/efi/efi-arm_app/hwids/sc8280xp-microsoft-blackrock.txt
create mode 100644 board/efi/efi-arm_app/hwids/sc8280xp-microsoft-surface-pro-9-5G.txt
create mode 100644 board/efi/efi-arm_app/hwids/sdm850-lenovo-yoga-c630.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e001de-devkit.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e78100-lenovo-thinkpad-t14s-21n1.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e78100-lenovo-thinkpad-t14s-21n2.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-asus-vivobook-s15.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-asus-zenbook-a14.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-crd.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-dell-inspiron-14-plus-7441.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-dell-latitude-7455.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-dell-xps13-9345.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-hp-omnibook-x14.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-lenovo-yoga-slim7x.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-microsoft-denali.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-microsoft-romulus13.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1e80100-microsoft-romulus15.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1p42100-asus-vivobook-s15.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1p42100-asus-zenbook-a14.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1p42100-hp-omnibook-x14.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1p42100-lenovo-ideapad-5-2in1.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1p42100-microsoft-surface-pro-12in.txt
create mode 100644 board/efi/efi-arm_app/hwids/x1p64100-acer-swift-sf14-11.txt
create mode 100644 board/sandbox/hwids/compatible.hwidmap
create mode 100644 board/sandbox/hwids/test-device-1.txt
create mode 100644 board/sandbox/hwids/test-device-2.txt
create mode 100644 cmd/chid.c
create mode 100644 doc/develop/chid.rst
create mode 100644 doc/usage/cmd/chid.rst
create mode 100644 doc/usage/smbios.rst
create mode 100644 include/chid.h
create mode 100644 lib/chid.c
create mode 100755 scripts/hwids_to_dtsi.py
create mode 100644 test/cmd/chid.c
create mode 100644 test/cmd/smbios.c
create mode 100644 test/lib/chid.c
create mode 100644 test/scripts/test_hwids_to_dtsi.py
--
2.43.0
base-commit: f74db7258ca9d09a7bc658acced6531793a015d5
branch: apd