Message ID | 1402042211-13842-1-git-send-email-jarkko.nikula@linux.intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 4131eceb4a5e471f5a866ee10e680f0081376e3b |
Headers | show |
On Fri, Jun 06, 2014 at 11:10:11AM +0300, Jarkko Nikula wrote: > DSP initialization complete message IPC_IA_FW_INIT_CMPLT is a large message > carrying firmware details in mailbox. Read and show those details during > init in order to be able to get that information to QA reports. Applied, thanks. Is it worth putting these into sysfs file so we can get the data read out with alsa-info.sh?
On 06/06/2014 04:13 PM, Mark Brown wrote: > On Fri, Jun 06, 2014 at 11:10:11AM +0300, Jarkko Nikula wrote: >> DSP initialization complete message IPC_IA_FW_INIT_CMPLT is a large message >> carrying firmware details in mailbox. Read and show those details during >> init in order to be able to get that information to QA reports. > Applied, thanks. Is it worth putting these into sysfs file so we can > get the data read out with alsa-info.sh? Not a bad idea. I'm not going to be implementing it instantly but should such a file be one generic node listing all the sound components that use fw and their info or a node with fixed name under each device's directory? Latter one sounds a bit simpler in kernel but I'm thinking which way makes most sense for utilities.
diff --git a/sound/soc/intel/sst-baytrail-ipc.c b/sound/soc/intel/sst-baytrail-ipc.c index d207b22ea330..67673a2c0f41 100644 --- a/sound/soc/intel/sst-baytrail-ipc.c +++ b/sound/soc/intel/sst-baytrail-ipc.c @@ -122,6 +122,26 @@ struct sst_byt_tstamp { u32 channel_peak[8]; } __packed; +struct sst_byt_fw_version { + u8 build; + u8 minor; + u8 major; + u8 type; +} __packed; + +struct sst_byt_fw_build_info { + u8 date[16]; + u8 time[16]; +} __packed; + +struct sst_byt_fw_init { + struct sst_byt_fw_version fw_version; + struct sst_byt_fw_build_info build_info; + u16 result; + u8 module_id; + u8 debug_info; +} __packed; + /* driver internal IPC message structure */ struct ipc_message { struct list_head list; @@ -868,6 +888,7 @@ int sst_byt_dsp_init(struct device *dev, struct sst_pdata *pdata) { struct sst_byt *byt; struct sst_fw *byt_sst_fw; + struct sst_byt_fw_init init; int err; dev_dbg(dev, "initialising Byt DSP IPC\n"); @@ -929,6 +950,15 @@ int sst_byt_dsp_init(struct device *dev, struct sst_pdata *pdata) goto boot_err; } + /* show firmware information */ + sst_dsp_inbox_read(byt->dsp, &init, sizeof(init)); + dev_info(byt->dev, "FW version: %02x.%02x.%02x.%02x\n", + init.fw_version.major, init.fw_version.minor, + init.fw_version.build, init.fw_version.type); + dev_info(byt->dev, "Build type: %x\n", init.fw_version.type); + dev_info(byt->dev, "Build date: %s %s\n", + init.build_info.date, init.build_info.time); + pdata->dsp = byt; byt->fw = byt_sst_fw;
DSP initialization complete message IPC_IA_FW_INIT_CMPLT is a large message carrying firmware details in mailbox. Read and show those details during init in order to be able to get that information to QA reports. Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> --- sound/soc/intel/sst-baytrail-ipc.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)