Skip to content

Commit 5fcdc1c

Browse files
Angus_Wangjamess-huang
authored andcommitted
Add headphone detect and auto switch function.
Change-Id: I8fd55bb788d58b319bc22c970ccd8eeb91e4107a Reviewed-on: https://tp-biosrd-v02/gerrit/80393 Reviewed-by: Jamess Huang(黃以民) <Jamess_Huang@asus.com> Tested-by: Jamess Huang(黃以民) <Jamess_Huang@asus.com>
1 parent 00eca61 commit 5fcdc1c

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

arch/arm/boot/dts/rk3288-miniarm.dts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@
180180
simple-audio-card,format = "i2s";
181181
simple-audio-card,name = "rockchip,miniarm-codec";
182182
simple-audio-card,mclk-fs = <512>;
183+
simple-audio-card,hp-det-gpio = <&gpio7 4 GPIO_ACTIVE_LOW>;
183184
simple-audio-card,cpu {
184185
sound-dai = <&i2s>;
185186
};

sound/soc/soc-jack.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,31 @@ void snd_soc_jack_report(struct snd_soc_jack *jack, int status, int mask)
8080
unsigned int sync = 0;
8181
int enable;
8282

83+
int ret;
84+
char *envp[] = {
85+
"HOME=/",
86+
"TERM=linux",
87+
"PATH=/sbin:/usr/sbin:/bin:/usr/bin",
88+
NULL,
89+
};
90+
91+
char *argv[] = {
92+
"/etc/pulse/movesinks.sh",
93+
"alsa_output.OnBoard_D2",
94+
NULL,
95+
};
96+
97+
dev_info(jack->card->dev, "snd_soc_jack_report status=%d\n", status);
98+
99+
if (status) {
100+
ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
101+
if (ret != 0)
102+
dev_err(jack->card->dev, "call_usermodehelper fail, ret=%d\n", ret);
103+
else
104+
dev_info(jack->card->dev, "audio jack plug in, auto switch to headphone\n");
105+
}
106+
107+
83108
trace_snd_soc_jack_report(jack, mask, status);
84109

85110
if (!jack)

0 commit comments

Comments
 (0)