62 lines
2.6 KiB
Diff
62 lines
2.6 KiB
Diff
From: Mika Westerberg <mika.westerberg@linux.intel.com>
|
|
Date: Wed, 17 May 2017 13:25:12 +0300
|
|
Subject: firmware: dmi: Add DMI_PRODUCT_FAMILY identification string
|
|
Origin: https://git.kernel.org/linus/c61872c9833d17d3807fb999096917c1f9eaada0
|
|
|
|
Sometimes it is more convenient to be able to match a whole family of
|
|
products, like in case of bunch of Chromebooks based on Intel_Strago to
|
|
apply a driver quirk instead of quirking each machine one-by-one.
|
|
|
|
This adds support for DMI_PRODUCT_FAMILY identification string and also
|
|
exports it to the userspace through sysfs attribute just like the
|
|
existing ones.
|
|
|
|
Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
|
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
|
|
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
|
|
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
|
---
|
|
drivers/firmware/dmi-id.c | 2 ++
|
|
drivers/firmware/dmi_scan.c | 1 +
|
|
include/linux/mod_devicetable.h | 1 +
|
|
3 files changed, 4 insertions(+)
|
|
|
|
--- a/drivers/firmware/dmi-id.c
|
|
+++ b/drivers/firmware/dmi-id.c
|
|
@@ -47,6 +47,7 @@ DEFINE_DMI_ATTR_WITH_SHOW(product_name,
|
|
DEFINE_DMI_ATTR_WITH_SHOW(product_version, 0444, DMI_PRODUCT_VERSION);
|
|
DEFINE_DMI_ATTR_WITH_SHOW(product_serial, 0400, DMI_PRODUCT_SERIAL);
|
|
DEFINE_DMI_ATTR_WITH_SHOW(product_uuid, 0400, DMI_PRODUCT_UUID);
|
|
+DEFINE_DMI_ATTR_WITH_SHOW(product_family, 0400, DMI_PRODUCT_FAMILY);
|
|
DEFINE_DMI_ATTR_WITH_SHOW(board_vendor, 0444, DMI_BOARD_VENDOR);
|
|
DEFINE_DMI_ATTR_WITH_SHOW(board_name, 0444, DMI_BOARD_NAME);
|
|
DEFINE_DMI_ATTR_WITH_SHOW(board_version, 0444, DMI_BOARD_VERSION);
|
|
@@ -191,6 +192,7 @@ static void __init dmi_id_init_attr_tabl
|
|
ADD_DMI_ATTR(product_version, DMI_PRODUCT_VERSION);
|
|
ADD_DMI_ATTR(product_serial, DMI_PRODUCT_SERIAL);
|
|
ADD_DMI_ATTR(product_uuid, DMI_PRODUCT_UUID);
|
|
+ ADD_DMI_ATTR(product_family, DMI_PRODUCT_FAMILY);
|
|
ADD_DMI_ATTR(board_vendor, DMI_BOARD_VENDOR);
|
|
ADD_DMI_ATTR(board_name, DMI_BOARD_NAME);
|
|
ADD_DMI_ATTR(board_version, DMI_BOARD_VERSION);
|
|
--- a/drivers/firmware/dmi_scan.c
|
|
+++ b/drivers/firmware/dmi_scan.c
|
|
@@ -430,6 +430,7 @@ static void __init dmi_decode(const stru
|
|
dmi_save_ident(dm, DMI_PRODUCT_VERSION, 6);
|
|
dmi_save_ident(dm, DMI_PRODUCT_SERIAL, 7);
|
|
dmi_save_uuid(dm, DMI_PRODUCT_UUID, 8);
|
|
+ dmi_save_ident(dm, DMI_PRODUCT_FAMILY, 26);
|
|
break;
|
|
case 2: /* Base Board Information */
|
|
dmi_save_ident(dm, DMI_BOARD_VENDOR, 4);
|
|
--- a/include/linux/mod_devicetable.h
|
|
+++ b/include/linux/mod_devicetable.h
|
|
@@ -457,6 +457,7 @@ enum dmi_field {
|
|
DMI_PRODUCT_VERSION,
|
|
DMI_PRODUCT_SERIAL,
|
|
DMI_PRODUCT_UUID,
|
|
+ DMI_PRODUCT_FAMILY,
|
|
DMI_BOARD_VENDOR,
|
|
DMI_BOARD_NAME,
|
|
DMI_BOARD_VERSION,
|