mei: read and print all six FW status registers
ME devices prior to PCH8 (Lynx Point) have two FW status registers, on PCH8 and newer excluding txe there are six FW status registers. Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
e88281edd4
commit
edca5ea3ff
@@ -54,6 +54,35 @@ const char *mei_pg_state_str(enum mei_pg_state state)
|
||||
#undef MEI_PG_STATE
|
||||
}
|
||||
|
||||
/**
|
||||
* mei_fw_status2str - convert fw status registers to printable string
|
||||
*
|
||||
* @fw_status: firmware status
|
||||
* @buf: string buffer at minimal size MEI_FW_STATUS_STR_SZ
|
||||
* @len: buffer len must be >= MEI_FW_STATUS_STR_SZ
|
||||
*
|
||||
* Return: number of bytes written or -EINVAL if buffer is to small
|
||||
*/
|
||||
ssize_t mei_fw_status2str(struct mei_fw_status *fw_status,
|
||||
char *buf, size_t len)
|
||||
{
|
||||
ssize_t cnt = 0;
|
||||
int i;
|
||||
|
||||
buf[0] = '\0';
|
||||
|
||||
if (len < MEI_FW_STATUS_STR_SZ)
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 0; i < fw_status->count; i++)
|
||||
cnt += scnprintf(buf + cnt, len - cnt, "%08X ",
|
||||
fw_status->status[i]);
|
||||
|
||||
/* drop last space */
|
||||
buf[cnt] = '\0';
|
||||
return cnt;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mei_fw_status2str);
|
||||
|
||||
/**
|
||||
* mei_cancel_work - Cancel mei background jobs
|
||||
@@ -86,12 +115,11 @@ int mei_reset(struct mei_device *dev)
|
||||
state != MEI_DEV_DISABLED &&
|
||||
state != MEI_DEV_POWER_DOWN &&
|
||||
state != MEI_DEV_POWER_UP) {
|
||||
struct mei_fw_status fw_status;
|
||||
char fw_sts_str[MEI_FW_STATUS_STR_SZ];
|
||||
|
||||
mei_fw_status(dev, &fw_status);
|
||||
dev_warn(dev->dev,
|
||||
"unexpected reset: dev_state = %s " FW_STS_FMT "\n",
|
||||
mei_dev_state_str(state), FW_STS_PRM(fw_status));
|
||||
mei_fw_status_str(dev, fw_sts_str, MEI_FW_STATUS_STR_SZ);
|
||||
dev_warn(dev->dev, "unexpected reset: dev_state = %s fw status = %s\n",
|
||||
mei_dev_state_str(state), fw_sts_str);
|
||||
}
|
||||
|
||||
/* we're already in reset, cancel the init timer
|
||||
|
Reference in New Issue
Block a user