mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
ASoC: wm_adsp: Fix control name parsing for multi-fw
[ Upstream commit a8939f2e13 ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
61e97f32fd
commit
4b877845e3
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user