[PATCH v2 2/3] ASoC: imx-rpmsg: Support headphone jack detection

From: Chancel Liu

Date: Wed May 27 2026 - 22:09:49 EST


Add headphone jack detection support for i.MX RPMSG audio cards.
When the "hp-det-gpios" property is present in the device tree node,
use simple_util_init_jack() from the ASoC simple card utilities to
register a headphone jack with GPIO-based insertion detection.

Signed-off-by: Chancel Liu <chancel.liu@xxxxxxx>
---
sound/soc/fsl/Kconfig | 1 +
sound/soc/fsl/imx-rpmsg.c | 11 +++++++++++
2 files changed, 12 insertions(+)

diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig
index ae8774e11873..8ae59c094878 100644
--- a/sound/soc/fsl/Kconfig
+++ b/sound/soc/fsl/Kconfig
@@ -358,6 +358,7 @@ config SND_SOC_IMX_RPMSG
depends on OF && I2C
select SND_SOC_IMX_PCM_RPMSG
select SND_SOC_IMX_AUDIO_RPMSG
+ select SND_SIMPLE_CARD_UTILS
help
SoC Audio support for i.MX boards with rpmsg.
There should be rpmsg devices defined in other core (M core)
diff --git a/sound/soc/fsl/imx-rpmsg.c b/sound/soc/fsl/imx-rpmsg.c
index fd4624786b62..48fe471499ba 100644
--- a/sound/soc/fsl/imx-rpmsg.c
+++ b/sound/soc/fsl/imx-rpmsg.c
@@ -12,6 +12,7 @@
#include <sound/control.h>
#include <sound/pcm_params.h>
#include <sound/soc-dapm.h>
+#include <sound/simple_card_utils.h>
#include "imx-pcm-rpmsg.h"

struct imx_rpmsg {
@@ -19,6 +20,7 @@ struct imx_rpmsg {
struct snd_soc_card card;
unsigned long sysclk;
bool lpa;
+ struct simple_util_jack hp_jack;
};

static struct dev_pm_ops lpa_pm;
@@ -86,6 +88,15 @@ static int imx_rpmsg_late_probe(struct snd_soc_card *card)
struct device *dev = card->dev;
int ret;

+ if (of_property_present(card->dev->of_node, "hp-det-gpios")) {
+ ret = simple_util_init_jack(card, &data->hp_jack,
+ 1, NULL, "Headphone Jack");
+ if (ret) {
+ dev_err(dev, "failed to init hp jack\n");
+ return ret;
+ }
+ }
+
if (data->lpa) {
struct device_node *codec_np;
struct device_driver *codec_drv;
--
2.50.1