[PATCH v2 01/10] ASoC: tegra: Fix kcontrol put callback in ADMAIF

Sameer Pujar
2021-11-03T13:52:59Z

that change notifications are sent to subscribed applications. Update
the ADMAIF driver accordingly

Fixes: f74028e159bb ("ASoC: tegra: Add Tegra210 based ADMAIF driver")
Suggested-by: Jaroslav Kysela <perex@perex.cz>
Suggested-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
---
sound/soc/tegra/tegra210_admaif.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/sound/soc/tegra/tegra210_admaif.c b/sound/soc/tegra/tegra210_admaif.c
index bcccdf3..dc71075 100644
--- a/sound/soc/tegra/tegra210_admaif.c
+++ b/sound/soc/tegra/tegra210_admaif.c
@@ -452,16 +452,29 @@ static int tegra_admaif_put_control(struct snd_kcontrol *kcontrol,
struct tegra_admaif *admaif = snd_soc_component_get_drvdata(cmpnt);
int value = ucontrol->value.integer.value[0];

- if (strstr(kcontrol->id.name, "Playback Mono To Stereo"))
+ if (strstr(kcontrol->id.name, "Playback Mono To Stereo")) {
+ if (admaif->mono_to_stereo[ADMAIF_TX_PATH][ec->reg] == value)
+ return 0;
+
admaif->mono_to_stereo[ADMAIF_TX_PATH][ec->reg] = value;
- else if (strstr(kcontrol->id.name, "Capture Mono To Stereo"))
+ } else if (strstr(kcontrol->id.name, "Capture Mono To Stereo")) {
+ if (admaif->mono_to_stereo[ADMAIF_RX_PATH][ec->reg] == value)
+ return 0;
+
admaif->mono_to_stereo[ADMAIF_RX_PATH][ec->reg] = value;
- else if (strstr(kcontrol->id.name, "Playback Stereo To Mono"))
+ } else if (strstr(kcontrol->id.name, "Playback Stereo To Mono")) {
+ if (admaif->stereo_to_mono[ADMAIF_TX_PATH][ec->reg] == value)
+ return 0;
+
admaif->stereo_to_mono[ADMAIF_TX_PATH][ec->reg] = value;
- else if (strstr(kcontrol->id.name, "Capture Stereo To Mono"))
+ } else if (strstr(kcontrol->id.name, "Capture Stereo To Mono")) {
+ if (admaif->stereo_to_mono[ADMAIF_RX_PATH][ec->reg] == value)
+ return 0;
+
admaif->stereo_to_mono[ADMAIF_RX_PATH][ec->reg] = value;
+ }

- return 0;
+ return 1;
}

static int tegra_admaif_dai_probe(struct snd_soc_dai *dai)
--
2.7.4