All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
To: Mark Brown <broonie@kernel.org>
Cc: "AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	kernel@collabora.com,
	"Nícolas F. R. A. Prado" <nfraprado@collabora.com>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	"Takashi Iwai" <tiwai@suse.com>,
	"Trevor Wu" <trevor.wu@mediatek.com>,
	"Tzung-Bi Shih" <tzungbi@google.com>,
	alsa-devel@alsa-project.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org
Subject: [PATCH 2/6] ASoC: mediatek: mt8195: Expose individual headset jack pins
Date: Thu, 22 Sep 2022 19:59:47 -0400	[thread overview]
Message-ID: <20220922235951.252532-3-nfraprado@collabora.com> (raw)
In-Reply-To: <20220922235951.252532-1-nfraprado@collabora.com>

The rt5682 codec is able to distinguish between two event types:
headphone insertion/removal and headset microphone insertion/removal.
However, currently, the mt8195 ASoC driver exposes a single kcontrol
for the headset jack, so userspace isn't able to differentiate between
the two events.

Add a definition for the headset jack pins, so that a separate jack
kcontrol is created for each one, allowing userspace to track and handle
them individually.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

---

 sound/soc/mediatek/mt8195/mt8195-mt6359.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/sound/soc/mediatek/mt8195/mt8195-mt6359.c b/sound/soc/mediatek/mt8195/mt8195-mt6359.c
index 961e769602d6..17d4c4108a9d 100644
--- a/sound/soc/mediatek/mt8195/mt8195-mt6359.c
+++ b/sound/soc/mediatek/mt8195/mt8195-mt6359.c
@@ -63,6 +63,18 @@ struct mt8195_mt6359_priv {
 	struct clk *i2so1_mclk;
 };
 
+/* Headset jack detection DAPM pins */
+static struct snd_soc_jack_pin mt8195_jack_pins[] = {
+	{
+		.pin = "Headphone",
+		.mask = SND_JACK_HEADPHONE,
+	},
+	{
+		.pin = "Headset Mic",
+		.mask = SND_JACK_MICROPHONE,
+	},
+};
+
 static const struct snd_soc_dapm_widget mt8195_mt6359_widgets[] = {
 	SND_SOC_DAPM_HP("Headphone", NULL),
 	SND_SOC_DAPM_MIC("Headset Mic", NULL),
@@ -563,11 +575,12 @@ static int mt8195_rt5682_init(struct snd_soc_pcm_runtime *rtd)
 
 	priv->i2so1_mclk = afe_priv->clk[MT8195_CLK_TOP_APLL12_DIV2];
 
-	ret = snd_soc_card_jack_new(rtd->card, "Headset Jack",
+	ret = snd_soc_card_jack_new_pins(rtd->card, "Headset Jack",
 				    SND_JACK_HEADSET | SND_JACK_BTN_0 |
 				    SND_JACK_BTN_1 | SND_JACK_BTN_2 |
 				    SND_JACK_BTN_3,
-				    jack);
+				    jack, mt8195_jack_pins,
+				    ARRAY_SIZE(mt8195_jack_pins));
 	if (ret) {
 		dev_err(rtd->dev, "Headset Jack creation failed: %d\n", ret);
 		return ret;
-- 
2.37.3


WARNING: multiple messages have this Message-ID (diff)
From: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
To: Mark Brown <broonie@kernel.org>
Cc: alsa-devel@alsa-project.org,
	"Nícolas F. R. A. Prado" <nfraprado@collabora.com>,
	linux-kernel@vger.kernel.org, "Takashi Iwai" <tiwai@suse.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Tzung-Bi Shih" <tzungbi@google.com>,
	linux-mediatek@lists.infradead.org,
	"Trevor Wu" <trevor.wu@mediatek.com>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	kernel@collabora.com, linux-arm-kernel@lists.infradead.org,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>
Subject: [PATCH 2/6] ASoC: mediatek: mt8195: Expose individual headset jack pins
Date: Thu, 22 Sep 2022 19:59:47 -0400	[thread overview]
Message-ID: <20220922235951.252532-3-nfraprado@collabora.com> (raw)
In-Reply-To: <20220922235951.252532-1-nfraprado@collabora.com>

The rt5682 codec is able to distinguish between two event types:
headphone insertion/removal and headset microphone insertion/removal.
However, currently, the mt8195 ASoC driver exposes a single kcontrol
for the headset jack, so userspace isn't able to differentiate between
the two events.

Add a definition for the headset jack pins, so that a separate jack
kcontrol is created for each one, allowing userspace to track and handle
them individually.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

---

 sound/soc/mediatek/mt8195/mt8195-mt6359.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/sound/soc/mediatek/mt8195/mt8195-mt6359.c b/sound/soc/mediatek/mt8195/mt8195-mt6359.c
index 961e769602d6..17d4c4108a9d 100644
--- a/sound/soc/mediatek/mt8195/mt8195-mt6359.c
+++ b/sound/soc/mediatek/mt8195/mt8195-mt6359.c
@@ -63,6 +63,18 @@ struct mt8195_mt6359_priv {
 	struct clk *i2so1_mclk;
 };
 
+/* Headset jack detection DAPM pins */
+static struct snd_soc_jack_pin mt8195_jack_pins[] = {
+	{
+		.pin = "Headphone",
+		.mask = SND_JACK_HEADPHONE,
+	},
+	{
+		.pin = "Headset Mic",
+		.mask = SND_JACK_MICROPHONE,
+	},
+};
+
 static const struct snd_soc_dapm_widget mt8195_mt6359_widgets[] = {
 	SND_SOC_DAPM_HP("Headphone", NULL),
 	SND_SOC_DAPM_MIC("Headset Mic", NULL),
@@ -563,11 +575,12 @@ static int mt8195_rt5682_init(struct snd_soc_pcm_runtime *rtd)
 
 	priv->i2so1_mclk = afe_priv->clk[MT8195_CLK_TOP_APLL12_DIV2];
 
-	ret = snd_soc_card_jack_new(rtd->card, "Headset Jack",
+	ret = snd_soc_card_jack_new_pins(rtd->card, "Headset Jack",
 				    SND_JACK_HEADSET | SND_JACK_BTN_0 |
 				    SND_JACK_BTN_1 | SND_JACK_BTN_2 |
 				    SND_JACK_BTN_3,
-				    jack);
+				    jack, mt8195_jack_pins,
+				    ARRAY_SIZE(mt8195_jack_pins));
 	if (ret) {
 		dev_err(rtd->dev, "Headset Jack creation failed: %d\n", ret);
 		return ret;
-- 
2.37.3


WARNING: multiple messages have this Message-ID (diff)
From: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
To: Mark Brown <broonie@kernel.org>
Cc: "AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	kernel@collabora.com,
	"Nícolas F. R. A. Prado" <nfraprado@collabora.com>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	"Takashi Iwai" <tiwai@suse.com>,
	"Trevor Wu" <trevor.wu@mediatek.com>,
	"Tzung-Bi Shih" <tzungbi@google.com>,
	alsa-devel@alsa-project.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org
Subject: [PATCH 2/6] ASoC: mediatek: mt8195: Expose individual headset jack pins
Date: Thu, 22 Sep 2022 19:59:47 -0400	[thread overview]
Message-ID: <20220922235951.252532-3-nfraprado@collabora.com> (raw)
In-Reply-To: <20220922235951.252532-1-nfraprado@collabora.com>

The rt5682 codec is able to distinguish between two event types:
headphone insertion/removal and headset microphone insertion/removal.
However, currently, the mt8195 ASoC driver exposes a single kcontrol
for the headset jack, so userspace isn't able to differentiate between
the two events.

Add a definition for the headset jack pins, so that a separate jack
kcontrol is created for each one, allowing userspace to track and handle
them individually.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

---

 sound/soc/mediatek/mt8195/mt8195-mt6359.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/sound/soc/mediatek/mt8195/mt8195-mt6359.c b/sound/soc/mediatek/mt8195/mt8195-mt6359.c
index 961e769602d6..17d4c4108a9d 100644
--- a/sound/soc/mediatek/mt8195/mt8195-mt6359.c
+++ b/sound/soc/mediatek/mt8195/mt8195-mt6359.c
@@ -63,6 +63,18 @@ struct mt8195_mt6359_priv {
 	struct clk *i2so1_mclk;
 };
 
+/* Headset jack detection DAPM pins */
+static struct snd_soc_jack_pin mt8195_jack_pins[] = {
+	{
+		.pin = "Headphone",
+		.mask = SND_JACK_HEADPHONE,
+	},
+	{
+		.pin = "Headset Mic",
+		.mask = SND_JACK_MICROPHONE,
+	},
+};
+
 static const struct snd_soc_dapm_widget mt8195_mt6359_widgets[] = {
 	SND_SOC_DAPM_HP("Headphone", NULL),
 	SND_SOC_DAPM_MIC("Headset Mic", NULL),
@@ -563,11 +575,12 @@ static int mt8195_rt5682_init(struct snd_soc_pcm_runtime *rtd)
 
 	priv->i2so1_mclk = afe_priv->clk[MT8195_CLK_TOP_APLL12_DIV2];
 
-	ret = snd_soc_card_jack_new(rtd->card, "Headset Jack",
+	ret = snd_soc_card_jack_new_pins(rtd->card, "Headset Jack",
 				    SND_JACK_HEADSET | SND_JACK_BTN_0 |
 				    SND_JACK_BTN_1 | SND_JACK_BTN_2 |
 				    SND_JACK_BTN_3,
-				    jack);
+				    jack, mt8195_jack_pins,
+				    ARRAY_SIZE(mt8195_jack_pins));
 	if (ret) {
 		dev_err(rtd->dev, "Headset Jack creation failed: %d\n", ret);
 		return ret;
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-09-23  0:00 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-22 23:59 [PATCH 0/6] ASoC: mediatek: Allow separate handling of headphone and headset mic jack Nícolas F. R. A. Prado
2022-09-22 23:59 ` Nícolas F. R. A. Prado
2022-09-22 23:59 ` Nícolas F. R. A. Prado
2022-09-22 23:59 ` [PATCH 1/6] ASoC: mediatek: mt8192-mt6359: Expose individual headset jack pins Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-23  8:58   ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-22 23:59 ` Nícolas F. R. A. Prado [this message]
2022-09-22 23:59   ` [PATCH 2/6] ASoC: mediatek: mt8195: " Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-23  8:58   ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-22 23:59 ` [PATCH 3/6] ASoC: mediatek: mt8186-da7219: Add headset widgets with switches Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-23  8:58   ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-22 23:59 ` [PATCH 4/6] ASoC: mediatek: mt8186-da7219: Expose individual headset jack pins Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-23  8:58   ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-22 23:59 ` [PATCH 5/6] ASoC: mediatek: mt8186-rt5682: Add headset widgets with switches Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-23  8:58   ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-22 23:59 ` [PATCH 6/6] ASoC: mediatek: mt8186-rt5682: Expose individual headset jack pins Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-22 23:59   ` Nícolas F. R. A. Prado
2022-09-23  8:58   ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-23  8:58     ` AngeloGioacchino Del Regno
2022-09-23 17:07 ` [PATCH 0/6] ASoC: mediatek: Allow separate handling of headphone and headset mic jack Mark Brown
2022-09-23 17:07   ` Mark Brown
2022-09-23 17:07   ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220922235951.252532-3-nfraprado@collabora.com \
    --to=nfraprado@collabora.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=broonie@kernel.org \
    --cc=kernel@collabora.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=matthias.bgg@gmail.com \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.com \
    --cc=trevor.wu@mediatek.com \
    --cc=tzungbi@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.