mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 15:41:36 +00:00
ASoC: SOF: enable dual control for pga
Currently sof pga element supports only 1 kcontrol and you can't create for example a mixer element with combined volume slider and mute switch. So enable sof pga to have more than 1 kcontrol associated with it. Also check for possible NULL tlv pointer as switch element might not have it. Signed-off-by: Jaska Uimonen <jaska.uimonen@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20191008164443.1358-8-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
f3416e7144
commit
a68c6b6cc7
@ -1580,7 +1580,7 @@ static int sof_widget_load_pga(struct snd_soc_component *scomp, int index,
|
||||
if (!volume)
|
||||
return -ENOMEM;
|
||||
|
||||
if (le32_to_cpu(tw->num_kcontrols) != 1) {
|
||||
if (!le32_to_cpu(tw->num_kcontrols)) {
|
||||
dev_err(sdev->dev, "error: invalid kcontrol count %d for volume\n",
|
||||
tw->num_kcontrols);
|
||||
ret = -EINVAL;
|
||||
@ -1617,7 +1617,8 @@ static int sof_widget_load_pga(struct snd_soc_component *scomp, int index,
|
||||
swidget->private = volume;
|
||||
|
||||
list_for_each_entry(scontrol, &sdev->kcontrol_list, list) {
|
||||
if (scontrol->comp_id == swidget->comp_id) {
|
||||
if (scontrol->comp_id == swidget->comp_id &&
|
||||
scontrol->volume_table) {
|
||||
min_step = scontrol->min_volume_step;
|
||||
max_step = scontrol->max_volume_step;
|
||||
volume->min_value = scontrol->volume_table[min_step];
|
||||
|
Loading…
Reference in New Issue
Block a user