diff mbox series

[1/2] leds: trigger: audio: Add audio jack plugging indicator led

Message ID 20200914080655.14576-1-hui.wang@canonical.com
State New
Headers show
Series [1/2] leds: trigger: audio: Add audio jack plugging indicator led | expand

Commit Message

Hui Wang Sept. 14, 2020, 8:06 a.m. UTC
On the Lenovo P520 front panel, there is a headset plugging indicator
led. According to LENOVO's requirement, this led should be on if the
front headset audio jack is plugged, otherwise the led should be off.

We tested with windows, if we plugged a headphone/headset in that
jack, the led was on, if we removed the headphone/headset from that
jack, the led was off.

Here we add JACKPLUG led in the ledtrig_audio, then we could call
ledtrig_audio_set() in the alsa driver to control that led.

Signed-off-by: Hui Wang <hui.wang@canonical.com>
---
 drivers/leds/trigger/Kconfig         | 4 ++--
 drivers/leds/trigger/ledtrig-audio.c | 7 +++++--
 include/linux/leds.h                 | 1 +
 3 files changed, 8 insertions(+), 4 deletions(-)

Comments

Hui Wang Sept. 15, 2020, 12:40 a.m. UTC | #1
Please ignore this patchset,  our QA retested this led under Windows, 
the led was always on after booting no matter users plug in or plug out.

If the led could change under Windows in future, I will resend the patchset.

Thanks,

Hui.


On 2020/9/14 下午4:06, Hui Wang wrote:
> On the Lenovo P520 front panel, there is a headset plugging indicator
> led. According to LENOVO's requirement, this led should be on if the
> front headset audio jack is plugged, otherwise the led should be off.
>
> We tested with windows, if we plugged a headphone/headset in that
> jack, the led was on, if we removed the headphone/headset from that
> jack, the led was off.
>
> Here we add JACKPLUG led in the ledtrig_audio, then we could call
> ledtrig_audio_set() in the alsa driver to control that led.
>
> Signed-off-by: Hui Wang <hui.wang@canonical.com>
> ---
>   drivers/leds/trigger/Kconfig         | 4 ++--
>   drivers/leds/trigger/ledtrig-audio.c | 7 +++++--
>   include/linux/leds.h                 | 1 +
>   3 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig
> index ce9429ca6dde..a61893a6e3e4 100644
> --- a/drivers/leds/trigger/Kconfig
> +++ b/drivers/leds/trigger/Kconfig
> @@ -138,10 +138,10 @@ config LEDS_TRIGGER_PATTERN
>   	  If unsure, say N
>   
>   config LEDS_TRIGGER_AUDIO
> -	tristate "Audio Mute LED Trigger"
> +	tristate "Audio Mute and Jack Plugging LED Trigger"
>   	help
>   	  This allows LEDs to be controlled by audio drivers for following
> -	  the audio mute and mic-mute changes.
> +	  the audio mute, mic-mute and jack plugging changes.
>   	  If unsure, say N
>   
>   endif # LEDS_TRIGGERS
> diff --git a/drivers/leds/trigger/ledtrig-audio.c b/drivers/leds/trigger/ledtrig-audio.c
> index f76621e88482..fa66bb982400 100644
> --- a/drivers/leds/trigger/ledtrig-audio.c
> +++ b/drivers/leds/trigger/ledtrig-audio.c
> @@ -1,6 +1,6 @@
>   // SPDX-License-Identifier: GPL-2.0
>   //
> -// Audio Mute LED trigger
> +// Audio Mute And Jack Plugging LED trigger
>   //
>   
>   #include <linux/kernel.h>
> @@ -29,6 +29,8 @@ static int __init ledtrig_audio_init(void)
>   				    &ledtrig_audio[LED_AUDIO_MUTE]);
>   	led_trigger_register_simple("audio-micmute",
>   				    &ledtrig_audio[LED_AUDIO_MICMUTE]);
> +	led_trigger_register_simple("audio-jackplug",
> +				    &ledtrig_audio[LED_AUDIO_JACKPLUG]);
>   	return 0;
>   }
>   module_init(ledtrig_audio_init);
> @@ -37,8 +39,9 @@ static void __exit ledtrig_audio_exit(void)
>   {
>   	led_trigger_unregister_simple(ledtrig_audio[LED_AUDIO_MUTE]);
>   	led_trigger_unregister_simple(ledtrig_audio[LED_AUDIO_MICMUTE]);
> +	led_trigger_unregister_simple(ledtrig_audio[LED_AUDIO_JACKPLUG]);
>   }
>   module_exit(ledtrig_audio_exit);
>   
> -MODULE_DESCRIPTION("LED trigger for audio mute control");
> +MODULE_DESCRIPTION("LED trigger for audio mute and jack plugging control");
>   MODULE_LICENSE("GPL v2");
> diff --git a/include/linux/leds.h b/include/linux/leds.h
> index 6a8d6409c993..1858c2d30ecd 100644
> --- a/include/linux/leds.h
> +++ b/include/linux/leds.h
> @@ -584,6 +584,7 @@ struct led_pattern {
>   enum led_audio {
>   	LED_AUDIO_MUTE,		/* master mute LED */
>   	LED_AUDIO_MICMUTE,	/* mic mute LED */
> +	LED_AUDIO_JACKPLUG,	/* audio jack plug indicator LED */
>   	NUM_AUDIO_LEDS
>   };
>
diff mbox series

Patch

diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig
index ce9429ca6dde..a61893a6e3e4 100644
--- a/drivers/leds/trigger/Kconfig
+++ b/drivers/leds/trigger/Kconfig
@@ -138,10 +138,10 @@  config LEDS_TRIGGER_PATTERN
 	  If unsure, say N
 
 config LEDS_TRIGGER_AUDIO
-	tristate "Audio Mute LED Trigger"
+	tristate "Audio Mute and Jack Plugging LED Trigger"
 	help
 	  This allows LEDs to be controlled by audio drivers for following
-	  the audio mute and mic-mute changes.
+	  the audio mute, mic-mute and jack plugging changes.
 	  If unsure, say N
 
 endif # LEDS_TRIGGERS
diff --git a/drivers/leds/trigger/ledtrig-audio.c b/drivers/leds/trigger/ledtrig-audio.c
index f76621e88482..fa66bb982400 100644
--- a/drivers/leds/trigger/ledtrig-audio.c
+++ b/drivers/leds/trigger/ledtrig-audio.c
@@ -1,6 +1,6 @@ 
 // SPDX-License-Identifier: GPL-2.0
 //
-// Audio Mute LED trigger
+// Audio Mute And Jack Plugging LED trigger
 //
 
 #include <linux/kernel.h>
@@ -29,6 +29,8 @@  static int __init ledtrig_audio_init(void)
 				    &ledtrig_audio[LED_AUDIO_MUTE]);
 	led_trigger_register_simple("audio-micmute",
 				    &ledtrig_audio[LED_AUDIO_MICMUTE]);
+	led_trigger_register_simple("audio-jackplug",
+				    &ledtrig_audio[LED_AUDIO_JACKPLUG]);
 	return 0;
 }
 module_init(ledtrig_audio_init);
@@ -37,8 +39,9 @@  static void __exit ledtrig_audio_exit(void)
 {
 	led_trigger_unregister_simple(ledtrig_audio[LED_AUDIO_MUTE]);
 	led_trigger_unregister_simple(ledtrig_audio[LED_AUDIO_MICMUTE]);
+	led_trigger_unregister_simple(ledtrig_audio[LED_AUDIO_JACKPLUG]);
 }
 module_exit(ledtrig_audio_exit);
 
-MODULE_DESCRIPTION("LED trigger for audio mute control");
+MODULE_DESCRIPTION("LED trigger for audio mute and jack plugging control");
 MODULE_LICENSE("GPL v2");
diff --git a/include/linux/leds.h b/include/linux/leds.h
index 6a8d6409c993..1858c2d30ecd 100644
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -584,6 +584,7 @@  struct led_pattern {
 enum led_audio {
 	LED_AUDIO_MUTE,		/* master mute LED */
 	LED_AUDIO_MICMUTE,	/* mic mute LED */
+	LED_AUDIO_JACKPLUG,	/* audio jack plug indicator LED */
 	NUM_AUDIO_LEDS
 };