ASoC: mediatek: mt8188-mt6359: Modify key
authorZhang Yi <zhangyi@everest-semi.com>
Fri, 16 Aug 2024 11:49:21 +0000 (19:49 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 28 Aug 2024 20:41:43 +0000 (21:41 +0100)
In order to get the correct keys when using the ES8326.We will associate
SND_JACK_BTN_1 to KEY_VOLUMEUP and SND_JACK_BTN_2 to KEY_VOLUMEDOWN
when the ES8326 flag is recognized.

Signed-off-by: Zhang Yi <zhangyi@everest-semi.com>
Link: https://patch.msgid.link/20240816114921.48913-1-zhangyi@everest-semi.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/mediatek/mt8188/mt8188-mt6359.c

index eba6f4c445ffbfb1ca567142c3a2d153cbb8bab0..08ae962afeb92965109b303439419bc6e7c2a896 100644 (file)
@@ -734,6 +734,7 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd)
        struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(rtd->card);
        struct snd_soc_jack *jack = &soc_card_data->card_data->jacks[MT8188_JACK_HEADSET];
        struct snd_soc_component *component = snd_soc_rtd_to_codec(rtd, 0)->component;
+       struct mtk_platform_card_data *card_data = soc_card_data->card_data;
        int ret;
 
        ret = snd_soc_dapm_new_controls(&card->dapm, mt8188_nau8825_widgets,
@@ -762,10 +763,18 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd)
                return ret;
        }
 
-       snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE);
-       snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND);
-       snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP);
-       snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
+       if (card_data->flags & ES8326_HS_PRESENT) {
+               snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE);
+               snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP);
+               snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN);
+               snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);                 
+       } else {
+               snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE);
+               snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND);
+               snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP);
+               snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);   
+       }
+       
        ret = snd_soc_component_set_jack(component, jack, NULL);
 
        if (ret) {