mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 15:43:59 +08:00
ASoC: wm_adsp: Move check for control existence
Checking earlier in the function if a control already exists avoids superfluous string construction and also prepares for future refactoring. Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-3-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
d07a6d454f
commit
6477960755
@ -1422,6 +1422,19 @@ static int wm_adsp_create_control(struct wm_adsp *dsp,
|
||||
const char *region_name;
|
||||
int ret;
|
||||
|
||||
list_for_each_entry(ctl, &dsp->ctl_list, list) {
|
||||
if (ctl->fw_name == wm_adsp_fw_text[dsp->fw] &&
|
||||
ctl->alg_region.alg == alg_region->alg &&
|
||||
ctl->alg_region.type == alg_region->type) {
|
||||
if ((!subname && !ctl->subname) ||
|
||||
(subname && !strncmp(ctl->subname, subname, ctl->subname_len))) {
|
||||
if (!ctl->enabled)
|
||||
ctl->enabled = 1;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
region_name = wm_adsp_mem_region_name(alg_region->type);
|
||||
if (!region_name) {
|
||||
adsp_err(dsp, "Unknown region type: %d\n", alg_region->type);
|
||||
@ -1462,14 +1475,6 @@ static int wm_adsp_create_control(struct wm_adsp *dsp,
|
||||
" %.*s", subname_len - skip, subname + skip);
|
||||
}
|
||||
|
||||
list_for_each_entry(ctl, &dsp->ctl_list, list) {
|
||||
if (!strcmp(ctl->name, name)) {
|
||||
if (!ctl->enabled)
|
||||
ctl->enabled = 1;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
ctl = kzalloc(sizeof(*ctl), GFP_KERNEL);
|
||||
if (!ctl)
|
||||
return -ENOMEM;
|
||||
|
Loading…
Reference in New Issue
Block a user