Drivers: DAI: Intel: Move ACE DMIC start reset clear to earlier

The unreset of ACE PDM controllers is moved to beginning of
void dai_dmic_start() and done side-by-side. This change is done
for adhering to recommended hardware initialization flow to
avoid intermittent failures on ARL-S.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This commit is contained in:
Seppo Ingalsuo 2024-06-14 12:40:21 +03:00 committed by Alberto Escolar
parent 78920e839e
commit 1198c7ec29

View file

@ -553,6 +553,12 @@ static void dai_dmic_start(struct dai_intel_dmic *dmic)
/* enable port */
key = k_spin_lock(&dmic->lock);
#ifdef CONFIG_SOC_SERIES_INTEL_ADSP_ACE
for (i = 0; i < CONFIG_DAI_DMIC_HW_CONTROLLERS; i++)
dai_dmic_update_bits(dmic, dmic_base[i] + CIC_CONTROL, CIC_CONTROL_SOFT_RESET, 0);
#endif
dmic->startcount = 0;
/* Compute unmute ramp gain update coefficient. */
@ -566,11 +572,6 @@ static void dai_dmic_start(struct dai_intel_dmic *dmic)
dai_dmic_start_fifo_packers(dmic, dmic->dai_config_params.dai_index);
for (i = 0; i < CONFIG_DAI_DMIC_HW_CONTROLLERS; i++) {
#ifdef CONFIG_SOC_SERIES_INTEL_ADSP_ACE
dai_dmic_update_bits(dmic, dmic_base[i] + CIC_CONTROL,
CIC_CONTROL_SOFT_RESET, 0);
#endif
mic_a = dmic->enable[i] & 1;
mic_b = (dmic->enable[i] & 2) >> 1;
start_fir = dmic->enable[i] > 0;