| From a4e37950c9e9b126f9cbee79b8ab94a94646dcf1 Mon Sep 17 00:00:00 2001 |
| From: Sameer Pujar <spujar@nvidia.com> |
| Date: Thu, 18 Nov 2021 12:37:06 +0530 |
| Subject: ASoC: tegra: Fix kcontrol put callback in AHUB |
| |
| From: Sameer Pujar <spujar@nvidia.com> |
| |
| commit a4e37950c9e9b126f9cbee79b8ab94a94646dcf1 upstream. |
| |
| The kcontrol put callback is expected to return 1 when there is change |
| in HW or when the update is acknowledged by driver. This would ensure |
| that change notifications are sent to subscribed applications. Update |
| the AHUB driver accordingly. |
| |
| Fixes: 16e1bcc2caf4 ("ASoC: tegra: Add Tegra210 based AHUB driver") |
| Signed-off-by: Sameer Pujar <spujar@nvidia.com> |
| Suggested-by: Jaroslav Kysela <perex@perex.cz> |
| Suggested-by: Mark Brown <broonie@kernel.org> |
| Reviewed-by: Takashi Iwai <tiwai@suse.de> |
| Link: https://lore.kernel.org/r/1637219231-406-12-git-send-email-spujar@nvidia.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| sound/soc/tegra/tegra210_ahub.c | 11 +++++++---- |
| 1 file changed, 7 insertions(+), 4 deletions(-) |
| |
| --- a/sound/soc/tegra/tegra210_ahub.c |
| +++ b/sound/soc/tegra/tegra210_ahub.c |
| @@ -62,6 +62,7 @@ static int tegra_ahub_put_value_enum(str |
| unsigned int *item = uctl->value.enumerated.item; |
| unsigned int value = e->values[item[0]]; |
| unsigned int i, bit_pos, reg_idx = 0, reg_val = 0; |
| + int change = 0; |
| |
| if (item[0] >= e->items) |
| return -EINVAL; |
| @@ -86,12 +87,14 @@ static int tegra_ahub_put_value_enum(str |
| |
| /* Update widget power if state has changed */ |
| if (snd_soc_component_test_bits(cmpnt, update[i].reg, |
| - update[i].mask, update[i].val)) |
| - snd_soc_dapm_mux_update_power(dapm, kctl, item[0], e, |
| - &update[i]); |
| + update[i].mask, |
| + update[i].val)) |
| + change |= snd_soc_dapm_mux_update_power(dapm, kctl, |
| + item[0], e, |
| + &update[i]); |
| } |
| |
| - return 0; |
| + return change; |
| } |
| |
| static struct snd_soc_dai_driver tegra210_ahub_dais[] = { |