|
@@ -1191,8 +1191,16 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,
|
|
/* Get Independent Mode index of headphone pin widget */
|
|
/* Get Independent Mode index of headphone pin widget */
|
|
spec->hp_independent_mode = spec->hp_independent_mode_index == pinsel
|
|
spec->hp_independent_mode = spec->hp_independent_mode_index == pinsel
|
|
? 1 : 0;
|
|
? 1 : 0;
|
|
- snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_CONNECT_SEL, pinsel);
|
|
|
|
|
|
+ if (spec->codec_type == VT1718S)
|
|
|
|
+ snd_hda_codec_write(codec, nid, 0,
|
|
|
|
+ AC_VERB_SET_CONNECT_SEL, pinsel ? 2 : 0);
|
|
|
|
+ else
|
|
|
|
+ snd_hda_codec_write(codec, nid, 0,
|
|
|
|
+ AC_VERB_SET_CONNECT_SEL, pinsel);
|
|
|
|
|
|
|
|
+ if (spec->codec_type == VT1812)
|
|
|
|
+ snd_hda_codec_write(codec, 0x35, 0,
|
|
|
|
+ AC_VERB_SET_CONNECT_SEL, pinsel);
|
|
if (spec->multiout.hp_nid && spec->multiout.hp_nid
|
|
if (spec->multiout.hp_nid && spec->multiout.hp_nid
|
|
!= spec->multiout.dac_nids[HDA_FRONT])
|
|
!= spec->multiout.dac_nids[HDA_FRONT])
|
|
snd_hda_codec_setup_stream(codec, spec->multiout.hp_nid,
|
|
snd_hda_codec_setup_stream(codec, spec->multiout.hp_nid,
|
|
@@ -1211,6 +1219,8 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,
|
|
activate_ctl(codec, "Headphone Playback Switch",
|
|
activate_ctl(codec, "Headphone Playback Switch",
|
|
spec->hp_independent_mode);
|
|
spec->hp_independent_mode);
|
|
}
|
|
}
|
|
|
|
+ /* update jack power state */
|
|
|
|
+ set_jack_power_state(codec);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|