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

Takashi Iwai tiwai at suse.de
Tue Jul 7 08:00:19 CEST 2009


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


More information about the Alsa-devel mailing list