[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 11:47:26 CEST 2009
At Tue, 07 Jul 2009 08:38:06 +0200,
I wrote:
>
> At Tue, 07 Jul 2009 00:24:51 -0600,
> Sean Burke wrote:
> >
> > Scríobh Takashi Iwai:
> > > 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,
> > >>>
> > >>> 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).
> > Setting both _DIR and _DATA to 0x08 worked, as did 0x0f.
>
> OK, then GPIO2 is EAPD.
GPIO3.
Anyway, I fixed the latest alsa-driver-unstable tree to work without
hda-verb.
> > Plugging in
> > headphones does not mute the speaker.
>
> I'll check this later.
I don't figure out the cause yet.
Basically, HP output is always on regardless of jack plugging.
The jack plugging changes only the pin control of speakers.
So, check alsa-info.sh output (or codec#0 proc file) at HP plugged and
unplugged states and compare the files. If you see changes in nodes
0x0a and 0x0b (i.e. Pin-ctls becomes 0x00 from 0x40 at HP plugged),
then the driver does the right thing. Only the hardware doesn't
respond or ignore it.
If nothing changes with HP plugged/unplugged, then either the
unsolicited event isn't generated or the jack detection doesn't work.
In either way, try to run hda-verb like
hda-verb /dev/snd/hw0C0D0 0x0a SET_PIN_WID 0x00
hda-verb /dev/snd/hw0C0D0 0x0b SET_PIN_WID 0x00
and see whether the speaker still works.
Takashi
More information about the Alsa-devel
mailing list