| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef LINUX_DEVICE_ID_DMI_H | |
| #define LINUX_DEVICE_ID_DMI_H | |
| #define DMI_MATCH(a, b) { .slot = a, .substr = b } | |
| #define DMI_EXACT_MATCH(a, b) { .slot = a, .substr = b, .exact_match = 1 } | |
| /* dmi */ | |
| enum dmi_field { | |
| DMI_NONE, | |
| DMI_BIOS_VENDOR, | |
| DMI_BIOS_VERSION, | |
| DMI_BIOS_DATE, | |
| DMI_BIOS_RELEASE, | |
| DMI_EC_FIRMWARE_RELEASE, | |
| DMI_SYS_VENDOR, | |
| DMI_PRODUCT_NAME, | |
| DMI_PRODUCT_VERSION, | |
| DMI_PRODUCT_SERIAL, | |
| DMI_PRODUCT_UUID, | |
| DMI_PRODUCT_SKU, | |
| DMI_PRODUCT_FAMILY, | |
| DMI_BOARD_VENDOR, | |
| DMI_BOARD_NAME, | |
| DMI_BOARD_VERSION, | |
| DMI_BOARD_SERIAL, | |
| DMI_BOARD_ASSET_TAG, | |
| DMI_CHASSIS_VENDOR, | |
| DMI_CHASSIS_TYPE, | |
| DMI_CHASSIS_VERSION, | |
| DMI_CHASSIS_SERIAL, | |
| DMI_CHASSIS_ASSET_TAG, | |
| DMI_STRING_MAX, | |
| DMI_OEM_STRING, /* special case - will not be in dmi_ident */ | |
| }; | |
| struct dmi_strmatch { | |
| unsigned char slot:7; | |
| unsigned char exact_match:1; | |
| char substr[79]; | |
| }; | |
| struct dmi_system_id { | |
| int (*callback)(const struct dmi_system_id *); | |
| const char *ident; | |
| struct dmi_strmatch matches[4]; | |
| void *driver_data; | |
| }; | |
| /* | |
| * struct dmi_device_id appears during expansion of | |
| * "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it | |
| * but this is enough for gcc 3.4.6 to error out: | |
| * error: storage size of '__mod_dmi_device_table' isn't known | |
| */ | |
| #define dmi_device_id dmi_system_id | |
| #endif /* ifndef LINUX_DEVICE_ID_DMI_H */ |