ASoC: SOF: amd: add module parameter for firmware debug
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>
Wed, 23 Aug 2023 07:33:35 +0000 (13:03 +0530)
committerMark Brown <broonie@kernel.org>
Wed, 23 Aug 2023 12:27:15 +0000 (13:27 +0100)
Add module parameter for firmware debug. If firmware debug
flag is enabled, clear the fusion stall bit which is required
for enabling firmware debugging through JTAG.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://lore.kernel.org/r/20230823073340.2829821-3-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/amd/acp-loader.c
sound/soc/sof/amd/acp.c
sound/soc/sof/amd/acp.h

index a63c00b..a427673 100644 (file)
@@ -207,6 +207,7 @@ EXPORT_SYMBOL_NS(acp_dsp_pre_fw_run, SND_SOC_SOF_AMD_COMMON);
 
 int acp_sof_dsp_run(struct snd_sof_dev *sdev)
 {
+       struct acp_dev_data *adata = sdev->pdata->hw_pdata;
        const struct sof_amd_acp_desc *desc = get_chip_info(sdev->pdata);
        int val;
 
@@ -215,7 +216,7 @@ int acp_sof_dsp_run(struct snd_sof_dev *sdev)
        dev_dbg(sdev->dev, "ACP_DSP0_RUNSTALL : 0x%0x\n", val);
 
        /* Some platforms won't support fusion DSP,keep offset zero for no support */
-       if (desc->fusion_dsp_offset) {
+       if (desc->fusion_dsp_offset && adata->enable_fw_debug) {
                snd_sof_dsp_write(sdev, ACP_DSP_BAR, desc->fusion_dsp_offset, ACP_DSP_RUN);
                val = snd_sof_dsp_read(sdev, ACP_DSP_BAR, desc->fusion_dsp_offset);
                dev_dbg(sdev->dev, "ACP_DSP0_FUSION_RUNSTALL : 0x%0x\n", val);
index 651b563..ebc985e 100644 (file)
 
 #define SECURED_FIRMWARE 1
 
+static bool enable_fw_debug;
+module_param(enable_fw_debug, bool, 0444);
+MODULE_PARM_DESC(enable_fw_debug, "Enable Firmware debug");
+
 const struct dmi_system_id acp_sof_quirk_table[] = {
        {
                /* Valve Jupiter device */
@@ -558,6 +562,7 @@ int amd_sof_acp_probe(struct snd_sof_dev *sdev)
                dev_dbg(sdev->dev, "fw_code_bin:%s, fw_data_bin:%s\n", adata->fw_code_bin,
                        adata->fw_data_bin);
        }
+       adata->enable_fw_debug = enable_fw_debug;
        acp_memory_init(sdev);
 
        acp_dsp_stream_init(sdev);
index 97bcada..4dcceb7 100644 (file)
@@ -205,6 +205,7 @@ struct acp_dev_data {
        struct acp_dsp_stream *dtrace_stream;
        struct pci_dev *smn_dev;
        struct acp_dsp_stream *probe_stream;
+       bool enable_fw_debug;
 };
 
 void memcpy_to_scratch(struct snd_sof_dev *sdev, u32 offset, unsigned int *src, size_t bytes);