diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2016-01-07 17:49:24 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-02-07 01:11:06 -0500 |
commit | e97cdb303c04bfe60283094bdced68a0d363bd5d (patch) | |
tree | 45a50750e12eea0b2a3181658d7c7ffeab41db17 | |
parent | c9cf20ee45602a7a5512b7fbbef5672382790555 (diff) |
mei: bus: whitelist the watchdog client
The iAMT WD client has to be whitelisted sice it has two connections
and is filtered out by number_of_connections fixup.
Also the API has changed for BDW and SKL but firmware haven't updated
the protocol version.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/misc/mei/bus-fixup.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/misc/mei/bus-fixup.c b/drivers/misc/mei/bus-fixup.c index b2d2a6ea576c..b87323f4bb14 100644 --- a/drivers/misc/mei/bus-fixup.c +++ b/drivers/misc/mei/bus-fixup.c | |||
@@ -35,6 +35,9 @@ static const uuid_le mei_nfc_info_guid = MEI_UUID_NFC_INFO; | |||
35 | #define MEI_UUID_NFC_HCI UUID_LE(0x0bb17a78, 0x2a8e, 0x4c50, \ | 35 | #define MEI_UUID_NFC_HCI UUID_LE(0x0bb17a78, 0x2a8e, 0x4c50, \ |
36 | 0x94, 0xd4, 0x50, 0x26, 0x67, 0x23, 0x77, 0x5c) | 36 | 0x94, 0xd4, 0x50, 0x26, 0x67, 0x23, 0x77, 0x5c) |
37 | 37 | ||
38 | #define MEI_UUID_WD UUID_LE(0x05B79A6F, 0x4628, 0x4D7F, \ | ||
39 | 0x89, 0x9D, 0xA9, 0x15, 0x14, 0xCB, 0x32, 0xAB) | ||
40 | |||
38 | #define MEI_UUID_ANY NULL_UUID_LE | 41 | #define MEI_UUID_ANY NULL_UUID_LE |
39 | 42 | ||
40 | /** | 43 | /** |
@@ -66,6 +69,31 @@ static void blacklist(struct mei_cl_device *cldev) | |||
66 | cldev->do_match = 0; | 69 | cldev->do_match = 0; |
67 | } | 70 | } |
68 | 71 | ||
72 | /** | ||
73 | * mei_wd - wd client on the bus, change protocol version | ||
74 | * as the API has changed. | ||
75 | * | ||
76 | * @cldev: me clients device | ||
77 | */ | ||
78 | #if IS_ENABLED(CONFIG_INTEL_MEI_ME) | ||
79 | #include <linux/pci.h> | ||
80 | #include "hw-me-regs.h" | ||
81 | static void mei_wd(struct mei_cl_device *cldev) | ||
82 | { | ||
83 | struct pci_dev *pdev = to_pci_dev(cldev->dev.parent); | ||
84 | |||
85 | dev_dbg(&cldev->dev, "running hook %s\n", __func__); | ||
86 | if (pdev->device == MEI_DEV_ID_WPT_LP || | ||
87 | pdev->device == MEI_DEV_ID_SPT || | ||
88 | pdev->device == MEI_DEV_ID_SPT_H) | ||
89 | cldev->me_cl->props.protocol_version = 0x2; | ||
90 | |||
91 | cldev->do_match = 1; | ||
92 | } | ||
93 | #else | ||
94 | static inline void mei_wd(struct mei_cl_device *cldev) {} | ||
95 | #endif /* CONFIG_INTEL_MEI_ME */ | ||
96 | |||
69 | struct mei_nfc_cmd { | 97 | struct mei_nfc_cmd { |
70 | u8 command; | 98 | u8 command; |
71 | u8 status; | 99 | u8 status; |
@@ -280,6 +308,7 @@ static struct mei_fixup { | |||
280 | MEI_FIXUP(MEI_UUID_ANY, number_of_connections), | 308 | MEI_FIXUP(MEI_UUID_ANY, number_of_connections), |
281 | MEI_FIXUP(MEI_UUID_NFC_INFO, blacklist), | 309 | MEI_FIXUP(MEI_UUID_NFC_INFO, blacklist), |
282 | MEI_FIXUP(MEI_UUID_NFC_HCI, mei_nfc), | 310 | MEI_FIXUP(MEI_UUID_NFC_HCI, mei_nfc), |
311 | MEI_FIXUP(MEI_UUID_WD, mei_wd), | ||
283 | }; | 312 | }; |
284 | 313 | ||
285 | /** | 314 | /** |