Re: [alsa-devel] No sound with nVidia Corporation MCP79 High Definition Audio (rev b1) (Macbook Pro 5, 5)
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.
Plugging in headphones does not mute the speaker.
I'll check this later.
thanks,
Takashi
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
participants (1)
-
Takashi Iwai