dmic: config: do parameter check first

Parameter verification should be done before any
expensive resource allocations happen.

Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
This commit is contained in:
Marcin Maka 2020-01-13 19:33:17 +01:00 committed by Tomasz Lauda
parent 9985b014d2
commit 8e92eb1ef1
1 changed files with 10 additions and 10 deletions

View File

@ -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;