http://git.kernel.org/?p=linux/kernel/git/tiwai/sound.git;a=commitdiff;h=18a815d7426986890b88078ea63b77732baca0b5;hp=42611c02ac31e44abd53893209460ce60205cb8e
/* mute internal speaker if HP is plugged */ static void ad1981_hp_automute(struct hda_codec *codec) { unsigned int present;
present = snd_hda_codec_read(codec, 0x06, 0, AC_VERB_GET_PIN_SENSE, 0) & 0x80000000; snd_hda_codec_amp_update(codec, 0x05, 0, HDA_OUTPUT, 0, 0x80, present ? 0x80 : 0); snd_hda_codec_amp_update(codec, 0x05, 1, HDA_OUTPUT, 0, 0x80, present ? 0x80 : 0); }
if you look at figure 1 functional block diagram
port A and port D only have selector to select dac 0x03 or mixer 0x0e
but ad1981_hp_automute seem treat them as mixer instead of selector
you must send email to the author who added the suuport of ad1981hd
Node 0x05 [Pin Complex] wcaps 0x400187: Stereo Amp-In Amp-Out Control: name="Master Playback Switch", index=0, device=0 Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-In vals: [0x00 0x00] Amp-Out caps: ofs=0x3d, nsteps=0x3f, stepsize=0x05, mute=1 Amp-Out vals: [0x3f 0x3f] Pincap 0x0001173f: IN OUT HP EAPD Detect Trigger ImpSense Vref caps: HIZ 50 GRD 80 EAPD 0x2: EAPD Pin Default 0x92174110: [Fixed] Speaker at Int Front Conn = Analog, Color = Green DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT VREF_HIZ Unsolicited: tag=00, enabled=0 Connection: 2 0x03 0x0e* Node 0x06 [Pin Complex] wcaps 0x400185: Stereo Amp-Out Amp-Out caps: ofs=0x3d, nsteps=0x3f, stepsize=0x05, mute=1 Amp-Out vals: [0x3f 0x3f] Pincap 0x0000001f: OUT HP Detect Trigger ImpSense Pin Default 0x0321201f: [Jack] HP Out at Ext Left Conn = 1/8, Color = Grey DefAssociation = 0x1, Sequence = 0xf Pin-ctls: 0xc0: OUT HP Unsolicited: tag=37, enabled=1 Connection: 2 0x03 0x0e*
http:// git.kernel. org/?p= linux/kernel/ git/tiwai/ sound.git; a=commitdiff; h=18a815d742698 6890b88078ea63b 77732baca0b5; hp=42611c02ac31 e44abd538932094 60ce60205cb8e
/* mute internal speaker if HP is plugged */ hp_automute( struct hda_codec *codec)
static void ad1981_
{
unsigned int present;
present = snd_hda_ codec_read( codec, 0x06, 0,
AC_VERB_ GET_PIN_ SENSE, 0) & 0x80000000;
snd_hda_ codec_amp_ update( codec, 0x05, 0, HDA_OUTPUT, 0,
0x80, present ? 0x80 : 0);
snd_hda_ codec_amp_ update( codec, 0x05, 1, HDA_OUTPUT, 0,
0x80, present ? 0x80 : 0);
}
if you look at figure 1 functional block diagram
port A and port D only have selector to select dac 0x03 or mixer 0x0e
but ad1981_hp_automute seem treat them as mixer instead of selector
you must send email to the author who added the suuport of ad1981hd
Node 0x05 [Pin Complex] wcaps 0x400187: Stereo Amp-In Amp-Out
Control: name="Master Playback Switch", index=0, device=0
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00]
Amp-Out caps: ofs=0x3d, nsteps=0x3f, stepsize=0x05, mute=1
Amp-Out vals: [0x3f 0x3f]
Pincap 0x0001173f: IN OUT HP EAPD Detect Trigger ImpSense
Vref caps: HIZ 50 GRD 80
EAPD 0x2: EAPD
Pin Default 0x92174110: [Fixed] Speaker at Int Front
Conn = Analog, Color = Green
DefAssociation = 0x1, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT VREF_HIZ
Unsolicited: tag=00, enabled=0
Connection: 2
0x03 0x0e*
Node 0x06 [Pin Complex] wcaps 0x400185: Stereo Amp-Out
Amp-Out caps: ofs=0x3d, nsteps=0x3f, stepsize=0x05, mute=1
Amp-Out vals: [0x3f 0x3f]
Pincap 0x0000001f: OUT HP Detect Trigger ImpSense
Pin Default 0x0321201f: [Jack] HP Out at Ext Left
Conn = 1/8, Color = Grey
DefAssociation = 0x1, Sequence = 0xf
Pin-ctls: 0xc0: OUT HP
Unsolicited: tag=37, enabled=1
Connection: 2
0x03 0x0e*