|
@@ -183,7 +183,7 @@ struct sst_hsw_ipc_fw_ready {
|
|
u32 inbox_size;
|
|
u32 inbox_size;
|
|
u32 outbox_size;
|
|
u32 outbox_size;
|
|
u32 fw_info_size;
|
|
u32 fw_info_size;
|
|
- u8 fw_info[1];
|
|
|
|
|
|
+ u8 fw_info[IPC_MAX_MAILBOX_BYTES - 5 * sizeof(u32)];
|
|
} __attribute__((packed));
|
|
} __attribute__((packed));
|
|
|
|
|
|
struct ipc_message {
|
|
struct ipc_message {
|
|
@@ -569,6 +569,9 @@ static void hsw_fw_ready(struct sst_hsw *hsw, u32 header)
|
|
{
|
|
{
|
|
struct sst_hsw_ipc_fw_ready fw_ready;
|
|
struct sst_hsw_ipc_fw_ready fw_ready;
|
|
u32 offset;
|
|
u32 offset;
|
|
|
|
+ u8 fw_info[IPC_MAX_MAILBOX_BYTES - 5 * sizeof(u32)];
|
|
|
|
+ char *tmp[5], *pinfo;
|
|
|
|
+ int i = 0;
|
|
|
|
|
|
offset = (header & 0x1FFFFFFF) << 3;
|
|
offset = (header & 0x1FFFFFFF) << 3;
|
|
|
|
|
|
@@ -589,6 +592,19 @@ static void hsw_fw_ready(struct sst_hsw *hsw, u32 header)
|
|
fw_ready.inbox_offset, fw_ready.inbox_size);
|
|
fw_ready.inbox_offset, fw_ready.inbox_size);
|
|
dev_dbg(hsw->dev, " mailbox downstream 0x%x - size 0x%x\n",
|
|
dev_dbg(hsw->dev, " mailbox downstream 0x%x - size 0x%x\n",
|
|
fw_ready.outbox_offset, fw_ready.outbox_size);
|
|
fw_ready.outbox_offset, fw_ready.outbox_size);
|
|
|
|
+ if (fw_ready.fw_info_size < sizeof(fw_ready.fw_info)) {
|
|
|
|
+ fw_ready.fw_info[fw_ready.fw_info_size] = 0;
|
|
|
|
+ dev_dbg(hsw->dev, " Firmware info: %s \n", fw_ready.fw_info);
|
|
|
|
+
|
|
|
|
+ /* log the FW version info got from the mailbox here. */
|
|
|
|
+ memcpy(fw_info, fw_ready.fw_info, fw_ready.fw_info_size);
|
|
|
|
+ pinfo = &fw_info[0];
|
|
|
|
+ for (i = 0; i < sizeof(tmp) / sizeof(char *); i++)
|
|
|
|
+ tmp[i] = strsep(&pinfo, " ");
|
|
|
|
+ dev_info(hsw->dev, "FW loaded, mailbox readback FW info: type %s, - "
|
|
|
|
+ "version: %s.%s, build %s, source commit id: %s\n",
|
|
|
|
+ tmp[0], tmp[1], tmp[2], tmp[3], tmp[4]);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
static void hsw_notification_work(struct work_struct *work)
|
|
static void hsw_notification_work(struct work_struct *work)
|
|
@@ -1775,8 +1791,6 @@ int sst_hsw_dsp_init(struct device *dev, struct sst_pdata *pdata)
|
|
|
|
|
|
/* get the FW version */
|
|
/* get the FW version */
|
|
sst_hsw_fw_get_version(hsw, &version);
|
|
sst_hsw_fw_get_version(hsw, &version);
|
|
- dev_info(hsw->dev, "FW loaded: type %d - version: %d.%d build %d\n",
|
|
|
|
- version.type, version.major, version.minor, version.build);
|
|
|
|
|
|
|
|
/* get the globalmixer */
|
|
/* get the globalmixer */
|
|
ret = sst_hsw_mixer_get_info(hsw);
|
|
ret = sst_hsw_mixer_get_info(hsw);
|