Commit bbdf9af2 authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown

ASoC: SOF: Intel: hda: Create debugfs file to force a clean DSP boot

When IMR boot is supported on a platform it is always going to be used to
boot the DSP unless some catastrophic event happens.
There is no way for a developer to force a clean DSP boot without removing
and re-inserting the modules.

Create a 'skip_imr_boot' debugfs file which can be used to force the
next DSP boot as clean (prune) boot.
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://msgid.link/r/20240403105210.17949-2-peter.ujfalusi@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 953db8de
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
* Hardware interface for HDA DSP code loader * Hardware interface for HDA DSP code loader
*/ */
#include <linux/debugfs.h>
#include <linux/firmware.h> #include <linux/firmware.h>
#include <sound/hdaudio_ext.h> #include <sound/hdaudio_ext.h>
#include <sound/hda_register.h> #include <sound/hda_register.h>
...@@ -643,8 +644,12 @@ int hda_dsp_post_fw_run(struct snd_sof_dev *sdev) ...@@ -643,8 +644,12 @@ int hda_dsp_post_fw_run(struct snd_sof_dev *sdev)
/* Check if IMR boot is usable */ /* Check if IMR boot is usable */
if (!sof_debug_check_flag(SOF_DBG_IGNORE_D3_PERSISTENT) && if (!sof_debug_check_flag(SOF_DBG_IGNORE_D3_PERSISTENT) &&
(sdev->fw_ready.flags & SOF_IPC_INFO_D3_PERSISTENT || (sdev->fw_ready.flags & SOF_IPC_INFO_D3_PERSISTENT ||
sdev->pdata->ipc_type == SOF_IPC_TYPE_4)) sdev->pdata->ipc_type == SOF_IPC_TYPE_4)) {
hdev->imrboot_supported = true; hdev->imrboot_supported = true;
debugfs_create_bool("skip_imr_boot",
0644, sdev->debugfs_root,
&hdev->skip_imr_boot);
}
} }
hda_sdw_int_enable(sdev, true); hda_sdw_int_enable(sdev, true);
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <sound/hda_register.h> #include <sound/hda_register.h>
#include <linux/acpi.h> #include <linux/acpi.h>
#include <linux/debugfs.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/soundwire/sdw.h> #include <linux/soundwire/sdw.h>
#include <linux/soundwire/sdw_intel.h> #include <linux/soundwire/sdw_intel.h>
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
* Hardware interface for audio DSP on LunarLake. * Hardware interface for audio DSP on LunarLake.
*/ */
#include <linux/debugfs.h>
#include <linux/firmware.h> #include <linux/firmware.h>
#include <sound/hda_register.h> #include <sound/hda_register.h>
#include <sound/sof/ipc4/header.h> #include <sound/sof/ipc4/header.h>
...@@ -83,8 +84,12 @@ static int lnl_dsp_post_fw_run(struct snd_sof_dev *sdev) ...@@ -83,8 +84,12 @@ static int lnl_dsp_post_fw_run(struct snd_sof_dev *sdev)
struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata; struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata;
/* Check if IMR boot is usable */ /* Check if IMR boot is usable */
if (!sof_debug_check_flag(SOF_DBG_IGNORE_D3_PERSISTENT)) if (!sof_debug_check_flag(SOF_DBG_IGNORE_D3_PERSISTENT)) {
hda->imrboot_supported = true; hda->imrboot_supported = true;
debugfs_create_bool("skip_imr_boot",
0644, sdev->debugfs_root,
&hda->skip_imr_boot);
}
} }
return 0; return 0;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
* Hardware interface for audio DSP on Meteorlake. * Hardware interface for audio DSP on Meteorlake.
*/ */
#include <linux/debugfs.h>
#include <linux/firmware.h> #include <linux/firmware.h>
#include <sound/sof/ipc4/header.h> #include <sound/sof/ipc4/header.h>
#include <trace/events/sof_intel.h> #include <trace/events/sof_intel.h>
...@@ -294,8 +295,12 @@ int mtl_dsp_post_fw_run(struct snd_sof_dev *sdev) ...@@ -294,8 +295,12 @@ int mtl_dsp_post_fw_run(struct snd_sof_dev *sdev)
} }
/* Check if IMR boot is usable */ /* Check if IMR boot is usable */
if (!sof_debug_check_flag(SOF_DBG_IGNORE_D3_PERSISTENT)) if (!sof_debug_check_flag(SOF_DBG_IGNORE_D3_PERSISTENT)) {
hdev->imrboot_supported = true; hdev->imrboot_supported = true;
debugfs_create_bool("skip_imr_boot",
0644, sdev->debugfs_root,
&hdev->skip_imr_boot);
}
} }
hda_sdw_int_enable(sdev, true); hda_sdw_int_enable(sdev, true);
......
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