diff options
author | Kai Vehmanen <kai.vehmanen@linux.intel.com> | 2019-06-03 11:18:15 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-06-03 17:56:38 +0100 |
commit | 14104eb6a351a5bad21fdd2cf05ca46ad5e5beab (patch) | |
tree | 8318963b9a795666a7801e09f9827a1da3c0ff53 /sound/soc/sof/intel/hda.c | |
parent | d6947bb234dcc86e878d502516d0fb9d635aa2ae (diff) | |
download | linux-14104eb6a351a5bad21fdd2cf05ca46ad5e5beab.tar.gz linux-14104eb6a351a5bad21fdd2cf05ca46ad5e5beab.tar.bz2 linux-14104eb6a351a5bad21fdd2cf05ca46ad5e5beab.zip |
ASoC: SOF: fix DSP oops definitions in FW ABI
The definitions for DSP oops structures were not aligned
correctly to current FW ABI version 3.6.0, leading to
invalid data being printed out to debug logs. Fix the structs
and update related platform code accordingly.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/sof/intel/hda.c')
-rw-r--r-- | sound/soc/sof/intel/hda.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c index e47f03dc62f0..8f5c68861bbc 100644 --- a/sound/soc/sof/intel/hda.c +++ b/sound/soc/sof/intel/hda.c @@ -108,17 +108,21 @@ static void hda_dsp_get_registers(struct snd_sof_dev *sdev, struct sof_ipc_panic_info *panic_info, u32 *stack, size_t stack_words) { + u32 offset = sdev->dsp_oops_offset; + /* first read registers */ - sof_block_read(sdev, sdev->mmio_bar, sdev->dsp_oops_offset, xoops, - sizeof(*xoops)); + sof_mailbox_read(sdev, offset, xoops, sizeof(*xoops)); + + /* note: variable AR register array is not read */ /* then get panic info */ - sof_block_read(sdev, sdev->mmio_bar, sdev->dsp_oops_offset + - sizeof(*xoops), panic_info, sizeof(*panic_info)); + offset += xoops->arch_hdr.totalsize; + sof_block_read(sdev, sdev->mmio_bar, offset, + panic_info, sizeof(*panic_info)); /* then get the stack */ - sof_block_read(sdev, sdev->mmio_bar, sdev->dsp_oops_offset + - sizeof(*xoops) + sizeof(*panic_info), stack, + offset += sizeof(*panic_info); + sof_block_read(sdev, sdev->mmio_bar, offset, stack, stack_words * sizeof(u32)); } |