ASoC: SOF: Intel: APL: add ipc dump function
authorPan Xiuli <xiuli.pan@linux.intel.com>
Tue, 30 Apr 2019 23:09:33 +0000 (18:09 -0500)
committerMark Brown <broonie@kernel.org>
Fri, 3 May 2019 06:02:43 +0000 (15:02 +0900)
Add IPC dump function for APL plaform

Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/apl.c
sound/soc/sof/intel/hda.c
sound/soc/sof/intel/hda.h

index d1fb2f2..f215d80 100644 (file)
@@ -55,6 +55,7 @@ const struct snd_sof_dsp_ops sof_apl_ops = {
        .debug_map      = apl_dsp_debugfs,
        .debug_map_count        = ARRAY_SIZE(apl_dsp_debugfs),
        .dbg_dump       = hda_dsp_dump,
+       .ipc_dump       = hda_ipc_dump,
 
        /* stream callbacks */
        .pcm_open       = hda_dsp_pcm_open,
index 84baf27..7e3980a 100644 (file)
@@ -179,6 +179,24 @@ void hda_dsp_dump(struct snd_sof_dev *sdev, u32 flags)
        }
 }
 
+void hda_ipc_dump(struct snd_sof_dev *sdev)
+{
+       u32 hipcie;
+       u32 hipct;
+       u32 hipcctl;
+
+       /* read IPC status */
+       hipcie = snd_sof_dsp_read(sdev, HDA_DSP_BAR, HDA_DSP_REG_HIPCIE);
+       hipct = snd_sof_dsp_read(sdev, HDA_DSP_BAR, HDA_DSP_REG_HIPCT);
+       hipcctl = snd_sof_dsp_read(sdev, HDA_DSP_BAR, HDA_DSP_REG_HIPCCTL);
+
+       /* dump the IPC regs */
+       /* TODO: parse the raw msg */
+       dev_err(sdev->dev,
+               "error: host status 0x%8.8x dsp status 0x%8.8x mask 0x%8.8x\n",
+               hipcie, hipct, hipcctl);
+}
+
 static int hda_init(struct snd_sof_dev *sdev)
 {
        struct hda_bus *hbus;
index 4b00e5d..92d45c4 100644 (file)
@@ -447,6 +447,7 @@ int hda_dsp_runtime_resume(struct snd_sof_dev *sdev);
 void hda_dsp_set_hw_params_upon_resume(struct snd_sof_dev *sdev);
 void hda_dsp_dump_skl(struct snd_sof_dev *sdev, u32 flags);
 void hda_dsp_dump(struct snd_sof_dev *sdev, u32 flags);
+void hda_ipc_dump(struct snd_sof_dev *sdev);
 
 /*
  * DSP PCM Operations.