1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef LINUX_DEVICE_ID_DMI_H 3 #define LINUX_DEVICE_ID_DMI_H 4 5 #define DMI_MATCH(a, b) { .slot = a, .substr = b } 6 #define DMI_EXACT_MATCH(a, b) { .slot = a, .substr = b, .exact_match = 1 } 7 8 /* dmi */ 9 enum dmi_field { 10 DMI_NONE, 11 DMI_BIOS_VENDOR, 12 DMI_BIOS_VERSION, 13 DMI_BIOS_DATE, 14 DMI_BIOS_RELEASE, 15 DMI_EC_FIRMWARE_RELEASE, 16 DMI_SYS_VENDOR, 17 DMI_PRODUCT_NAME, 18 DMI_PRODUCT_VERSION, 19 DMI_PRODUCT_SERIAL, 20 DMI_PRODUCT_UUID, 21 DMI_PRODUCT_SKU, 22 DMI_PRODUCT_FAMILY, 23 DMI_BOARD_VENDOR, 24 DMI_BOARD_NAME, 25 DMI_BOARD_VERSION, 26 DMI_BOARD_SERIAL, 27 DMI_BOARD_ASSET_TAG, 28 DMI_CHASSIS_VENDOR, 29 DMI_CHASSIS_TYPE, 30 DMI_CHASSIS_VERSION, 31 DMI_CHASSIS_SERIAL, 32 DMI_CHASSIS_ASSET_TAG, 33 DMI_STRING_MAX, 34 DMI_OEM_STRING, /* special case - will not be in dmi_ident */ 35 }; 36 37 struct dmi_strmatch { 38 unsigned char slot:7; 39 unsigned char exact_match:1; 40 char substr[79]; 41 }; 42 43 struct dmi_system_id { 44 int (*callback)(const struct dmi_system_id *); 45 const char *ident; 46 struct dmi_strmatch matches[4]; 47 void *driver_data; 48 }; 49 50 /* 51 * struct dmi_device_id appears during expansion of 52 * "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it 53 * but this is enough for gcc 3.4.6 to error out: 54 * error: storage size of '__mod_dmi_device_table' isn't known 55 */ 56 #define dmi_device_id dmi_system_id 57 58 #endif /* ifndef LINUX_DEVICE_ID_DMI_H */ 59