[alsa-devel] hda-intel channels hibernate bug

Takashi Iwai tiwai at suse.de
Wed Apr 15 16:12:16 CEST 2009


At Tue, 14 Apr 2009 15:43:33 +0200,
Johannes Berg wrote:
> 
> On Tue, 2009-04-14 at 15:40 +0200, Takashi Iwai wrote:
> 
> > >  Node 0x0d [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
> > >    Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> > > -  Amp-In vals:  [0x00 0x00] [0x00 0x00]
> > > +  Amp-In vals:  [0x80 0x80] [0x00 0x00]
> > >    Amp-Out caps: ofs=0x40, nsteps=0x40, stepsize=0x03, mute=0
> > >    Amp-Out vals:  [0x25 0x25]
> > >    Connection: 2
> > 
> > So the widget 0x0d is muted.  Maybe the channel mode control
> > doesn't do caching the value properly...
> 
> No idea :)
> 
> > Could you give the raw alsa-info.sh output?
> 
> Sure, below (before hibernating).

Thanks.  Could you try the patch below?

> Mind you -- mbp3 isn't really the correct thing for my machine, the
> microphone also seems to be bad when using it -- but I haven't gotten
> around to writing a proper description or trying to find it even.

Hm, could you be a bit more specific?  "seems to be bad" is relatively
subjective expression :)


Takashi

---
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index a4e5e59..fd6e6f3 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -2250,7 +2250,11 @@ int snd_hda_codec_write_cache(struct hda_codec *codec, hda_nid_t nid,
 	err = bus->ops.command(bus, res);
 	if (!err) {
 		struct hda_cache_head *c;
-		u32 key = build_cmd_cache_key(nid, verb);
+		u32 key;
+		/* parm may contain the verb stuff for get/set amp */
+		verb = verb | (parm >> 8);
+		parm &= 0xff;
+		key = build_cmd_cache_key(nid, verb);
 		c = get_alloc_hash(&codec->cmd_cache, key);
 		if (c)
 			c->val = parm;


More information about the Alsa-devel mailing list