Broken mute LED on Hp pavilion 17
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Undecided
|
David Henningsson |
Bug Description
This bug is for tracking purposes, please do not triage.
Changed in linux (Ubuntu): | |
assignee: | nobody → David Henningsson (diwic) |
status: | New → In Progress |
David Henningsson (diwic) wrote : | #1 |
David Henningsson (diwic) wrote : [PATCH 1/2] ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec) | #2 |
David Henningsson (diwic) wrote : Re: [alsa-devel] [PATCH] ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec) | #3 |
Sorry for the misleading subject in the previous email. There is only
one patch.
On 01/07/2013 10:51 AM, David Henningsson wrote:
> The mute LED is in this case connected to the Mic1 VREF.
>
> The machine also exposes the following string in BIOS:
> "HP_Mute_LED_0_A", so if more machines are coming, it probably
> makes sense to try to do something more generic, like for the
> IDT codec.
--
David Henningsson, Canonical Ltd.
https:/
Takashi Iwai (tiwai) wrote : Re: [PATCH 1/2] ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec) | #4 |
At Mon, 7 Jan 2013 10:51:29 +0100,
David Henningsson wrote:
>
> The mute LED is in this case connected to the Mic1 VREF.
>
> The machine also exposes the following string in BIOS:
> "HP_Mute_LED_0_A", so if more machines are coming, it probably
> makes sense to try to do something more generic, like for the
> IDT codec.
Interesting. So they still point "A" as the output pin A, not NID
0x0a.
> Cc: <email address hidden>
> BugLink: https:/
> Signed-off-by: David Henningsson <email address hidden>
> ---
> sound/pci/
> 1 file changed, 30 insertions(+), 1 deletion(-)
>
> I know this is a copy-paste, but I didn't really find a better and more
> condensed way to do it. Perhaps if we get a third variation it would make
> sense to write a more generic version.
Yes, we can improve it better later.
> Also, Alsa-info is available at https:/
>
> diff --git a/sound/
> index 6ee3459..2e6803e 100644
> --- a/sound/
> +++ b/sound/
> @@ -5992,7 +5992,30 @@ static void alc269_
> spec->automute_hook = alc269_
> }
>
> -/* update mute-LED according to the speaker mute state via mic2 VREF pin */
> +/* update mute-LED according to the speaker mute state via mic VREF pin */
Forgot to restore the comment for alc269_
> +static void alc269_
> +{
> + struct hda_codec *codec = private_data;
> + unsigned int pinval = AC_PINCTL_IN_EN + (enabled ?
> + AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80);
> + snd_hda_
> +}
> +
> +static void alc269_
> + const struct alc_fixup *fix, int action)
> +{
> + struct alc_spec *spec = codec->spec;
> + switch (action) {
> + case ALC_FIXUP_
> + spec->vmaster_
> + snd_hda_
> + /* fallthru */
> + case ALC_FIXUP_ACT_INIT:
> + snd_hda_
> + break;
> + }
> +}
> +
> static void alc269_
Here...
thanks,
Takashi
> {
> struct hda_codec *codec = private_data;
> @@ -6043,6 +6066,7 @@ enum {
> ALC269_FIXUP_DMIC,
> ALC269VB_
> ALC269VB_
> + ALC269_
> ALC269_
> ALC269_
> ALC269_
> @@ -6171,6 +6195,10 @@ static const struct alc_fixup alc269_fixups[] = {
> { }
> },
> },
> + [ALC269_
> + .type = ALC_FIXUP_FUNC,
> + .v.func = alc269_
> + },
> [ALC269_
> .type = ALC_FIXUP_FUNC,
> .v.func = alc269_
> @@ -6215,6 +6243,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> SND_PCI_
David Henningsson (diwic) wrote : | #5 |
[removing stable from CC]
On 01/07/2013 11:49 AM, Takashi Iwai wrote:
> At Mon, 7 Jan 2013 10:51:29 +0100,
> David Henningsson wrote:
>>
>> The mute LED is in this case connected to the Mic1 VREF.
>>
>> The machine also exposes the following string in BIOS:
>> "HP_Mute_LED_0_A", so if more machines are coming, it probably
>> makes sense to try to do something more generic, like for the
>> IDT codec.
>
> Interesting. So they still point "A" as the output pin A, not NID
> 0x0a.
The existing quirk seems old; but I don't know if that one has a BIOS
string. Would be interesting to know to have something to compare with.
>> Cc: <email address hidden>
>> BugLink: https:/
>> Signed-off-by: David Henningsson <email address hidden>
>> ---
>> sound/pci/
>> 1 file changed, 30 insertions(+), 1 deletion(-)
>>
>> I know this is a copy-paste, but I didn't really find a better and more
>> condensed way to do it. Perhaps if we get a third variation it would make
>> sense to write a more generic version.
>
> Yes, we can improve it better later.
>
>> Also, Alsa-info is available at https:/
>>
>> diff --git a/sound/
>> index 6ee3459..2e6803e 100644
>> --- a/sound/
>> +++ b/sound/
>> @@ -5992,7 +5992,30 @@ static void alc269_
>> spec->automute_hook = alc269_
>> }
>>
>> -/* update mute-LED according to the speaker mute state via mic2 VREF pin */
>> +/* update mute-LED according to the speaker mute state via mic VREF pin */
>
> Forgot to restore the comment for alc269_
I thought the same comment now could cover both quirks, but I can make
one comment for each quirk if that is clearer?
>
>> +static void alc269_
>> +{
>> + struct hda_codec *codec = private_data;
>> + unsigned int pinval = AC_PINCTL_IN_EN + (enabled ?
>> + AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80);
>> + snd_hda_
>> +}
>> +
>> +static void alc269_
>> + const struct alc_fixup *fix, int action)
>> +{
>> + struct alc_spec *spec = codec->spec;
>> + switch (action) {
>> + case ALC_FIXUP_
>> + spec->vmaster_
>> + snd_hda_
>> + /* fallthru */
>> + case ALC_FIXUP_ACT_INIT:
>> + snd_hda_
>> + break;
>> + }
>> +}
>> +
>> static void alc269_
>
> Here...
>
>
> thanks,
>
> Takashi
>
>
>> {
>> struct hda_codec *codec = private_data;
>> @@ -6043,6 +6066,7 @@ enum {
>> ALC269_FIXUP_DMIC,
>> ALC269VB_
>> ALC269VB_
>> + ALC269_
>> ALC269_
>> ALC269_
>> ALC269_
>> @@ -6171,6 ...
Takashi Iwai (tiwai) wrote : | #6 |
At Mon, 07 Jan 2013 11:53:38 +0100,
David Henningsson wrote:
>
> [removing stable from CC]
>
> On 01/07/2013 11:49 AM, Takashi Iwai wrote:
> > At Mon, 7 Jan 2013 10:51:29 +0100,
> > David Henningsson wrote:
> >>
> >> The mute LED is in this case connected to the Mic1 VREF.
> >>
> >> The machine also exposes the following string in BIOS:
> >> "HP_Mute_LED_0_A", so if more machines are coming, it probably
> >> makes sense to try to do something more generic, like for the
> >> IDT codec.
> >
> > Interesting. So they still point "A" as the output pin A, not NID
> > 0x0a.
>
> The existing quirk seems old; but I don't know if that one has a BIOS
> string. Would be interesting to know to have something to compare with.
>
> >> Cc: <email address hidden>
> >> BugLink: https:/
> >> Signed-off-by: David Henningsson <email address hidden>
> >> ---
> >> sound/pci/
> >> 1 file changed, 30 insertions(+), 1 deletion(-)
> >>
> >> I know this is a copy-paste, but I didn't really find a better and more
> >> condensed way to do it. Perhaps if we get a third variation it would make
> >> sense to write a more generic version.
> >
> > Yes, we can improve it better later.
> >
> >> Also, Alsa-info is available at https:/
> >>
> >> diff --git a/sound/
> >> index 6ee3459..2e6803e 100644
> >> --- a/sound/
> >> +++ b/sound/
> >> @@ -5992,7 +5992,30 @@ static void alc269_
> >> spec->automute_hook = alc269_
> >> }
> >>
> >> -/* update mute-LED according to the speaker mute state via mic2 VREF pin */
> >> +/* update mute-LED according to the speaker mute state via mic VREF pin */
> >
> > Forgot to restore the comment for alc269_
>
> I thought the same comment now could cover both quirks, but I can make
> one comment for each quirk if that is clearer?
Yes, please. It's not so obvious that the comment covers both functions.
Takashi
> >
> >> +static void alc269_
> >> +{
> >> + struct hda_codec *codec = private_data;
> >> + unsigned int pinval = AC_PINCTL_IN_EN + (enabled ?
> >> + AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80);
> >> + snd_hda_
> >> +}
> >> +
> >> +static void alc269_
> >> + const struct alc_fixup *fix, int action)
> >> +{
> >> + struct alc_spec *spec = codec->spec;
> >> + switch (action) {
> >> + case ALC_FIXUP_
> >> + spec->vmaster_
> >> + snd_hda_
> >> + /* fallthru */
> >> + case ALC_FIXUP_ACT_INIT:
> >> + snd_hda_
> >> + break;
> >> + }
> >> +}
> >> +
> >> static void alc269_
> >
> > Here...
> >
> >
> > thanks,
> >
> > Takashi...
David Henningsson (diwic) wrote : [PATCH v2] ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec) | #7 |
The mute LED is in this case connected to the Mic1 VREF.
The machine also exposes the following string in BIOS:
"HP_Mute_LED_0_A", so if more machines are coming, it probably
makes sense to try to do something more generic, like for the
IDT codec.
Cc: <email address hidden>
BugLink: https:/
Signed-off-by: David Henningsson <email address hidden>
---
sound/
1 file changed, 30 insertions(+)
diff --git a/sound/
index 6ee3459..71ae23d 100644
--- a/sound/
+++ b/sound/
@@ -5992,6 +5992,30 @@ static void alc269_
spec-
}
+/* update mute-LED according to the speaker mute state via mic1 VREF pin */
+static void alc269_
+{
+ struct hda_codec *codec = private_data;
+ unsigned int pinval = AC_PINCTL_IN_EN + (enabled ?
+ AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80);
+ snd_hda_
+}
+
+static void alc269_
+ const struct alc_fixup *fix, int action)
+{
+ struct alc_spec *spec = codec->spec;
+ switch (action) {
+ case ALC_FIXUP_
+ spec->vmaster_
+ snd_hda_
+ /* fallthru */
+ case ALC_FIXUP_ACT_INIT:
+ snd_hda_
+ break;
+ }
+}
+
/* update mute-LED according to the speaker mute state via mic2 VREF pin */
static void alc269_
{
@@ -6043,6 +6067,7 @@ enum {
ALC269_
ALC269VB_
ALC269VB_
+ ALC269_
ALC269_
ALC269_
ALC269_
@@ -6171,6 +6196,10 @@ static const struct alc_fixup alc269_fixups[] = {
{ }
},
},
+ [ALC269_
+ .type = ALC_FIXUP_FUNC,
+ .v.func = alc269_
+ },
[ALC269_
.type = ALC_FIXUP_FUNC,
.v.func = alc269_
@@ -6215,6 +6244,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_
SND_PCI_
SND_PCI_
+ SND_PCI_
SND_PCI_
SND_PCI_
SND_PCI_
--
1.7.9.5
Takashi Iwai (tiwai) wrote : | #8 |
At Mon, 7 Jan 2013 12:03:47 +0100,
David Henningsson wrote:
>
> The mute LED is in this case connected to the Mic1 VREF.
>
> The machine also exposes the following string in BIOS:
> "HP_Mute_LED_0_A", so if more machines are coming, it probably
> makes sense to try to do something more generic, like for the
> IDT codec.
>
> Cc: <email address hidden>
> BugLink: https:/
> Signed-off-by: David Henningsson <email address hidden>
Thanks, applied now.
Takashi
> ---
> sound/pci/
> 1 file changed, 30 insertions(+)
>
> diff --git a/sound/
> index 6ee3459..71ae23d 100644
> --- a/sound/
> +++ b/sound/
> @@ -5992,6 +5992,30 @@ static void alc269_
> spec->automute_hook = alc269_
> }
>
> +/* update mute-LED according to the speaker mute state via mic1 VREF pin */
> +static void alc269_
> +{
> + struct hda_codec *codec = private_data;
> + unsigned int pinval = AC_PINCTL_IN_EN + (enabled ?
> + AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80);
> + snd_hda_
> +}
> +
> +static void alc269_
> + const struct alc_fixup *fix, int action)
> +{
> + struct alc_spec *spec = codec->spec;
> + switch (action) {
> + case ALC_FIXUP_
> + spec->vmaster_
> + snd_hda_
> + /* fallthru */
> + case ALC_FIXUP_ACT_INIT:
> + snd_hda_
> + break;
> + }
> +}
> +
> /* update mute-LED according to the speaker mute state via mic2 VREF pin */
> static void alc269_
> {
> @@ -6043,6 +6067,7 @@ enum {
> ALC269_FIXUP_DMIC,
> ALC269VB_
> ALC269VB_
> + ALC269_
> ALC269_
> ALC269_
> ALC269_
> @@ -6171,6 +6196,10 @@ static const struct alc_fixup alc269_fixups[] = {
> { }
> },
> },
> + [ALC269_
> + .type = ALC_FIXUP_FUNC,
> + .v.func = alc269_
> + },
> [ALC269_
> .type = ALC_FIXUP_FUNC,
> .v.func = alc269_
> @@ -6215,6 +6244,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> SND_PCI_
> SND_PCI_
> SND_PCI_
> + SND_PCI_
> SND_PCI_
> SND_PCI_
> SND_PCI_
> --
> 1.7.9.5
>
Launchpad Janitor (janitor) wrote : | #9 |
This bug was fixed in the package linux - 3.8.0-0.2
---------------
linux (3.8.0-0.2) raring; urgency=low
[ Tim Gardner ]
* [packaging] Add macro to selectively disable building perf
* [packaging] Cannot depend on universe package libaudit-dev
-- Tim Gardner <email address hidden> Thu, 10 Jan 2013 12:43:24 -0700
Changed in linux (Ubuntu): | |
status: | In Progress → Fix Released |
Albert Pool (albertpool) wrote : | #10 |
I'm probably looking into fixing the mute LED on HP Pavilion dv6730ed (Realtek ALC268 codec) too. Can anybody tell me how to check for the mentioned HP_Mute_LED thingy in BIOS?
David Henningsson (diwic) wrote : | #11 |
@Albert,
You can find the string when you look at the output of "sudo dmidecode".
Would you mind filing a new bug report for your issue, and include https:/
Luis Henriques (henrix) wrote : | #12 |
This bug is awaiting verification that the kernel for Quantal in -proposed solves the problem (3.5.0-24.37). Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-
If verification is not done by one week from today, this fix will be dropped from the source code, and this bug will be closed.
See https:/
tags: | added: verification-needed-quantal |
Luis Henriques (henrix) wrote : | #13 |
I'm tagging this bug as verified for Quantal as the fix came in from the stable update to 3.5.7.3.
tags: |
added: verification-done-quantal removed: verification-needed-quantal |
Adam Conrad (adconrad) wrote : Update Released | #14 |
The verification of this Stable Release Update has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regresssions.
The mute LED is in this case connected to the Mic1 VREF.
The machine also exposes the following string in BIOS:
"HP_Mute_LED_0_A", so if more machines are coming, it probably
makes sense to try to do something more generic, like for the
IDT codec.
Cc: <email address hidden> /bugs.launchpad .net/bugs/ 1096789 pci/hda/ patch_realtek. c | 31 +++++++ +++++++ +++++++ +++++++ ++-
BugLink: https:/
Signed-off-by: David Henningsson <email address hidden>
---
sound/
1 file changed, 30 insertions(+), 1 deletion(-)
I know this is a copy-paste, but I didn't really find a better and more
condensed way to do it. Perhaps if we get a third variation it would make
sense to write a more generic version.
Also, Alsa-info is available at https:/ /bugs.launchpad .net/ubuntu/ +source/ linux/+ bug/1096789/ +attachment/ 3476010/ +files/ alsa-info. txt
diff --git a/sound/ pci/hda/ patch_realtek. c b/sound/ pci/hda/ patch_realtek. c pci/hda/ patch_realtek. c pci/hda/ patch_realtek. c fixup_quanta_ mute(struct hda_codec *codec, >automute_ hook = alc269_ quanta_ automute;
index 6ee3459..2e6803e 100644
--- a/sound/
+++ b/sound/
@@ -5992,7 +5992,30 @@ static void alc269_
spec-
}
-/* update mute-LED according to the speaker mute state via mic2 VREF pin */ fixup_mic1_ mute_hook( void *private_data, int enabled) set_pin_ ctl_cache( codec, 0x18, pinval); fixup_mic1_ mute(struct hda_codec *codec, ACT_BUILD: mute.hook = alc269_ fixup_mic1_ mute_hook; add_vmaster_ hook(codec, &spec-> vmaster_ mute, true); sync_vmaster_ hook(&spec- >vmaster_ mute); fixup_mic2_ mute_hook( void *private_data, int enabled) FIXUP_DMIC, FIXUP_AMIC, FIXUP_DMIC, FIXUP_MIC1_ MUTE_LED, FIXUP_MIC2_ MUTE_LED, FIXUP_INV_ DMIC, FIXUP_LENOVO_ DOCK, FIXUP_MIC1_ MUTE_LED] = { fixup_mic1_ mute, FIXUP_MIC2_ MUTE_LED] = { fixup_mic2_ mute, QUIRK(0x1025, 0x029b, "Acer 1810TZ", ALC269_ FIXUP_INV_ DMIC), QUIRK(0x1025, 0x0349, "Acer AOD260", ALC269_ FIXUP_INV_ DMIC), QUIRK(0x103c, 0x1586, "HP", ALC269_ FIXUP_MIC2_ MUTE_LED) , QUIRK(0x103c, 0x1972, "HP Pavilion 17", ALC269_ FIXUP_MIC1_ MUTE_LED) , QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_ FIXUP_DMIC) , QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_ FIXUP_DMIC) , QUIRK(0x1043, 0x1a13, "Asus ...
+/* update mute-LED according to the speaker mute state via mic VREF pin */
+static void alc269_
+{
+ struct hda_codec *codec = private_data;
+ unsigned int pinval = AC_PINCTL_IN_EN + (enabled ?
+ AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80);
+ snd_hda_
+}
+
+static void alc269_
+ const struct alc_fixup *fix, int action)
+{
+ struct alc_spec *spec = codec->spec;
+ switch (action) {
+ case ALC_FIXUP_
+ spec->vmaster_
+ snd_hda_
+ /* fallthru */
+ case ALC_FIXUP_ACT_INIT:
+ snd_hda_
+ break;
+ }
+}
+
static void alc269_
{
struct hda_codec *codec = private_data;
@@ -6043,6 +6066,7 @@ enum {
ALC269_
ALC269VB_
ALC269VB_
+ ALC269_
ALC269_
ALC269_
ALC269_
@@ -6171,6 +6195,10 @@ static const struct alc_fixup alc269_fixups[] = {
{ }
},
},
+ [ALC269_
+ .type = ALC_FIXUP_FUNC,
+ .v.func = alc269_
+ },
[ALC269_
.type = ALC_FIXUP_FUNC,
.v.func = alc269_
@@ -6215,6 +6243,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_
SND_PCI_
SND_PCI_
+ SND_PCI_
SND_PCI_
SND_PCI_
SND_PCI_