aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/misc/mei/bus-fixup.c3
-rw-r--r--drivers/misc/mei/debugfs.c2
-rw-r--r--drivers/misc/mei/hbm.c4
-rw-r--r--drivers/misc/mei/hw.h6
-rw-r--r--drivers/misc/mei/mei_dev.h2
5 files changed, 17 insertions, 0 deletions
diff --git a/drivers/misc/mei/bus-fixup.c b/drivers/misc/mei/bus-fixup.c
index 18e05ca7584f..3600c9993a98 100644
--- a/drivers/misc/mei/bus-fixup.c
+++ b/drivers/misc/mei/bus-fixup.c
@@ -152,6 +152,9 @@ static void mei_mkhi_fix(struct mei_cl_device *cldev)
152{ 152{
153 int ret; 153 int ret;
154 154
155 if (!cldev->bus->hbm_f_os_supported)
156 return;
157
155 ret = mei_cldev_enable(cldev); 158 ret = mei_cldev_enable(cldev);
156 if (ret) 159 if (ret)
157 return; 160 return;
diff --git a/drivers/misc/mei/debugfs.c b/drivers/misc/mei/debugfs.c
index c6c051b52f55..c6217a4993ad 100644
--- a/drivers/misc/mei/debugfs.c
+++ b/drivers/misc/mei/debugfs.c
@@ -180,6 +180,8 @@ static ssize_t mei_dbgfs_read_devstate(struct file *fp, char __user *ubuf,
180 dev->hbm_f_ev_supported); 180 dev->hbm_f_ev_supported);
181 pos += scnprintf(buf + pos, bufsz - pos, "\tFA: %01d\n", 181 pos += scnprintf(buf + pos, bufsz - pos, "\tFA: %01d\n",
182 dev->hbm_f_fa_supported); 182 dev->hbm_f_fa_supported);
183 pos += scnprintf(buf + pos, bufsz - pos, "\tOS: %01d\n",
184 dev->hbm_f_os_supported);
183 } 185 }
184 186
185 pos += scnprintf(buf + pos, bufsz - pos, "pg: %s, %s\n", 187 pos += scnprintf(buf + pos, bufsz - pos, "pg: %s, %s\n",
diff --git a/drivers/misc/mei/hbm.c b/drivers/misc/mei/hbm.c
index dd7f15a65eed..25b4a1ba522d 100644
--- a/drivers/misc/mei/hbm.c
+++ b/drivers/misc/mei/hbm.c
@@ -989,6 +989,10 @@ static void mei_hbm_config_features(struct mei_device *dev)
989 /* Fixed Address Client Support */ 989 /* Fixed Address Client Support */
990 if (dev->version.major_version >= HBM_MAJOR_VERSION_FA) 990 if (dev->version.major_version >= HBM_MAJOR_VERSION_FA)
991 dev->hbm_f_fa_supported = 1; 991 dev->hbm_f_fa_supported = 1;
992
993 /* OS ver message Support */
994 if (dev->version.major_version >= HBM_MAJOR_VERSION_OS)
995 dev->hbm_f_os_supported = 1;
992} 996}
993 997
994/** 998/**
diff --git a/drivers/misc/mei/hw.h b/drivers/misc/mei/hw.h
index 9daf3f9aed25..e1e4d47d4d7d 100644
--- a/drivers/misc/mei/hw.h
+++ b/drivers/misc/mei/hw.h
@@ -76,6 +76,12 @@
76#define HBM_MINOR_VERSION_FA 0 76#define HBM_MINOR_VERSION_FA 0
77#define HBM_MAJOR_VERSION_FA 2 77#define HBM_MAJOR_VERSION_FA 2
78 78
79/*
80 * MEI version with OS ver message support
81 */
82#define HBM_MINOR_VERSION_OS 0
83#define HBM_MAJOR_VERSION_OS 2
84
79/* Host bus message command opcode */ 85/* Host bus message command opcode */
80#define MEI_HBM_CMD_OP_MSK 0x7f 86#define MEI_HBM_CMD_OP_MSK 0x7f
81/* Host bus message command RESPONSE */ 87/* Host bus message command RESPONSE */
diff --git a/drivers/misc/mei/mei_dev.h b/drivers/misc/mei/mei_dev.h
index 699693cd8c59..8dadb98662a9 100644
--- a/drivers/misc/mei/mei_dev.h
+++ b/drivers/misc/mei/mei_dev.h
@@ -406,6 +406,7 @@ const char *mei_pg_state_str(enum mei_pg_state state);
406 * @hbm_f_ev_supported : hbm feature event notification 406 * @hbm_f_ev_supported : hbm feature event notification
407 * @hbm_f_fa_supported : hbm feature fixed address client 407 * @hbm_f_fa_supported : hbm feature fixed address client
408 * @hbm_f_ie_supported : hbm feature immediate reply to enum request 408 * @hbm_f_ie_supported : hbm feature immediate reply to enum request
409 * @hbm_f_os_supported : hbm feature support OS ver message
409 * 410 *
410 * @me_clients_rwsem: rw lock over me_clients list 411 * @me_clients_rwsem: rw lock over me_clients list
411 * @me_clients : list of FW clients 412 * @me_clients : list of FW clients
@@ -487,6 +488,7 @@ struct mei_device {
487 unsigned int hbm_f_ev_supported:1; 488 unsigned int hbm_f_ev_supported:1;
488 unsigned int hbm_f_fa_supported:1; 489 unsigned int hbm_f_fa_supported:1;
489 unsigned int hbm_f_ie_supported:1; 490 unsigned int hbm_f_ie_supported:1;
491 unsigned int hbm_f_os_supported:1;
490 492
491 struct rw_semaphore me_clients_rwsem; 493 struct rw_semaphore me_clients_rwsem;
492 struct list_head me_clients; 494 struct list_head me_clients;