diff options
author | James Schulman <james.schulman@cirrus.com> | 2021-01-15 23:11:05 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2021-01-18 17:02:47 +0300 |
commit | a8939f2e138e418c2b059056ff5b501eaf2eae54 (patch) | |
tree | 9808d43a233e1ca9835999bd7c5dd081b9118650 /sound/soc/codecs/wm_adsp.c | |
parent | 7505c06dabb5e814bda610c8d83338544f15db45 (diff) | |
download | linux-a8939f2e138e418c2b059056ff5b501eaf2eae54.tar.xz |
ASoC: wm_adsp: Fix control name parsing for multi-fw
When switching between firmware types, the wrong control
can be selected when requesting control in kernel API.
Use the currently selected DSP firwmare type to select
the proper mixer control.
Signed-off-by: James Schulman <james.schulman@cirrus.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20210115201105.14075-1-james.schulman@cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/wm_adsp.c')
-rw-r--r-- | sound/soc/codecs/wm_adsp.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index dec8716aa8ef..985b2dcecf13 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -2031,11 +2031,14 @@ static struct wm_coeff_ctl *wm_adsp_get_ctl(struct wm_adsp *dsp, unsigned int alg) { struct wm_coeff_ctl *pos, *rslt = NULL; + const char *fw_txt = wm_adsp_fw_text[dsp->fw]; list_for_each_entry(pos, &dsp->ctl_list, list) { if (!pos->subname) continue; if (strncmp(pos->subname, name, pos->subname_len) == 0 && + strncmp(pos->fw_name, fw_txt, + SNDRV_CTL_ELEM_ID_NAME_MAXLEN) == 0 && pos->alg_region.alg == alg && pos->alg_region.type == type) { rslt = pos; |