diff --git a/src/drivers/intel/cavs/dmic.c b/src/drivers/intel/cavs/dmic.c index b3e509474..a3a9c3557 100644 --- a/src/drivers/intel/cavs/dmic.c +++ b/src/drivers/intel/cavs/dmic.c @@ -1097,6 +1097,16 @@ static int dmic_set_config(struct dai *dai, struct sof_ipc_dai_config *config) return -EINVAL; } + if (di >= DMIC_HW_FIFOS) { + trace_error_dmic_id(dai, "dmic_set_config() error: dai->index exceeds number of FIFOs"); + return -EINVAL; + } + + if (config->dmic.num_pdm_active > DMIC_HW_CONTROLLERS) { + trace_error_dmic_id(dai, "dmic_set_config() error: the requested PDM controllers count exceeds platform capability"); + return -EINVAL; + } + step_db = LOGRAMP_CONST_TERM / unmute_ramp_time_ms; dmic->gain_coef = db2lin_fixed(step_db); trace_dmic_id(dai, "dmic_set_config(): unmute_ramp_time_ms = %d", @@ -1123,11 +1133,6 @@ static int dmic_set_config(struct dai *dai, struct sof_ipc_dai_config *config) ((uint8_t *)dmic_prm[i - 1] + size); } - if (di >= DMIC_HW_FIFOS) { - trace_error_dmic_id(dai, "dmic_set_config() error: dai->index exceeds number of FIFOs"); - return -EINVAL; - } - /* Copy the new DMIC params to persistent. The last request * determines the parameters. */ @@ -1135,11 +1140,6 @@ static int dmic_set_config(struct dai *dai, struct sof_ipc_dai_config *config) sizeof(struct sof_ipc_dai_dmic_params)); assert(!ret); - if (config->dmic.num_pdm_active > DMIC_HW_CONTROLLERS) { - trace_error_dmic_id(dai, "dmic_set_config() error: the requested PDM controllers count exceeds platform capability"); - return -EINVAL; - } - /* copy the pdm controller params from ipc */ for (i = 0; i < DMIC_HW_CONTROLLERS; i++) { dmic_prm[di]->pdm[i].id = i;