xref: /linux/include/linux/device-id/dmi.h (revision d2c9a99135da931377240942d44f3dea104cedb8)
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