Commit 5e4a27fd authored by Pan Xiuli's avatar Pan Xiuli Committed by Mark Brown

ASoC: SOF: IPC: add ipc dump function

Dump IPC status when IPC timed out. IPC status is platform specific and
need bind to plaform.
Signed-off-by: default avatarPan Xiuli <xiuli.pan@linux.intel.com>
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent ed3baacd
...@@ -207,6 +207,7 @@ static int tx_wait_done(struct snd_sof_ipc *ipc, struct snd_sof_ipc_msg *msg, ...@@ -207,6 +207,7 @@ static int tx_wait_done(struct snd_sof_ipc *ipc, struct snd_sof_ipc_msg *msg,
dev_err(sdev->dev, "error: ipc timed out for 0x%x size %d\n", dev_err(sdev->dev, "error: ipc timed out for 0x%x size %d\n",
hdr->cmd, hdr->size); hdr->cmd, hdr->size);
snd_sof_dsp_dbg_dump(ipc->sdev, SOF_DBG_REGS | SOF_DBG_MBOX); snd_sof_dsp_dbg_dump(ipc->sdev, SOF_DBG_REGS | SOF_DBG_MBOX);
snd_sof_ipc_dump(ipc->sdev);
snd_sof_trace_notify_for_error(ipc->sdev); snd_sof_trace_notify_for_error(ipc->sdev);
ret = -ETIMEDOUT; ret = -ETIMEDOUT;
} else { } else {
......
...@@ -155,6 +155,12 @@ static inline void snd_sof_dsp_dbg_dump(struct snd_sof_dev *sdev, u32 flags) ...@@ -155,6 +155,12 @@ static inline void snd_sof_dsp_dbg_dump(struct snd_sof_dev *sdev, u32 flags)
return sof_ops(sdev)->dbg_dump(sdev, flags); return sof_ops(sdev)->dbg_dump(sdev, flags);
} }
static inline void snd_sof_ipc_dump(struct snd_sof_dev *sdev)
{
if (sof_ops(sdev)->ipc_dump)
return sof_ops(sdev)->ipc_dump(sdev);
}
/* register IO */ /* register IO */
static inline void snd_sof_dsp_write(struct snd_sof_dev *sdev, u32 bar, static inline void snd_sof_dsp_write(struct snd_sof_dev *sdev, u32 bar,
u32 offset, u32 value) u32 offset, u32 value)
......
...@@ -176,6 +176,7 @@ struct snd_sof_dsp_ops { ...@@ -176,6 +176,7 @@ struct snd_sof_dsp_ops {
int debug_map_count; /* optional */ int debug_map_count; /* optional */
void (*dbg_dump)(struct snd_sof_dev *sof_dev, void (*dbg_dump)(struct snd_sof_dev *sof_dev,
u32 flags); /* optional */ u32 flags); /* optional */
void (*ipc_dump)(struct snd_sof_dev *sof_dev); /* optional */
/* host DMA trace initialization */ /* host DMA trace initialization */
int (*trace_init)(struct snd_sof_dev *sdev, int (*trace_init)(struct snd_sof_dev *sdev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment