diff options
author | Peter Ujfalusi <peter.ujfalusi@linux.intel.com> | 2022-04-21 15:20:31 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2022-04-23 00:16:27 +0100 |
commit | 2a68ff846164922196c38718ad8dc216819ccd38 (patch) | |
tree | eeb0c0871d53caa1b25be1bcbabfb0a61da8d359 /sound/soc/sof/intel/hda.h | |
parent | 95fa7a62e164630981c5f10d36c2967004f74237 (diff) | |
download | lwn-2a68ff846164922196c38718ad8dc216819ccd38.tar.gz lwn-2a68ff846164922196c38718ad8dc216819ccd38.zip |
ASoC: SOF: Intel: hda: Revisit IMR boot sequence
The sequence for IMR boot is essentially the same as normal boot with the
difference that instead of DMA from host the firmware is loaded from IMR.
Re-structure the code to use the existing sequence and also add fallback
handling in case the IMR boot fails.
Introduce a new flag to make the IMR boot support check simpler.
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20220421202031.1548362-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/sof/intel/hda.h')
-rw-r--r-- | sound/soc/sof/intel/hda.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/soc/sof/intel/hda.h b/sound/soc/sof/intel/hda.h index 7827ea4fdacb..6e05c7759480 100644 --- a/sound/soc/sof/intel/hda.h +++ b/sound/soc/sof/intel/hda.h @@ -210,7 +210,9 @@ #define HDA_DSP_ROM_USER_EXCEPTION 0xBEEF0000 #define HDA_DSP_ROM_UNEXPECTED_RESET 0xDECAF000 #define HDA_DSP_ROM_NULL_FW_ENTRY 0x4c4c4e55 -#define HDA_DSP_IPC_PURGE_FW 0x01004000 + +#define HDA_DSP_ROM_IPC_CONTROL 0x01000000 +#define HDA_DSP_ROM_IPC_PURGE_FW 0x00004000 /* various timeout values */ #define HDA_DSP_PU_TIMEOUT 50 @@ -416,6 +418,8 @@ enum sof_hda_D0_substate { /* represents DSP HDA controller frontend - i.e. host facing control */ struct sof_intel_hda_dev { + bool imrboot_supported; + int boot_iteration; struct hda_bus hbus; |