]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: SOF: core: Add debug module parameters to set IPC and boot timeout
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Wed, 23 Oct 2024 11:06:09 +0000 (14:06 +0300)
committerMark Brown <broonie@kernel.org>
Wed, 23 Oct 2024 11:46:23 +0000 (12:46 +0100)
Add two module parameters to override the IPC and boot timeout values if
the SOF stack is compiled with debug enabled to allow experimenting with
different timeout values without the need to recompile the kernel.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://patch.msgid.link/20241023110610.6141-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/core.c

index 83fe0401baf867b071a7449d71d98c207506a15c..79bbbcca9c607351cdc80e0d0fe2b0cbef86349f 100644 (file)
@@ -24,6 +24,17 @@ static int sof_core_debug =  IS_ENABLED(CONFIG_SND_SOC_SOF_DEBUG_ENABLE_FIRMWARE
 module_param_named(sof_debug, sof_core_debug, int, 0444);
 MODULE_PARM_DESC(sof_debug, "SOF core debug options (0x0 all off)");
 
+#if IS_ENABLED(CONFIG_SND_SOC_SOF_DEBUG)
+static unsigned int sof_ipc_timeout_ms;
+static unsigned int sof_boot_timeout_ms;
+module_param_named(ipc_timeout, sof_ipc_timeout_ms, uint, 0444);
+MODULE_PARM_DESC(ipc_timeout,
+                "Set the IPC timeout value in ms (0 to use the platform default)");
+module_param_named(boot_timeout, sof_boot_timeout_ms, uint, 0444);
+MODULE_PARM_DESC(boot_timeout,
+                "Set the DSP boot timeout value in ms (0 to use the platform default)");
+#endif
+
 /* SOF defaults if not provided by the platform in ms */
 #define TIMEOUT_DEFAULT_IPC_MS  500
 #define TIMEOUT_DEFAULT_BOOT_MS 2000
@@ -632,6 +643,15 @@ int snd_sof_device_probe(struct device *dev, struct snd_sof_pdata *plat_data)
        else
                sdev->boot_timeout = plat_data->desc->boot_timeout;
 
+#if IS_ENABLED(CONFIG_SND_SOC_SOF_DEBUG)
+       /* Override the timeout values with module parameter, if set */
+       if (sof_ipc_timeout_ms)
+               sdev->ipc_timeout = sof_ipc_timeout_ms;
+
+       if (sof_boot_timeout_ms)
+               sdev->boot_timeout = sof_boot_timeout_ms;
+#endif
+
        sof_set_fw_state(sdev, SOF_FW_BOOT_NOT_STARTED);
 
        /*