* [PATCH 0/2] Add ASUS ExpertBook mute LED support @ 2026-09-15 17:41 patryk.dankow 2026-09-15 17:41 ` [PATCH 1/2] platform/x86: asus-wmi: Add " patryk.dankow 2026-09-15 17:41 ` [PATCH 2/2] ALSA: hda/realtek: Add mute LED support for ASUS PM3406CKA patryk.dankow 0 siblings, 2 replies; 5+ messages in thread From: patryk.dankow @ 2026-09-15 17:41 UTC (permalink / raw) To: platform-driver-x86, linux-sound Cc: Patryk Dańków, corentin.chary, luke, denis.benato, hansg, ilpo.jarvinen, perex, tiwai, zhangheng, dnaim, damien.dagorn29, kailang, habilerenturker, linux-kernel From: Patryk Dańków <patryk.dankow@protonmail.com> This series adds speaker mute LED support for the ASUS ExpertBook PM3406CKA. The first patch adds the ASUS WMI mute LED endpoint and registers it as the platform::mute LED using the audio-mute trigger. The second patch enables vmaster mute LED handling for the PM3406CKA in the Realtek HDA codec driver. The existing CS35L41 I2C fixup is retained by chaining the new fixup to it. The WMI device ID 0x0004001c is present in the PM3406CKA DSDT and is also used by GHelper for controlling the same LED. Tested on ASUS ExpertBook PM3406CKA. Patryk Dańków (2): platform/x86: asus-wmi: Add mute LED support ALSA: hda/realtek: Add mute LED support for ASUS PM3406CKA drivers/platform/x86/asus-wmi.c | 26 +++++++++++++++++++++- include/linux/platform_data/x86/asus-wmi.h | 1 + sound/hda/codecs/realtek/alc269.c | 18 ++++++++++++++- 3 files changed, 43 insertions(+), 2 deletions(-) base-commit: 2f0c1cf72f4682178506f513bbf015e591b1aa4a -- 2.55.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] platform/x86: asus-wmi: Add mute LED support 2026-09-15 17:41 [PATCH 0/2] Add ASUS ExpertBook mute LED support patryk.dankow @ 2026-09-15 17:41 ` patryk.dankow 2026-09-15 19:43 ` Denis Benato 2026-09-15 17:41 ` [PATCH 2/2] ALSA: hda/realtek: Add mute LED support for ASUS PM3406CKA patryk.dankow 1 sibling, 1 reply; 5+ messages in thread From: patryk.dankow @ 2026-09-15 17:41 UTC (permalink / raw) To: platform-driver-x86 Cc: Patryk Dańków, corentin.chary, luke, denis.benato, hansg, ilpo.jarvinen, linux-kernel From: Patryk Dańków <patryk.dankow@protonmail.com> Add support for WMI device 0x0004001c and register it as the platform::mute LED using the audio-mute trigger. The device ID is present in the PM3406CKA DSDT and is also used by GHelper for controlling the same LED. Tested on ASUS ExpertBook PM3406CKA. Signed-off-by: Patryk Dańków <patryk.dankow@protonmail.com> --- drivers/platform/x86/asus-wmi.c | 26 +++++++++++++++++++++- include/linux/platform_data/x86/asus-wmi.h | 1 + 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index a65090429ca7..d7c100dc2020 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -262,6 +262,7 @@ struct asus_wmi { struct led_classdev lightbar_led; int lightbar_led_wk; struct led_classdev micmute_led; + struct led_classdev mute_led; struct led_classdev camera_led; struct workqueue_struct *led_workqueue; struct work_struct tpd_led_work; @@ -2054,6 +2055,16 @@ static int micmute_led_set(struct led_classdev *led_cdev, return err < 0 ? err : 0; } +static int mute_led_set(struct led_classdev *led_cdev, + enum led_brightness brightness) +{ + int state = brightness != LED_OFF; + int err; + + err = asus_wmi_set_devstate(ASUS_WMI_DEVID_MUTE_LED, state, NULL); + return err < 0 ? err : 0; +} + static enum led_brightness camera_led_get(struct led_classdev *led_cdev) { struct asus_wmi *asus; @@ -2084,6 +2095,7 @@ static void asus_wmi_led_exit(struct asus_wmi *asus) led_classdev_unregister(&asus->wlan_led); led_classdev_unregister(&asus->lightbar_led); led_classdev_unregister(&asus->micmute_led); + led_classdev_unregister(&asus->mute_led); led_classdev_unregister(&asus->camera_led); if (asus->led_workqueue) @@ -2176,7 +2188,19 @@ static int asus_wmi_led_init(struct asus_wmi *asus) asus->micmute_led.default_trigger = "audio-micmute"; rv = led_classdev_register(&asus->platform_device->dev, - &asus->micmute_led); + &asus->micmute_led); + if (rv) + goto error; + } + + if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MUTE_LED)) { + asus->mute_led.name = "platform::mute"; + asus->mute_led.max_brightness = 1; + asus->mute_led.brightness_set_blocking = mute_led_set; + asus->mute_led.default_trigger = "audio-mute"; + + rv = led_classdev_register(&asus->platform_device->dev, + &asus->mute_led); if (rv) goto error; } diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h index b5ed8c83ace1..3810c4a0da23 100644 --- a/include/linux/platform_data/x86/asus-wmi.h +++ b/include/linux/platform_data/x86/asus-wmi.h @@ -54,6 +54,7 @@ #define ASUS_WMI_DEVID_LED5 0x00020015 #define ASUS_WMI_DEVID_LED6 0x00020016 #define ASUS_WMI_DEVID_MICMUTE_LED 0x00040017 +#define ASUS_WMI_DEVID_MUTE_LED 0x0004001C /* Disable Camera LED */ #define ASUS_WMI_DEVID_CAMERA_LED_NEG 0x00060078 /* 0 = on (unused) */ -- 2.55.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] platform/x86: asus-wmi: Add mute LED support 2026-09-15 17:41 ` [PATCH 1/2] platform/x86: asus-wmi: Add " patryk.dankow @ 2026-09-15 19:43 ` Denis Benato 0 siblings, 0 replies; 5+ messages in thread From: Denis Benato @ 2026-09-15 19:43 UTC (permalink / raw) To: patryk.dankow, platform-driver-x86 Cc: corentin.chary, luke, hansg, ilpo.jarvinen, linux-kernel On 9/15/26 19:41, patryk.dankow@protonmail.com wrote: > From: Patryk Dańków <patryk.dankow@protonmail.com> > > Add support for WMI device 0x0004001c and register it as the > platform::mute LED using the audio-mute trigger. > > The device ID is present in the PM3406CKA DSDT and is also used > by GHelper for controlling the same LED. > > Tested on ASUS ExpertBook PM3406CKA. Hi Patryk, Thank you for this! I haven't received the 2/2 but I saw it on lore, please next time also send to me :) Also I think that since this is a cross-subsystem patchset you are supposed to send the patchset as a whole to both lists. Reviewed-by: Denis Benato <denis.benato@linux.dev> > Signed-off-by: Patryk Dańków <patryk.dankow@protonmail.com> > --- > drivers/platform/x86/asus-wmi.c | 26 +++++++++++++++++++++- > include/linux/platform_data/x86/asus-wmi.h | 1 + > 2 files changed, 26 insertions(+), 1 deletion(-) > > diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c > index a65090429ca7..d7c100dc2020 100644 > --- a/drivers/platform/x86/asus-wmi.c > +++ b/drivers/platform/x86/asus-wmi.c > @@ -262,6 +262,7 @@ struct asus_wmi { > struct led_classdev lightbar_led; > int lightbar_led_wk; > struct led_classdev micmute_led; > + struct led_classdev mute_led; > struct led_classdev camera_led; > struct workqueue_struct *led_workqueue; > struct work_struct tpd_led_work; > @@ -2054,6 +2055,16 @@ static int micmute_led_set(struct led_classdev *led_cdev, > return err < 0 ? err : 0; > } > > +static int mute_led_set(struct led_classdev *led_cdev, > + enum led_brightness brightness) > +{ > + int state = brightness != LED_OFF; > + int err; > + > + err = asus_wmi_set_devstate(ASUS_WMI_DEVID_MUTE_LED, state, NULL); > + return err < 0 ? err : 0; > +} > + > static enum led_brightness camera_led_get(struct led_classdev *led_cdev) > { > struct asus_wmi *asus; > @@ -2084,6 +2095,7 @@ static void asus_wmi_led_exit(struct asus_wmi *asus) > led_classdev_unregister(&asus->wlan_led); > led_classdev_unregister(&asus->lightbar_led); > led_classdev_unregister(&asus->micmute_led); > + led_classdev_unregister(&asus->mute_led); > led_classdev_unregister(&asus->camera_led); > > if (asus->led_workqueue) > @@ -2176,7 +2188,19 @@ static int asus_wmi_led_init(struct asus_wmi *asus) > asus->micmute_led.default_trigger = "audio-micmute"; > > rv = led_classdev_register(&asus->platform_device->dev, > - &asus->micmute_led); > + &asus->micmute_led); > + if (rv) > + goto error; > + } > + > + if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MUTE_LED)) { > + asus->mute_led.name = "platform::mute"; > + asus->mute_led.max_brightness = 1; > + asus->mute_led.brightness_set_blocking = mute_led_set; > + asus->mute_led.default_trigger = "audio-mute"; > + > + rv = led_classdev_register(&asus->platform_device->dev, > + &asus->mute_led); > if (rv) > goto error; > } > diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h > index b5ed8c83ace1..3810c4a0da23 100644 > --- a/include/linux/platform_data/x86/asus-wmi.h > +++ b/include/linux/platform_data/x86/asus-wmi.h > @@ -54,6 +54,7 @@ > #define ASUS_WMI_DEVID_LED5 0x00020015 > #define ASUS_WMI_DEVID_LED6 0x00020016 > #define ASUS_WMI_DEVID_MICMUTE_LED 0x00040017 > +#define ASUS_WMI_DEVID_MUTE_LED 0x0004001C > > /* Disable Camera LED */ > #define ASUS_WMI_DEVID_CAMERA_LED_NEG 0x00060078 /* 0 = on (unused) */ ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] ALSA: hda/realtek: Add mute LED support for ASUS PM3406CKA 2026-09-15 17:41 [PATCH 0/2] Add ASUS ExpertBook mute LED support patryk.dankow 2026-09-15 17:41 ` [PATCH 1/2] platform/x86: asus-wmi: Add " patryk.dankow @ 2026-09-15 17:41 ` patryk.dankow 2026-09-16 7:40 ` Takashi Iwai 1 sibling, 1 reply; 5+ messages in thread From: patryk.dankow @ 2026-09-15 17:41 UTC (permalink / raw) To: linux-sound Cc: Patryk Dańków, perex, tiwai, zhangheng, dnaim, damien.dagorn29, kailang, habilerenturker, linux-kernel From: Patryk Dańków <patryk.dankow@protonmail.com> Enable vmaster mute LED handling for the PM3406CKA while retaining the existing CS35L41 I2C fixup by chaining the new fixup to it. Tested on ASUS ExpertBook PM3406CKA. Signed-off-by: Patryk Dańków <patryk.dankow@protonmail.com> --- sound/hda/codecs/realtek/alc269.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c index 3abee617e86e..d1f0c2752624 100644 --- a/sound/hda/codecs/realtek/alc269.c +++ b/sound/hda/codecs/realtek/alc269.c @@ -180,6 +180,15 @@ static void alc_enable_headset_jack_key(struct hda_codec *codec) } } +static void alc_fixup_pm3406cka_vmaster_led(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + + if (action == HDA_FIXUP_ACT_PRE_PROBE) + spec->gen.vmaster_mute_led = 1; +} + static void alc_fixup_headset_jack(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -4383,6 +4392,7 @@ enum { ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN_HEADSET, ALC285_LENOVO_DAC_RENAME, ALC287_FIXUP_YOGA9_SPEAKER2_TO_DAC1, + ALC_FIXUP_PM3406CKA_VMASTER_LED, }; /* A special fixup for Lenovo C940 and Yoga Duet 7; @@ -7129,6 +7139,12 @@ static const struct hda_fixup alc269_fixups[] = { .chained = true, .chain_id = ALC287_FIXUP_TXNW2781_I2C, }, + [ALC_FIXUP_PM3406CKA_VMASTER_LED] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_pm3406cka_vmaster_led, + .chained = true, + .chain_id = ALC287_FIXUP_CS35L41_I2C_2, + }, }; static const struct hda_quirk alc269_fixup_tbl[] = { @@ -7786,7 +7802,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK), SND_PCI_QUIRK(0x1043, 0x1433, "ASUS GX650PY/PZ/PV/PU/PYV/PZV/PIV/PVV", ALC285_FIXUP_ASUS_I2C_HEADSET_MIC), - SND_PCI_QUIRK(0x1043, 0x1454, "ASUS PM3406CKA", ALC287_FIXUP_CS35L41_I2C_2), + SND_PCI_QUIRK(0x1043, 0x1454, "ASUS PM3406CKA", ALC_FIXUP_PM3406CKA_VMASTER_LED), SND_PCI_QUIRK(0x1043, 0x1460, "Asus VivoBook 15", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1463, "Asus GA402X/GA402N", ALC285_FIXUP_ASUS_I2C_HEADSET_MIC), SND_PCI_QUIRK(0x1043, 0x1473, "ASUS GU604VI/VC/VE/VG/VJ/VQ/VU/VV/VY/VZ", ALC285_FIXUP_ASUS_HEADSET_MIC), -- 2.55.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] ALSA: hda/realtek: Add mute LED support for ASUS PM3406CKA 2026-09-15 17:41 ` [PATCH 2/2] ALSA: hda/realtek: Add mute LED support for ASUS PM3406CKA patryk.dankow @ 2026-09-16 7:40 ` Takashi Iwai 0 siblings, 0 replies; 5+ messages in thread From: Takashi Iwai @ 2026-09-16 7:40 UTC (permalink / raw) To: patryk.dankow Cc: linux-sound, perex, tiwai, zhangheng, dnaim, damien.dagorn29, kailang, habilerenturker, linux-kernel On Tue, 15 Sep 2026 19:41:36 +0200, patryk.dankow@protonmail.com wrote: > > From: Patryk Dańków <patryk.dankow@protonmail.com> > > Enable vmaster mute LED handling for the PM3406CKA while retaining > the existing CS35L41 I2C fixup by chaining the new fixup to it. > > Tested on ASUS ExpertBook PM3406CKA. > > Signed-off-by: Patryk Dańków <patryk.dankow@protonmail.com> I suppose both patches should be in the same tree, so feel free to take my ack if the series go through another tree: Reviewed-by: Takashi Iwai <tiwai@suse.de> Or, if both should be merged through sound git tree, let me know. thanks, Takashi ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-09-16 7:41 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-09-15 17:41 [PATCH 0/2] Add ASUS ExpertBook mute LED support patryk.dankow 2026-09-15 17:41 ` [PATCH 1/2] platform/x86: asus-wmi: Add " patryk.dankow 2026-09-15 19:43 ` Denis Benato 2026-09-15 17:41 ` [PATCH 2/2] ALSA: hda/realtek: Add mute LED support for ASUS PM3406CKA patryk.dankow 2026-09-16 7:40 ` Takashi Iwai
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®