lkml.org 
[lkml]   [2009]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 2.6.29 regression: left audio channel broken after resume from suspend with Intel HDA
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,
\
 
 \ /
  Last update: 2009-05-07 09:27    [W:0.184 / U:0.028 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site