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

Takashi Iwai tiwai at suse.de
Wed Jul 8 16:49:34 CEST 2009


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 */



More information about the Alsa-devel mailing list