Unverified Commit dc47ef4f authored by Libin Yang's avatar Libin Yang Committed by Mark Brown
Browse files

ASoC: SOF: ipc4-control: set_volume_data only applies to VOLSW family



Make sure sof_ipc4_set_volume_data() is only called for the
SND_SOC_TPLG_CTL_VOLSW, SND_SOC_TPLG_CTL_VOLSW_SX and
SND_SOC_TPLG_CTL_VOLSW_XR_SX info_type.

Signed-off-by: default avatarLibin Yang <libin.yang@intel.com>
Reviewed-by: default avatarPéter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230313110344.16644-6-peter.ujfalusi@linux.intel.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent ea4a4e82
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -186,14 +186,24 @@ static int sof_ipc4_widget_kcontrol_setup(struct snd_sof_dev *sdev, struct snd_s
	struct snd_sof_control *scontrol;
	int ret;

	list_for_each_entry(scontrol, &sdev->kcontrol_list, list)
	list_for_each_entry(scontrol, &sdev->kcontrol_list, list) {
		if (scontrol->comp_id == swidget->comp_id) {
			ret = sof_ipc4_set_volume_data(sdev, swidget, scontrol, false);
			switch (scontrol->info_type) {
			case SND_SOC_TPLG_CTL_VOLSW:
			case SND_SOC_TPLG_CTL_VOLSW_SX:
			case SND_SOC_TPLG_CTL_VOLSW_XR_SX:
				ret = sof_ipc4_set_volume_data(sdev, swidget,
							       scontrol, false);
				if (ret < 0) {
				dev_err(sdev->dev, "%s: kcontrol %d set up failed for widget %s\n",
					__func__, scontrol->comp_id, swidget->widget->name);
					dev_err(sdev->dev, "kcontrol %d set up failed for widget %s\n",
						scontrol->comp_id, swidget->widget->name);
					return ret;
				}
				break;
			default:
				break;
			}
		}
	}

	return 0;