Commit d27224a4 authored by Alper Nebi Yasak's avatar Alper Nebi Yasak Committed by Mark Brown

ASoC: samsung: midas_wm1811: Map missing jack kcontrols

This driver does not map jack pins to kcontrols that PulseAudio/PipeWire
need to handle jack detection events. The WM1811 codec used here seems
to support detecting Headphone and Headset Mic connections. Expose each
to userspace as a kcontrol and add the necessary widgets.
Signed-off-by: default avatarAlper Nebi Yasak <alpernebiyasak@gmail.com>
Link: https://lore.kernel.org/r/20230802175737.263412-28-alpernebiyasak@gmail.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent c9d34018
...@@ -38,6 +38,17 @@ struct midas_priv { ...@@ -38,6 +38,17 @@ struct midas_priv {
struct snd_soc_jack headset_jack; struct snd_soc_jack headset_jack;
}; };
static struct snd_soc_jack_pin headset_jack_pins[] = {
{
.pin = "Headphone",
.mask = SND_JACK_HEADPHONE,
},
{
.pin = "Headset Mic",
.mask = SND_JACK_MICROPHONE,
},
};
static int midas_start_fll1(struct snd_soc_pcm_runtime *rtd, unsigned int rate) static int midas_start_fll1(struct snd_soc_pcm_runtime *rtd, unsigned int rate)
{ {
struct snd_soc_card *card = rtd->card; struct snd_soc_card *card = rtd->card;
...@@ -246,6 +257,7 @@ static const struct snd_kcontrol_new midas_controls[] = { ...@@ -246,6 +257,7 @@ static const struct snd_kcontrol_new midas_controls[] = {
SOC_DAPM_PIN_SWITCH("Main Mic"), SOC_DAPM_PIN_SWITCH("Main Mic"),
SOC_DAPM_PIN_SWITCH("Sub Mic"), SOC_DAPM_PIN_SWITCH("Sub Mic"),
SOC_DAPM_PIN_SWITCH("Headset Mic"), SOC_DAPM_PIN_SWITCH("Headset Mic"),
SOC_DAPM_PIN_SWITCH("Headphone"),
SOC_DAPM_PIN_SWITCH("FM In"), SOC_DAPM_PIN_SWITCH("FM In"),
}; };
...@@ -261,6 +273,7 @@ static const struct snd_soc_dapm_widget midas_dapm_widgets[] = { ...@@ -261,6 +273,7 @@ static const struct snd_soc_dapm_widget midas_dapm_widgets[] = {
SND_SOC_DAPM_LINE("HDMI", NULL), SND_SOC_DAPM_LINE("HDMI", NULL),
SND_SOC_DAPM_LINE("FM In", midas_fm_set), SND_SOC_DAPM_LINE("FM In", midas_fm_set),
SND_SOC_DAPM_HP("Headphone", NULL),
SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL),
SND_SOC_DAPM_MIC("Main Mic", midas_mic_bias), SND_SOC_DAPM_MIC("Main Mic", midas_mic_bias),
SND_SOC_DAPM_MIC("Sub Mic", midas_submic_bias), SND_SOC_DAPM_MIC("Sub Mic", midas_submic_bias),
...@@ -305,11 +318,13 @@ static int midas_late_probe(struct snd_soc_card *card) ...@@ -305,11 +318,13 @@ static int midas_late_probe(struct snd_soc_card *card)
return ret; return ret;
} }
ret = snd_soc_card_jack_new(card, "Headset", ret = snd_soc_card_jack_new_pins(card, "Headset",
SND_JACK_HEADSET | SND_JACK_MECHANICAL | SND_JACK_HEADSET | SND_JACK_MECHANICAL |
SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2 | SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2 |
SND_JACK_BTN_3 | SND_JACK_BTN_4 | SND_JACK_BTN_5, SND_JACK_BTN_3 | SND_JACK_BTN_4 | SND_JACK_BTN_5,
&priv->headset_jack); &priv->headset_jack,
headset_jack_pins,
ARRAY_SIZE(headset_jack_pins));
if (ret) if (ret)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment