mirror of
https://github.com/torvalds/linux.git
synced 2026-09-28 20:12:01 +02:00
ASoC: SOF: Intel: mtl: Power down DSP if it is left enabled in pre_fw_run()
It is expected that the DSP is in power down state when the firmware boot is attempted. If the DSP for any reason was left powered up then the DSP boot will fail since the ROM boot sequence might not be able to run. Make sure that the DSP is off before proceeding to boot it up. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com> Link: https://patch.msgid.link/20260730122857.5294-3-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
7b51d4c425
commit
31fd7a0bbf
|
|
@ -236,6 +236,17 @@ int mtl_enable_interrupts(struct snd_sof_dev *sdev, bool enable)
|
|||
}
|
||||
EXPORT_SYMBOL_NS(mtl_enable_interrupts, "SND_SOC_SOF_INTEL_MTL");
|
||||
|
||||
static bool mtl_dsp_is_enabled(struct snd_sof_dev *sdev)
|
||||
{
|
||||
int val;
|
||||
|
||||
val = snd_sof_dsp_read(sdev, HDA_DSP_BAR, MTL_HFDSSCS);
|
||||
if (val & MTL_HFDSSCS_CPA_MASK)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* pre fw run operations */
|
||||
static int mtl_dsp_pre_fw_run(struct snd_sof_dev *sdev)
|
||||
{
|
||||
|
|
@ -249,6 +260,18 @@ static int mtl_dsp_pre_fw_run(struct snd_sof_dev *sdev)
|
|||
u32 dsppwrsts;
|
||||
const struct sof_intel_dsp_desc *chip;
|
||||
|
||||
/* Power down the DSP if it is left enabled to ensure clean boot state */
|
||||
if (mtl_dsp_is_enabled(sdev)) {
|
||||
dev_dbg(sdev->dev, "powering down DSP first\n");
|
||||
|
||||
ret = mtl_power_down_dsp(sdev);
|
||||
if (ret < 0) {
|
||||
dev_warn(sdev->dev,
|
||||
"%s: failed to power down already-enabled DSP\n", __func__);
|
||||
/* Continue anyway to attempt recovery */
|
||||
}
|
||||
}
|
||||
|
||||
chip = get_chip_info(sdev->pdata);
|
||||
if (chip->hw_ip_version > SOF_INTEL_ACE_2_0) {
|
||||
dsppwrctl = PTL_HFPWRCTL2;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user