Re: 2.6.29 regression: left audio channel broken after resume from suspend with Intel HDA

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 07, 2009 at 00:27:53 +0200, Tino Keitel wrote:
> On Tue, Apr 28, 2009 at 02:23:09 +0200, Tino Keitel wrote:
> 
> [...]
> 
> > I just saw another, major problem: line in doesn't work anymore with
> > 2.6.29 and also 2.6.30-rc3 (no usable input level). It works with
> > 2.6.27.20.
> 
> FYI: I just tried 2.6.28 and line-in was still broken. So the last
> working kernel is 2.6.27.

I tried this:

git bisect start v2.6.28 v2.6.27 sound/pci/hda/patch_sigmatel.c

The result is commit 4f1e6bc3646ab50b8181555ab7e6eeab68b8632a.

I can't use git revert because of conflicts, so I crafted the attached
patch against 2.6.30-rc4-00288-g413f81e, and now line-in works.

Regards,
Tino
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 917bc5d..8846a3b 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -4070,21 +4070,19 @@ static int stac92xx_init(struct hda_codec *codec)
 		hda_nid_t nid = cfg->input_pins[i];
 		if (nid) {
 			unsigned int pinctl, conf;
-			if (i == AUTO_PIN_MIC || i == AUTO_PIN_FRONT_MIC) {
-				/* for mic pins, force to initialize */
-				pinctl = stac92xx_get_vref(codec, nid);
-				pinctl |= AC_PINCTL_IN_EN;
-				stac92xx_auto_set_pinctl(codec, nid, pinctl);
-			} else {
-				pinctl = snd_hda_codec_read(codec, nid, 0,
-					AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
-				/* if PINCTL already set then skip */
-				if (!(pinctl & AC_PINCTL_IN_EN)) {
-					pinctl |= AC_PINCTL_IN_EN;
-					stac92xx_auto_set_pinctl(codec, nid,
-								 pinctl);
-				}
-			}
+			pinctl = snd_hda_codec_read(codec, nid,
+						    0, AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
+			/* if PINCTL already set then skip */
+			if (pinctl & AC_PINCAP_IN)
+				continue;
+			pinctl = AC_PINCTL_IN_EN;
+			if (i == AUTO_PIN_MIC || i == AUTO_PIN_FRONT_MIC)
+				pinctl |= stac92xx_get_vref(codec, nid);
+			stac92xx_auto_set_pinctl(codec, nid, pinctl);
+
+
+
+
 			conf = snd_hda_codec_get_pincfg(codec, nid);
 			if (get_defcfg_connect(conf) != AC_JACK_PORT_FIXED) {
 				enable_pin_detect(codec, nid,
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux