ASoC: mt8183: Fix event generation for I2S DAI operations
authorMark Brown <broonie@kernel.org>
Sun, 26 Feb 2023 12:49:57 +0000 (12:49 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 28 Feb 2023 13:58:47 +0000 (13:58 +0000)
ALSA control put() operations should return 0 if the value changed so that
events can be generated appropriately for userspace but the custom control
in the MT8183 I2S DAI driver doesn't do that, fix it.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20230224-asoc-mt8183-quick-fixes-v1-2-041f29419ed5@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/mediatek/mt8183/mt8183-dai-i2s.c

index 38f7fa38ee95dfcf50a66393d308d5957527726f..8645ab686970f601e645624e87615a07093c3246 100644 (file)
@@ -141,7 +141,7 @@ static int mt8183_i2s_hd_set(struct snd_kcontrol *kcontrol,
        struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt);
        struct mtk_afe_i2s_priv *i2s_priv;
        struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-       int hd_en;
+       int hd_en, change;
 
        if (ucontrol->value.enumerated.item[0] >= e->items)
                return -EINVAL;
@@ -155,9 +155,10 @@ static int mt8183_i2s_hd_set(struct snd_kcontrol *kcontrol,
                return -EINVAL;
        }
 
+       change = i2s_priv->low_jitter_en != hd_en;
        i2s_priv->low_jitter_en = hd_en;
 
-       return 0;
+       return change;
 }
 
 static const struct snd_kcontrol_new mtk_dai_i2s_controls[] = {