[alsa-devel] 2.6.38.4 broke my audio

Takashi Iwai tiwai at suse.de
Wed Apr 27 21:35:35 CEST 2011


At Wed, 27 Apr 2011 23:17:20 +0700,
Emmanuel Benisty wrote:
> 
> [1  <text/plain; UTF-8 (quoted-printable)>]
> On Wed, Apr 27, 2011 at 10:47 PM, Takashi Iwai <tiwai at suse.de> wrote:
> > At Wed, 27 Apr 2011 21:57:32 +0700,
> > Emmanuel Benisty wrote:
> >>
> >> On Wed, Apr 27, 2011 at 3:36 PM, Takashi Iwai <tiwai at suse.de> wrote:
> >> > At Wed, 27 Apr 2011 08:15:28 +0700,
> >> > Emmanuel Benisty wrote:
> >> >>
> >> >> [1  <text/plain; UTF-8 (quoted-printable)>]
> >> >> On Tue, Apr 26, 2011 at 7:49 PM, Takashi Iwai <tiwai at suse.de> wrote:
> >> >> > At Tue, 26 Apr 2011 08:42:59 +0700,
> >> >> > Emmanuel Benisty wrote:
> >> >> >>
> >> >> >> On Tue, Apr 26, 2011 at 3:25 AM, Takashi Iwai <tiwai at suse.de> wrote:
> >> >> >> > At Mon, 25 Apr 2011 10:34:09 -0700,
> >> >> >> > Greg KH wrote:
> >> >> >> >>
> >> >> >> >> On Mon, Apr 25, 2011 at 11:25:29AM +0200, Takashi Iwai wrote:
> >> >> >> >> > At Sun, 24 Apr 2011 17:01:26 -0700,
> >> >> >> >> > Greg KH wrote:
> >> >> >> >> > >
> >> >> >> >> > > On Sun, Apr 24, 2011 at 11:30:37AM +0100, Andrew Clayton wrote:
> >> >> >> >> > > > Hi guys.
> >> >> >> >> > > >
> >> >> >> >> > > > Just upgraded to .4 from .3 and found my audio was _really_ quiet. All
> >> >> >> >> > > > the mixers looked sane.
> >> >> >> >> > > >
> >> >> >> >> > > > A quick check of the changelog and a revert of:
> >> >> >> >> > > >
> >> >> >> >> > > > commit 58541cc27531727f7120683a7cb123ee3ada4bd4
> >> >> >> >> > > > Author: Takashi Iwai <tiwai at suse.de>
> >> >> >> >> > > > Date:   Mon Mar 28 12:05:31 2011 +0200
> >> >> >> >> > > >
> >> >> >> >> > > >     ALSA: hda - Fix pin-config of Gigabyte mobo
> >> >> >> >> > > >
> >> >> >> >> > > >     commit c6b358748e19ce7e230b0926ac42696bc485a562 upstream.
> >> >> >> >> > > >
> >> >> >> >> > > >     Use pin-fix instead of the static quirk for Gigabyte mobos 1458:a002.
> >> >> >> >> > > >
> >> >> >> >> > > >     Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=677256
> >> >> >> >> > > >     Signed-off-by: Takashi Iwai <tiwai at suse.de>
> >> >> >> >> > > >     Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
> >> >> >> >> > > >
> >> >> >> >> > > > made it normal again.
> >> >> >> >> > >
> >> >> >> >> > > Takashi, do you have a fix for this, or should I revert this from the
> >> >> >> >> > > .38 stable tree?  It looks like we now have 2 reports of this problem.
> >> >> >> >> >
> >> >> >> >> > If we need to revert, I'll do it in the upstream first, as it must hit
> >> >> >> >> > to 2.6.39, too.
> >> >> >> >>
> >> >> >> >> True.
> >> >> >> >>
> >> >> >> >> > But let me check this breakage first.  I'll take a look at it more
> >> >> >> >> > deeply tomorrow.
> >> >> >> >>
> >> >> >> >> Ok, that sounds good.
> >> >> >> >
> >> >> >> > Thanks.
> >> >> >> >
> >> >> >> > Andrew, could you give alsa-info.sh outputs on your machine?
> >> >> >> > Preferably, the outputs both before and after the kernel update would
> >> >> >> > be really helpful.
> >> >> >>
> >> >> >> In case it might help, mine are attached too.
> >> >> >
> >> >> > Thanks.  But the output after update (alsa-info.txt.bad) looks weird.
> >> >> > It contains unexpected pin-update for NID 0x15 (found in
> >> >> > /sys/class/sound/hwC0D0/driver_pin_configs), and thus the mixer
> >> >> > elements created don't match with the results on HD-audio emulator.
> >> >> >
> >> >> > Could you double-check whether you have no modification over 2.6.38.4
> >> >> > driver?
> >> >>
> >> >> Hi Takashi,
> >> >>
> >> >> To double check, I have rebuilt .3 and .4 straight from kernel.org
> >> >> sources with the same config (which I attached, just in case).
> >> >> alsa-info.sh outputs are attached.
> >> >
> >> > Thanks.  The bad output still shows the strange pin-config for NID
> >> > 0x15 while it's not found in the good output.
> >> >
> >> > Could you check the following?
> >> >
> >> > 1. Set model=auto option to snd-hda-intel module and boot 2.6.38.3.
> >> >   Get alsa-info.sh output.
> >> >
> >> > 2. Apply fix1.diff patch below to 2.6.38.4, and boot, get alsa-info.sh
> >> >   again.
> >> >
> >> > 3. Reviert fix1.diff, and apply fix2.diff to 2.6.38.4.  The same
> >> >   procedure.
> >> >
> >> > The point to be checked is the widget 0x15.  In a good case, it should
> >> > have the pin config such as:
> >> >  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
> >> >
> >> > In a bad case, the driver modifies this by some reason to
> >> >  Pin Default 0x99130112: [Fixed] Speaker at Int ATAPI
> >>
> >> Hi Takashi,
> >>
> >> alsa-info.sh outputs are attached. fix1 works, fix2 is still broken.
> >
> > Thanks.  Hm, so it happens only with the patch.  Puzzling.
> >
> > Could you check the messages triggered by the patch below?
> > Does it include 0x15?
> 
> attached is what it gives.

OK, so it's chained wrongly by some reason.  Maybe using bool type
causes a problem for some compiler?

Could you try the patch below instead?  If it works as expected,
you'll see _no_ Surround volume control.

And, what is your configuration, i.e. which output are you testing?
The output from the speaker and/of from the headphone jack?


thanks,

Takashi

---
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index da7cdca..7dece87 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -1689,7 +1689,7 @@ struct alc_model_fixup {
 
 struct alc_fixup {
 	int type;
-	bool chained;
+	int chained;
 	int chain_id;
 	union {
 		unsigned int sku;
@@ -1738,6 +1738,7 @@ static void alc_apply_fixup(struct hda_codec *codec, int action)
 			snd_printdd(KERN_INFO "hda_codec: %s: "
 				    "Apply sku override for %s\n",
 				    codec->chip_name, modelname);
+			printk(KERN_DEBUG "XXX hda_codec: sku\n");
 			spec->cdefine.sku_cfg = fix->v.sku;
 			spec->cdefine.fixup = 1;
 			break;
@@ -1748,9 +1749,12 @@ static void alc_apply_fixup(struct hda_codec *codec, int action)
 			snd_printdd(KERN_INFO "hda_codec: %s: "
 				    "Apply pincfg for %s\n",
 				    codec->chip_name, modelname);
-			for (; cfg->nid; cfg++)
+			printk(KERN_DEBUG "XXX hda_codec: pins\n");
+			for (; cfg->nid; cfg++) {
+				printk(KERN_DEBUG "hda_codec: set pincfg 0x%02x to %08x\n", cfg->nid, cfg->val);
 				snd_hda_codec_set_pincfg(codec, cfg->nid,
 							 cfg->val);
+			}
 			break;
 		case ALC_FIXUP_VERBS:
 			if (action != ALC_FIXUP_ACT_PROBE || !fix->v.verbs)
@@ -1758,6 +1762,7 @@ static void alc_apply_fixup(struct hda_codec *codec, int action)
 			snd_printdd(KERN_INFO "hda_codec: %s: "
 				    "Apply fix-verbs for %s\n",
 				    codec->chip_name, modelname);
+			printk(KERN_DEBUG "XXX hda_codec: verbs\n");
 			add_verb(codec->spec, fix->v.verbs);
 			break;
 		case ALC_FIXUP_FUNC:
@@ -1766,6 +1771,7 @@ static void alc_apply_fixup(struct hda_codec *codec, int action)
 			snd_printdd(KERN_INFO "hda_codec: %s: "
 				    "Apply fix-func for %s\n",
 				    codec->chip_name, modelname);
+			printk(KERN_DEBUG "XXX hda_codec: func\n");
 			fix->v.func(codec, fix, action);
 			break;
 		default:


More information about the Alsa-devel mailing list