[alsa-devel] [pulseaudio-discuss] ThinkPad T-510 audio output mute LED non-workingness

Takashi Iwai tiwai at suse.de
Mon Apr 27 19:12:21 CEST 2015


[Switched Cc to alsa-devel ML, as it's irrelevant from PA but rather a
 driver issue.]

At Mon, 27 Apr 2015 07:58:59 -0600,
Glenn Golden wrote:
> 
> Takashi Iwai <tiwai at suse.de> [2015-04-27 08:50:34 +0200]:
> > 
> > Gah, I hate reports without alsa-info.sh output (not a link to
> > somewhere else).
> > 
> > Glenn, please attach alsa-info.sh outputs (run it with --no-upload
> > option) and the whole dmesg output after boot.  3.19 should already
> > contain the hook to thinkpad_acpi.c.  If anything is missing, you
> > should have a warning indicating it.
> > 
> 
> Apologies for the omissions. Both are attached. 

Thanks!

> Fwiw -- perhaps nothing at this point -- a good deal of info has also been
> posted to the kernel bugtracker ticket:
> 
>     https://bugzilla.kernel.org/show_bug.cgi?id=96171
> 
> Re: "...you should have a warning indicating it":  I'm an unskilled laboror
> here w.r.t. kernel affairs, and not even sure what sort of warnings to be
> looking for, so may have missed something important without realizing it.
> Just let me know what add'l info you need, I'll be happy to post it. I do
> appreciate your attention to the issue.

I see no such warning in the log you attached, so it's not the issue,
as it seems.

Below is a debug patch, and now you should see messages like "XXX ..."
in kernel log at loading the driver.  If there is no such a message,
it means that the thinkpad hook isn't built in at all.  Please check
the kernel log again with the patch.


Takashi

---
diff --git a/sound/pci/hda/thinkpad_helper.c b/sound/pci/hda/thinkpad_helper.c
index 0a4ad5feb82e..48ce61e46599 100644
--- a/sound/pci/hda/thinkpad_helper.c
+++ b/sound/pci/hda/thinkpad_helper.c
@@ -34,6 +34,7 @@ static void update_tpacpi_mute_led(void *private_data, int enabled)
 	if (old_vmaster_hook)
 		old_vmaster_hook(private_data, enabled);
 
+	pr_info("XXX mute led updated %d\n", enabled);
 	if (led_set_func)
 		led_set_func(TPACPI_LED_MUTE, !enabled);
 }
@@ -58,8 +59,10 @@ static void hda_fixup_thinkpad_acpi(struct hda_codec *codec,
 	bool removefunc = false;
 
 	if (action == HDA_FIXUP_ACT_PROBE) {
+		codec_info(codec, "XXX hda_fixup_thinkpad_acpi init...\n");
 		if (!is_thinkpad(codec))
 			return;
+		codec_info(codec, "XXX ok, this is thinkpad\n");
 		if (!led_set_func)
 			led_set_func = symbol_request(tpacpi_led_set);
 		if (!led_set_func) {
@@ -70,18 +73,24 @@ static void hda_fixup_thinkpad_acpi(struct hda_codec *codec,
 
 		removefunc = true;
 		if (led_set_func(TPACPI_LED_MUTE, false) >= 0) {
+			codec_info(codec, "XXX ok, mute LED is hooked\n");
 			old_vmaster_hook = spec->vmaster_mute.hook;
 			spec->vmaster_mute.hook = update_tpacpi_mute_led;
 			removefunc = false;
+		} else {
+			codec_err(codec, "XXX mute LED NOT WORKING!\n");
 		}
 		if (led_set_func(TPACPI_LED_MICMUTE, false) >= 0) {
 			if (spec->num_adc_nids > 1)
 				codec_dbg(codec,
 					  "Skipping micmute LED control due to several ADCs");
 			else {
+				codec_info(codec, "XXX ok, mic LED is hooked\n");
 				spec->cap_sync_hook = update_tpacpi_micmute_led;
 				removefunc = false;
 			}
+		} else {
+			codec_err(codec, "XXX mic LED NOT WORKING!\n");
 		}
 	}
 


More information about the Alsa-devel mailing list