Skip to contentSkip to conversation

No sound on HP Pavilion dv6, STAC92xx

Regression Luis Henriques 2 participants 10 messages Jun 26, 2012 – Jun 27, 2012 Sound

lore
Share & tools
lore
#0 lore raw

Hi,

After commit b0791dda813c179e539b0fc1ecd3f5f30f2571e2 ("ALSA: hda/idt
- Fix power-map for speaker-pins with some HP laptops") we have several bug reports about not having sound on HP Pavilion laptops.

Here's a link to one of these bug reports:

http://bugs.launchpad.net/bugs/1013183

After reverting the referred commit, everything seems to be working fine again.

Any ideas/fixes?

Cheers,
--
Luis

#1 lore raw

At Tue, 26 Jun 2012 15:13:43 +0100,

Quoted 7 lines · Luis Henriques

Hi,

After commit b0791dda813c179e539b0fc1ecd3f5f30f2571e2 ("ALSA: hda/idt
- Fix power-map for speaker-pins with some HP laptops") we have several bug reports about not having sound on HP Pavilion laptops.

Quoted 8 lines

Here's a link to one of these bug reports:

http://bugs.launchpad.net/bugs/1013183

After reverting the referred commit, everything seems to be working fine again.

Any ideas/fixes?

Could you give alsa-info.sh output on both working and non-working kernels?

Takashi

#2 lore raw
Quoted 13 lines · Takashi Iwai

At Tue, 26 Jun 2012 15:13:43 +0100,

Quoted 11 lines · Luis Henriques

Hi,

After commit b0791dda813c179e539b0fc1ecd3f5f30f2571e2 ("ALSA: hda/idt
- Fix power-map for speaker-pins with some HP laptops") we have several bug reports about not having sound on HP Pavilion laptops.

Here's a link to one of these bug reports:

http://bugs.launchpad.net/bugs/1013183

Quoted 7 lines
Quoted 4 lines

After reverting the referred commit, everything seems to be working fine again.

Any ideas/fixes?

Could you give alsa-info.sh output on both working and non-working kernels?

You should be to get the same information in the bug URL. But I'll try to get that info using that script from one of the bug reports.

Thanks
--
Luis

Quoted 8 lines

Takashi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

#3 lore raw

At Tue, 26 Jun 2012 15:27:48 +0100,

Quoted 19 lines · Luis Henriques
Quoted 16 lines · Takashi Iwai

At Tue, 26 Jun 2012 15:13:43 +0100,

Quoted 14 lines · Luis Henriques

Hi,

After commit b0791dda813c179e539b0fc1ecd3f5f30f2571e2 ("ALSA: hda/idt
- Fix power-map for speaker-pins with some HP laptops") we have several bug reports about not having sound on HP Pavilion laptops.

Here's a link to one of these bug reports:

http://bugs.launchpad.net/bugs/1013183

After reverting the referred commit, everything seems to be working fine again.

Quoted 6 lines
Quoted 4 lines
Quoted 1 line

Any ideas/fixes?

Could you give alsa-info.sh output on both working and non-working kernels?

You should be to get the same information in the bug URL.

It's not same :) Many information are missing, e.g. sysfs pincfgs. alsa-info.sh output contains the whole information in a single file, and above all, it can be fed to hda-emu for analyzing the problem.

Takashi

#4 lore raw
In reply to Takashi Iwai

At Tue, 26 Jun 2012 16:16:36 +0200,

Quoted 14 lines · Takashi Iwai

At Tue, 26 Jun 2012 15:13:43 +0100,

Quoted 11 lines · Luis Henriques

Hi,

After commit b0791dda813c179e539b0fc1ecd3f5f30f2571e2 ("ALSA: hda/idt
- Fix power-map for speaker-pins with some HP laptops") we have several bug reports about not having sound on HP Pavilion laptops.

Here's a link to one of these bug reports:

http://bugs.launchpad.net/bugs/1013183

Quoted 7 lines
Quoted 4 lines

After reverting the referred commit, everything seems to be working fine again.

Any ideas/fixes?

Could you give alsa-info.sh output on both working and non-working kernels?

Also, does it really happen with the upstream kernels (vanilla 3.2.y and Linus tree) without ubuntu changes? If yes, I'd need alsa-info.sh outputs on these, too.

thanks,

Takashi

#5 lore raw

At Tue, 26 Jun 2012 17:10:26 +0200,

Quoted 20 lines · Takashi Iwai

At Tue, 26 Jun 2012 16:16:36 +0200,

Quoted 17 lines · Takashi Iwai

At Tue, 26 Jun 2012 15:13:43 +0100,

Quoted 14 lines · Luis Henriques

Hi,

After commit b0791dda813c179e539b0fc1ecd3f5f30f2571e2 ("ALSA: hda/idt
- Fix power-map for speaker-pins with some HP laptops") we have several bug reports about not having sound on HP Pavilion laptops.

Here's a link to one of these bug reports:

http://bugs.launchpad.net/bugs/1013183

After reverting the referred commit, everything seems to be working fine again.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

Any ideas/fixes?

Could you give alsa-info.sh output on both working and non-working kernels?

Also, does it really happen with the upstream kernels (vanilla 3.2.y and Linus tree) without ubuntu changes? If yes, I'd need alsa-info.sh outputs on these, too.

Never mind, I found the culprit.
The fixed patch for 3.5 kernel is below.

For 3.4 and older kernels, another patch is necessary. Will put in another post.

Takashi

---
From: Takashi Iwai <[email protected]>
Subject: [PATCH] ALSA: hda - Fix power-map regression for HP dv6 & co

The recent fix for power-map controls (commit b0791dda813) caused regressions on some other HP laptops. They have fixed pins but these pins are exposed as jack-detectable. Thus the driver tries to control the power-map dynamically per jack detection where it never gets on.

This patch adds the check of connection and it assumes the no jack detection is available for fixed pins no matter what pin capability says.

---
 sound/pci/hda/patch_sigmatel.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
sound/pci/hda/patch_sigmatel.c +6 -1
index 7db8228..0767528 100644
@@ -4367,7 +4367,7 @@ static int stac92xx_init(struct hda_codec *codec)
 					 AC_PINCTL_IN_EN);
 	for (i = 0; i < spec->num_pwrs; i++)  {
 		hda_nid_t nid = spec->pwr_nids[i];
-		int pinctl, def_conf;
+		unsigned int pinctl, def_conf;
 
 		def_conf = snd_hda_codec_get_pincfg(codec, nid);
 		def_conf = get_defcfg_connect(def_conf);
@@ -4376,6 +4376,11 @@ static int stac92xx_init(struct hda_codec *codec)
 			stac_toggle_power_map(codec, nid, 0);
 			continue;
 		}
+		if (def_conf == AC_JACK_PORT_FIXED) {
+			/* no need for jack detection for fixed pins */
+			stac_toggle_power_map(codec, nid, 1);
+			continue;
+		}
 		/* power on when no jack detection is available */
 		/* or when the VREF is used for controlling LED */
 		if (!spec->hp_detect ||
Signature · 1 line
1.7.10.4
#6 lore raw

Below is the patch for 3.4 and older.

Takashi

---
From: Takashi Iwai <[email protected]>
Subject: [PATCH] ALSA: hda - Fix power-map regression for HP dv6 & co

commit 6e1c39c6b00d9141a82c231ba7c5e5b1716974b2 upstream.

The recent fix for power-map controls (commit b0791dda813) caused regressions on some other HP laptops. They have fixed pins but these pins are exposed as jack-detectable. Thus the driver tries to control the power-map dynamically per jack detection where it never gets on.

This patch corrects the condition check for fixed pins so that the power-map is set always for these pins.

NOTE: this is no simple backport from 3.5 kernel. Since 3.5 kernel had significant code change in the relevant part, I had to fix this differently.

---
 sound/pci/hda/patch_sigmatel.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
sound/pci/hda/patch_sigmatel.c +2 -2
index 7b7a516..2b973f5 100644
@@ -4457,7 +4457,7 @@ static int stac92xx_init(struct hda_codec *codec)
 					 AC_PINCTL_IN_EN);
 	for (i = 0; i < spec->num_pwrs; i++)  {
 		hda_nid_t nid = spec->pwr_nids[i];
-		int pinctl, def_conf;
+		unsigned int pinctl, def_conf;
 
 		/* power on when no jack detection is available */
 		/* or when the VREF is used for controlling LED */
@@ -4484,7 +4484,7 @@ static int stac92xx_init(struct hda_codec *codec)
 		def_conf = get_defcfg_connect(def_conf);
 		/* skip any ports that don't have jacks since presence
  		 * detection is useless */
-		if (def_conf != AC_JACK_PORT_NONE &&
+		if (def_conf != AC_JACK_PORT_COMPLEX ||
 		    !is_jack_detectable(codec, nid)) {
 			stac_toggle_power_map(codec, nid, 1);
 			continue;
Signature · 1 line
1.7.10.4
#7 lore raw

Hi,

Quoted 2 lines · Takashi Iwai

Below is the patch for 3.4 and older.

Just to let you know that we are receiving positive feedback on this patch from the bug reporters.

I believe you plan to Cc: this patch to -stable, right? We had this issue reported against 3.2.y.

Cheers,
--
Luis

Quoted 49 lines

Takashi

---
From: Takashi Iwai <[email protected]>
Subject: [PATCH] ALSA: hda - Fix power-map regression for HP dv6 & co

commit 6e1c39c6b00d9141a82c231ba7c5e5b1716974b2 upstream.

The recent fix for power-map controls (commit b0791dda813) caused regressions on some other HP laptops. They have fixed pins but these pins are exposed as jack-detectable. Thus the driver tries to control the power-map dynamically per jack detection where it never gets on.

This patch corrects the condition check for fixed pins so that the power-map is set always for these pins.

NOTE: this is no simple backport from 3.5 kernel. Since 3.5 kernel had significant code change in the relevant part, I had to fix this differently.

---
 sound/pci/hda/patch_sigmatel.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
sound/pci/hda/patch_sigmatel.c +2 -2
index 7b7a516..2b973f5 100644
@@ -4457,7 +4457,7 @@ static int stac92xx_init(struct hda_codec *codec)
 					 AC_PINCTL_IN_EN);
 	for (i = 0; i < spec->num_pwrs; i++)  {
 		hda_nid_t nid = spec->pwr_nids[i];
-		int pinctl, def_conf;
+		unsigned int pinctl, def_conf;
 
 		/* power on when no jack detection is available */
 		/* or when the VREF is used for controlling LED */
@@ -4484,7 +4484,7 @@ static int stac92xx_init(struct hda_codec *codec)
 		def_conf = get_defcfg_connect(def_conf);
 		/* skip any ports that don't have jacks since presence
  		 * detection is useless */
-		if (def_conf != AC_JACK_PORT_NONE &&
+		if (def_conf != AC_JACK_PORT_COMPLEX ||
 		    !is_jack_detectable(codec, nid)) {
 			stac_toggle_power_map(codec, nid, 1);
 			continue;
#8 lore raw

At Wed, 27 Jun 2012 10:09:43 +0100,

Quoted 5 lines · Luis Henriques

Hi,

Takashi Iwai <[email protected]> writes:

Quoted 8 lines
Quoted 2 lines

Below is the patch for 3.4 and older.

Just to let you know that we are receiving positive feedback on this patch from the bug reporters.

I believe you plan to Cc: this patch to -stable, right? We had this issue reported against 3.2.y.

It's not Cc'ed because it cannot be cherry-picked. I'll post the patch to stable ML once after the upstream fix is merged to Linus tree.

thanks,

Takashi

Quoted 55 lines

Cheers,
--
Luis

Quoted 49 lines

Takashi

---
From: Takashi Iwai <[email protected]>
Subject: [PATCH] ALSA: hda - Fix power-map regression for HP dv6 & co

commit 6e1c39c6b00d9141a82c231ba7c5e5b1716974b2 upstream.

The recent fix for power-map controls (commit b0791dda813) caused regressions on some other HP laptops. They have fixed pins but these pins are exposed as jack-detectable. Thus the driver tries to control the power-map dynamically per jack detection where it never gets on.

This patch corrects the condition check for fixed pins so that the power-map is set always for these pins.

NOTE: this is no simple backport from 3.5 kernel. Since 3.5 kernel had significant code change in the relevant part, I had to fix this differently.

---
 sound/pci/hda/patch_sigmatel.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
sound/pci/hda/patch_sigmatel.c +2 -2
index 7b7a516..2b973f5 100644
@@ -4457,7 +4457,7 @@ static int stac92xx_init(struct hda_codec *codec)
 					 AC_PINCTL_IN_EN);
 	for (i = 0; i < spec->num_pwrs; i++)  {
 		hda_nid_t nid = spec->pwr_nids[i];
-		int pinctl, def_conf;
+		unsigned int pinctl, def_conf;
 
 		/* power on when no jack detection is available */
 		/* or when the VREF is used for controlling LED */
@@ -4484,7 +4484,7 @@ static int stac92xx_init(struct hda_codec *codec)
 		def_conf = get_defcfg_connect(def_conf);
 		/* skip any ports that don't have jacks since presence
  		 * detection is useless */
-		if (def_conf != AC_JACK_PORT_NONE &&
+		if (def_conf != AC_JACK_PORT_COMPLEX ||
 		    !is_jack_detectable(codec, nid)) {
 			stac_toggle_power_map(codec, nid, 1);
 			continue;
#9 lore raw
In reply to Takashi Iwai

Hi Takashi,

Quoted 31 lines · Takashi Iwai

At Tue, 26 Jun 2012 17:10:26 +0200,

Quoted 20 lines · Takashi Iwai

At Tue, 26 Jun 2012 16:16:36 +0200,

Quoted 17 lines · Takashi Iwai

At Tue, 26 Jun 2012 15:13:43 +0100,

Quoted 14 lines · Luis Henriques

Hi,

After commit b0791dda813c179e539b0fc1ecd3f5f30f2571e2 ("ALSA: hda/idt
- Fix power-map for speaker-pins with some HP laptops") we have several bug reports about not having sound on HP Pavilion laptops.

Here's a link to one of these bug reports:

http://bugs.launchpad.net/bugs/1013183

After reverting the referred commit, everything seems to be working fine again.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

Any ideas/fixes?

Could you give alsa-info.sh output on both working and non-working kernels?

Also, does it really happen with the upstream kernels (vanilla 3.2.y and Linus tree) without ubuntu changes? If yes, I'd need alsa-info.sh outputs on these, too.

Quoted 6 lines

Never mind, I found the culprit.
The fixed patch for 3.5 kernel is below.

For 3.4 and older kernels, another patch is necessary. Will put in another post.

Great, thanks a lot for your help. I was trying to gather the data from bug reporters, but I guess I can abort that.

I'll try to get someone testing the patch.

Cheers,
--
Luis

Quoted 48 lines

Takashi

---
From: Takashi Iwai <[email protected]>
Subject: [PATCH] ALSA: hda - Fix power-map regression for HP dv6 & co

The recent fix for power-map controls (commit b0791dda813) caused regressions on some other HP laptops. They have fixed pins but these pins are exposed as jack-detectable. Thus the driver tries to control the power-map dynamically per jack detection where it never gets on.

This patch adds the check of connection and it assumes the no jack detection is available for fixed pins no matter what pin capability says.

---
 sound/pci/hda/patch_sigmatel.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
sound/pci/hda/patch_sigmatel.c +6 -1
index 7db8228..0767528 100644
@@ -4367,7 +4367,7 @@ static int stac92xx_init(struct hda_codec *codec)
 					 AC_PINCTL_IN_EN);
 	for (i = 0; i < spec->num_pwrs; i++)  {
 		hda_nid_t nid = spec->pwr_nids[i];
-		int pinctl, def_conf;
+		unsigned int pinctl, def_conf;
 
 		def_conf = snd_hda_codec_get_pincfg(codec, nid);
 		def_conf = get_defcfg_connect(def_conf);
@@ -4376,6 +4376,11 @@ static int stac92xx_init(struct hda_codec *codec)
 			stac_toggle_power_map(codec, nid, 0);
 			continue;
 		}
+		if (def_conf == AC_JACK_PORT_FIXED) {
+			/* no need for jack detection for fixed pins */
+			stac_toggle_power_map(codec, nid, 1);
+			continue;
+		}
 		/* power on when no jack detection is available */
 		/* or when the VREF is used for controlling LED */
 		if (!spec->hp_detect ||