]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
chid-fundamental: Introduce new CHID types
authoranonymix007 <48598263+anonymix007@users.noreply.github.com>
Mon, 24 Mar 2025 13:43:12 +0000 (16:43 +0300)
committeranonymix007 <48598263+anonymix007@users.noreply.github.com>
Wed, 7 May 2025 15:52:49 +0000 (18:52 +0300)
These are extra types needed to distinguish devices by the installed
display panel

src/fundamental/chid-fundamental.c
src/fundamental/chid-fundamental.h

index a99d0dae64750ca34eb1e69d4a1f2d728eff35b4..474aab74840faea78583af6e3a22f714dd05f5a4 100644 (file)
@@ -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]) {
index 81c40e087ff42addb697120a9d86baf33d89b861..5c210e006a31587945acc4218b0488f28a72364a 100644 (file)
@@ -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;