]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: codecs: lpass-wsa-macro: Do not hard-code dai in VI mixer
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Tue, 23 Jul 2024 14:46:07 +0000 (16:46 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 29 Jul 2024 00:18:39 +0000 (01:18 +0100)
The wsa_macro_vi_feed_mixer_put() callback for setting VI feedback mixer
value could be used for different DAIs (planned in the future CPS DAI),
so make the code a bit more generic by using DAI ID from widget->shift,
instead of hard-coding it.  The get() callback already follows such
convention.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://patch.msgid.link/20240723144607.123240-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/lpass-wsa-macro.c

index 73a5882894080019b2a6330c5e7258dd1de3b28a..76900274acf399f825158d989d2cf14f53ff4e9c 100644 (file)
@@ -2297,36 +2297,37 @@ static int wsa_macro_vi_feed_mixer_put(struct snd_kcontrol *kcontrol,
        struct wsa_macro *wsa = snd_soc_component_get_drvdata(component);
        u32 enable = ucontrol->value.integer.value[0];
        u32 spk_tx_id = mixer->shift;
+       u32 dai_id = widget->shift;
 
        if (enable) {
                if (spk_tx_id == WSA_MACRO_TX0 &&
                        !test_bit(WSA_MACRO_TX0,
-                               &wsa->active_ch_mask[WSA_MACRO_AIF_VI])) {
+                               &wsa->active_ch_mask[dai_id])) {
                        set_bit(WSA_MACRO_TX0,
-                               &wsa->active_ch_mask[WSA_MACRO_AIF_VI]);
-                       wsa->active_ch_cnt[WSA_MACRO_AIF_VI]++;
+                               &wsa->active_ch_mask[dai_id]);
+                       wsa->active_ch_cnt[dai_id]++;
                }
                if (spk_tx_id == WSA_MACRO_TX1 &&
                        !test_bit(WSA_MACRO_TX1,
-                               &wsa->active_ch_mask[WSA_MACRO_AIF_VI])) {
+                               &wsa->active_ch_mask[dai_id])) {
                        set_bit(WSA_MACRO_TX1,
-                               &wsa->active_ch_mask[WSA_MACRO_AIF_VI]);
-                       wsa->active_ch_cnt[WSA_MACRO_AIF_VI]++;
+                               &wsa->active_ch_mask[dai_id]);
+                       wsa->active_ch_cnt[dai_id]++;
                }
        } else {
                if (spk_tx_id == WSA_MACRO_TX0 &&
                        test_bit(WSA_MACRO_TX0,
-                               &wsa->active_ch_mask[WSA_MACRO_AIF_VI])) {
+                               &wsa->active_ch_mask[dai_id])) {
                        clear_bit(WSA_MACRO_TX0,
-                               &wsa->active_ch_mask[WSA_MACRO_AIF_VI]);
-                       wsa->active_ch_cnt[WSA_MACRO_AIF_VI]--;
+                               &wsa->active_ch_mask[dai_id]);
+                       wsa->active_ch_cnt[dai_id]--;
                }
                if (spk_tx_id == WSA_MACRO_TX1 &&
                        test_bit(WSA_MACRO_TX1,
-                               &wsa->active_ch_mask[WSA_MACRO_AIF_VI])) {
+                               &wsa->active_ch_mask[dai_id])) {
                        clear_bit(WSA_MACRO_TX1,
-                               &wsa->active_ch_mask[WSA_MACRO_AIF_VI]);
-                       wsa->active_ch_cnt[WSA_MACRO_AIF_VI]--;
+                               &wsa->active_ch_mask[dai_id]);
+                       wsa->active_ch_cnt[dai_id]--;
                }
        }
        snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, enable, NULL);