From 3481f8f86db20627a73b0087d344fc3b9fdb55ad Mon Sep 17 00:00:00 2001 From: anonymix007 <48598263+anonymix007@users.noreply.github.com> Date: Mon, 24 Mar 2025 16:43:12 +0300 Subject: [PATCH] chid-fundamental: Introduce new CHID types These are extra types needed to distinguish devices by the installed display panel --- src/fundamental/chid-fundamental.c | 15 +++++++++++++++ src/fundamental/chid-fundamental.h | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/fundamental/chid-fundamental.c b/src/fundamental/chid-fundamental.c index a99d0dae647..474aab74840 100644 --- a/src/fundamental/chid-fundamental.c +++ b/src/fundamental/chid-fundamental.c @@ -148,6 +148,21 @@ const uint32_t chid_smbios_table[CHID_TYPES_MAX] = { (UINT32_C(1) << CHID_SMBIOS_BASEBOARD_PRODUCT), [14] = (UINT32_C(1) << CHID_SMBIOS_MANUFACTURER), + + /* Extra non-standard CHIDs */ + + [EXTRA_CHID_BASE + 0] = (UINT32_C(1) << CHID_SMBIOS_MANUFACTURER) | + (UINT32_C(1) << CHID_SMBIOS_FAMILY) | + (UINT32_C(1) << CHID_SMBIOS_PRODUCT_NAME)| + (UINT32_C(1) << CHID_EDID_PANEL), + + [EXTRA_CHID_BASE + 1] = (UINT32_C(1) << CHID_SMBIOS_MANUFACTURER) | + (UINT32_C(1) << CHID_SMBIOS_FAMILY) | + (UINT32_C(1) << CHID_EDID_PANEL), + + [EXTRA_CHID_BASE + 2] = (UINT32_C(1) << CHID_SMBIOS_MANUFACTURER) | + (UINT32_C(1) << CHID_SMBIOS_PRODUCT_SKU) | + (UINT32_C(1) << CHID_EDID_PANEL), }; void chid_calculate(const char16_t *const smbios_fields[static _CHID_SMBIOS_FIELDS_MAX], EFI_GUID ret_chids[static CHID_TYPES_MAX]) { diff --git a/src/fundamental/chid-fundamental.h b/src/fundamental/chid-fundamental.h index 81c40e087ff..5c210e006a3 100644 --- a/src/fundamental/chid-fundamental.h +++ b/src/fundamental/chid-fundamental.h @@ -11,7 +11,9 @@ #include "efi-fundamental.h" #include "string-util-fundamental.h" -#define CHID_TYPES_MAX 15 +#define CHID_TYPES_MAX 18 +/* Any chids starting from EXTRA_CHID_BASE are non-standard and are subject to change and renumeration at any time */ +#define EXTRA_CHID_BASE 15 typedef enum ChidSmbiosFields { CHID_SMBIOS_MANUFACTURER, @@ -25,6 +27,7 @@ typedef enum ChidSmbiosFields { CHID_SMBIOS_BIOS_MAJOR, CHID_SMBIOS_BIOS_MINOR, CHID_SMBIOS_ENCLOSURE_TYPE, + CHID_EDID_PANEL, _CHID_SMBIOS_FIELDS_MAX, } ChidSmbiosFields; -- 2.47.3