[alsa-devel] No sound with nVidia Corporation MCP79 High Definition Audio (rev b1) (Macbook Pro 5, 5)

Andreas Nüßlein nutz at unfoog.de
Fri Jul 10 02:27:57 CEST 2009


On Thursday 09 July 2009 09:18:57 you wrote:
> At Wed, 8 Jul 2009 18:11:29 +0200,
>
> Andreas Nüßlein wrote:
> > On Wednesday 08 July 2009 16:49:34 you wrote:
> > > At Tue, 07 Jul 2009 12:53:48 +0200,
> > >
> > > I wrote:
> > > > At Tue, 7 Jul 2009 11:49:57 +0200,
> > > >
> > > > Andreas Nüßlein wrote:
> > > > > On Tuesday 07 July 2009 08:00:19 you wrote:
> > > > > > At Mon, 6 Jul 2009 22:14:56 +0200,
> > > > > >
> > > > > > Andreas Nüßlein wrote:
> > > > > > > On Monday 06 July 2009 21:26:18 you wrote:
> > > > > > > > At Mon, 06 Jul 2009 11:16:35 -0600,
> > > > > > > >
> > > > > > > > Sean Burke wrote:
> > > > > > > > > Scríobh Takashi Iwai:
> > > > > > > > > > At Mon, 6 Jul 2009 17:53:46 +0200,
> > > > > > > > > >
> > > > > > > > > > Andreas Nüßlein wrote:
> > > > > > > > > >>> The missing pin configuration initialization was
> > > > > > > > > >>> already fixed by the driver overriding it after
> > > > > > > > > >>> checking PCI SSID (which is different from the codec
> > > > > > > > > >>> SSID).  So, this should be no problem.
> > > > > > > > > >>>
> > > > > > > > > >>> However, the reason why the analog output doesn't work
> > > > > > > > > >>> might be different from that.  There might be something
> > > > > > > > > >>> else missing, but I don't know.
> > > > > > > > > >>>
> > > > > > > > > >>>
> > > > > > > > > >>> Takashi
> > > > > > > > > >>
> > > > > > > > > >> oh =(
> > > > > > > > > >>
> > > > > > > > > >>
> > > > > > > > > >> hmm.. anything i can do?  would it help if i tried
> > > > > > > > > >> changing values randomly with hda-analyzer.py?
> > > > > > > > > >
> > > > > > > > > > Well, did the driver without my change work more or less
> > > > > > > > > > with the analog audio, or have you never gotten the
> > > > > > > > > > analog output? You can use the generic parser (i.e. the
> > > > > > > > > > state without cirrus patch) by passing model=generic
> > > > > > > > > > option to snd-hda-intel.
> > > > > > > > >
> > > > > > > > > For my part, nothing worked with the generic driver. I
> > > > > > > > > can't confirm digital out, but I can confirm that the kfree
> > > > > > > > > error is gone. What options are open for figuring out what
> > > > > > > > > remains?
> > > > > > > >
> > > > > > > > Easy things to test are GPIO bits.  Run hda-verb like
> > > > > > > >
> > > > > > > > 	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x0f
> > > > > > > > 	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x0f
> > > > > > > > or
> > > > > > > > 	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x0f
> > > > > > > > 	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x0f
> > > > > > > >
> > > > > > > > etc.  CS4206 seems to have 4 GPIO lines, and each bit (0-3)
> > > > > > > > corresponds to each GPIO.  In many case, GPIO0 or GPIO1
> > > > > > > > corresponds to the amplifier (EAPD) bit.
> > > > > > > > Define the GPIO direction of each GPIO bit by SET_GPIO_DIR,
> > > > > > > > and turn on/off the GPIO bits by SET_GPIO_DATA.  Running
> > > > > > > > hda-verb /dev/snd/hwC0D0 0x01 GET_GPIO_DATA 0
> > > > > > > > will show the current GPIO data bits.  Or you can check it in
> > > > > > > > codec#* proc file.
> > > > > > > >
> > > > > > > >
> > > > > > > > Takashi
> > > > > > >
> > > > > > > w000000000000000000000000000000000t! =)
> > > > > > >
> > > > > > > takashi, thank you _so_ much!
> > > > > > >
> > > > > > > after running all 4 of those:
> > > > > > > > 	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x0f
> > > > > > > > 	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x0f
> > > > > > > > or
> > > > > > > > 	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x0f
> > > > > > > > 	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x0f
> > > > > > >
> > > > > > > i suddendly had sound!! :D :D :D :D :D :D :D
> > > > > > > only via speakers  though - there is no sound via headphones
> > > > > > > right now.
> > > > > > >
> > > > > > > mixer channels:
> > > > > > > - Master (with Mutebutton), PCM and Front (also with Mute) all
> > > > > > > work =) - i don't know what surround would do (or it's extra
> > > > > > > switch) - headphones-volumes and mute button don't affect the
> > > > > > > speakers, which is good =)
> > > > > > >
> > > > > > >
> > > > > > > is there a way to reset what i did with hda-verb, so that i can
> > > > > > > figure out which combination it was exactly?
> > > > > >
> > > > > > You can just change the value 0x0f to a different value.
> > > > > > At least, you can try commands like
> > > > > >  	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x01
> > > > > >  	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
> > > > > >  	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x04
> > > > > >  	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x08
> > > > > > and check the speaker output at each time.
> > > > > > Also, check the GPIO direction,
> > > > > >  	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x01
> > > > > >  	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x01
> > > > > >  	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x02
> > > > > >  	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
> > > > > > 	...
> > > > > >
> > > > > > Regarding the headphone: is the speaker muted when you plug in
> > > > > > the headphone?  If not, it's likely an issue of the jack
> > > > > > detection.  If the speaker is muted but no headphone output, it's
> > > > > > a missing initialization (or wrong GPIO setup).
> > > > > >
> > > > > >
> > > > > > Takashi
> > > > >
> > > > > so here are my findings so far:
> > > > >
> > > > > hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x08
> > > > >
> > > > >
> > > > > is sufficient to turn on the right functionality for the speakers;
> > > > > meaning: - 'front speaker'-channel actually controls the two front
> > > > > speakers within the macbookpro - even controlling left and right
> > > > > channel seperately works  =) - 'surround' mute-switch and
> > > > > volume-control (why are those not within on thing btw?) also work
> > > > > and control a third speaker in the mac, which really seems
> > > > > responsibly for surround :)
> > > > >
> > > > > headphones do not yet work, however i made a diff of
> > > > > "/proc/asound/card0/codec#0" with and without something plugged in:
> > > >
> > > > OK, so actually the driver works as expected, but the hardware
> > > > doesn't behave as expected.  For muting the speaker, something else
> > > > (like toggling that GPIO) is needed.
> > > >
> > > > The mystery about the silent HP output still remains, though.
> > >
> > > One another thing we can try is to use only one PCM stream instead of
> > > multi streams.  For example, try the patch below.  This will enable
> > > only the pin for the headphone, thus only one DAC is used.
> > >
> > >
> > > Takashi
> > >
> > > ---
> > > diff --git a/sound/pci/hda/patch_cirrus.c
> > > b/sound/pci/hda/patch_cirrus.c index 57251d7..d7f52b1 100644
> > > --- a/sound/pci/hda/patch_cirrus.c
> > > +++ b/sound/pci/hda/patch_cirrus.c
> > > @@ -1086,13 +1086,17 @@ struct cs_pincfg {
> > >
> > >  static struct cs_pincfg mbp55_pincfgs[] = {
> > >  	{ 0x09, 0x012b4030 },
> > > -	{ 0x0a, 0x90100121 },
> > > -	{ 0x0b, 0x90100120 },
> > > +	// { 0x0a, 0x90100121 },
> > > +	{ 0x0a, 0x400000f0 },
> > > +	// { 0x0b, 0x90100120 },
> > > +	{ 0x0b, 0x400000f0 },
> > >  	{ 0x0c, 0x400000f0 },
> > > -	{ 0x0d, 0x90a00110 },
> > > +	// { 0x0d, 0x90a00110 },
> > > +	{ 0x0d, 0x400000f0 },
> > >  	{ 0x0e, 0x400000f0 },
> > >  	{ 0x0f, 0x400000f0 },
> > > -	{ 0x10, 0x014be040 },
> > > +	// { 0x10, 0x014be040 },
> > > +	{ 0x10, 0x400000f0 },
> > >  	{ 0x12, 0x400000f0 },
> > >  	{ 0x15, 0x400000f0 },
> > >  	{} /* terminator */
> >
> > =( no  - that doesn't work either
> >
> > (there is obivously no sound via built-in speakers either anymore)
>
> Hmm, then I have really no clue.
> At best, you can try again GPIO pins and reverting COEF setup by my
> earlier patch, and try some more adjustments of widgets amp or pinctl
> via hda-verb or hda-analyzer...
>
>
> Takashi


still no luck on my end =(

however i found this, while google-ing  on datasheetarchive.com:
http://nutz.unfoog.de/cs4206.pdf

there's a lot of stuff about the pins and all that. maybe this is helpfull?


is there anything i can do, though?  like: try a bunch of different keys/codes 
somewhere? 

to get this right: Node[0x09] is getting "sound" just like 0x0a and 0x0b; 0x0a 
passes the sound to 0x03 (which is surround) and 0x0b passes it to 0x04 (which 
is front speaker).
0x09 should pass the sound to 0x02, then? and is that definitely working, 
making 0x02 the problem? or is maybe 0x09 wrong somehow already?  i don't 
really get the alsa-interna yet. =(

thanks
andy


More information about the Alsa-devel mailing list