@ -6564,6 +6564,30 @@ static void alc662_fixup_led_gpio1(struct hda_codec *codec,
}
}
static void alc662_usi_automute_hook ( struct hda_codec * codec ,
struct hda_jack_callback * jack )
{
struct alc_spec * spec = codec - > spec ;
int vref ;
msleep ( 200 ) ;
snd_hda_gen_hp_automute ( codec , jack ) ;
vref = spec - > gen . hp_jack_present ? PIN_VREF80 : 0 ;
msleep ( 100 ) ;
snd_hda_codec_write ( codec , 0x19 , 0 , AC_VERB_SET_PIN_WIDGET_CONTROL ,
vref ) ;
}
static void alc662_fixup_usi_headset_mic ( struct hda_codec * codec ,
const struct hda_fixup * fix , int action )
{
struct alc_spec * spec = codec - > spec ;
if ( action = = HDA_FIXUP_ACT_PRE_PROBE ) {
spec - > parse_flags | = HDA_PINCFG_HEADSET_MIC ;
spec - > gen . hp_automute_hook = alc662_usi_automute_hook ;
}
}
static struct coef_fw alc668_coefs [ ] = {
WRITE_COEF ( 0x01 , 0xbebe ) , WRITE_COEF ( 0x02 , 0xaaaa ) , WRITE_COEF ( 0x03 , 0x0 ) ,
WRITE_COEF ( 0x04 , 0x0180 ) , WRITE_COEF ( 0x06 , 0x0 ) , WRITE_COEF ( 0x07 , 0x0f80 ) ,
@ -6629,6 +6653,8 @@ enum {
ALC891_FIXUP_DELL_MIC_NO_PRESENCE ,
ALC662_FIXUP_ACER_VERITON ,
ALC892_FIXUP_ASROCK_MOBO ,
ALC662_FIXUP_USI_FUNC ,
ALC662_FIXUP_USI_HEADSET_MODE ,
} ;
static const struct hda_fixup alc662_fixups [ ] = {
@ -6913,6 +6939,20 @@ static const struct hda_fixup alc662_fixups[] = {
{ }
}
} ,
[ ALC662_FIXUP_USI_FUNC ] = {
. type = HDA_FIXUP_FUNC ,
. v . func = alc662_fixup_usi_headset_mic ,
} ,
[ ALC662_FIXUP_USI_HEADSET_MODE ] = {
. type = HDA_FIXUP_PINS ,
. v . pins = ( const struct hda_pintbl [ ] ) {
{ 0x19 , 0x02a1913c } , /* use as headset mic, without its own jack detect */
{ 0x18 , 0x01a1903d } ,
{ }
} ,
. chained = true ,
. chain_id = ALC662_FIXUP_USI_FUNC
} ,
} ;
static const struct snd_pci_quirk alc662_fixup_tbl [ ] = {
@ -6948,6 +6988,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {
SND_PCI_QUIRK ( 0x1043 , 0x8469 , " ASUS mobo " , ALC662_FIXUP_NO_JACK_DETECT ) ,
SND_PCI_QUIRK ( 0x105b , 0x0cd6 , " Foxconn " , ALC662_FIXUP_ASUS_MODE2 ) ,
SND_PCI_QUIRK ( 0x144d , 0xc051 , " Samsung R720 " , ALC662_FIXUP_IDEAPAD ) ,
SND_PCI_QUIRK ( 0x14cd , 0x5003 , " USI " , ALC662_FIXUP_USI_HEADSET_MODE ) ,
SND_PCI_QUIRK ( 0x17aa , 0x38af , " Lenovo Ideapad Y550P " , ALC662_FIXUP_IDEAPAD ) ,
SND_PCI_QUIRK ( 0x17aa , 0x3a0d , " Lenovo Ideapad Y550 " , ALC662_FIXUP_IDEAPAD ) ,
SND_PCI_QUIRK ( 0x1849 , 0x5892 , " ASRock B150M " , ALC892_FIXUP_ASROCK_MOBO ) ,