ALSA: hda/realtek: Enable audio jacks of ASUS D700SA with ALC887
commit ca184355db8e60290fa34bf61c13308e6f4f50d3 upstream. The ASUS D700SA desktop's audio (1043:2390) with ALC887 cannot detect the headset microphone and another headphone jack until ALC887_FIXUP_ASUS_HMIC and ALC887_FIXUP_ASUS_AUDIO quirks are applied. The NID 0x15 maps as the headset microphone and NID 0x19 maps as another headphone jack. Also need the function like alc887_fixup_asus_jack to enable the audio jacks. Signed-off-by: Jian-Hong Pan <jhp@endlessos.org> Signed-off-by: Kailang Yang <kailang@realtek.com> Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20201007052224.22611-1-jhp@endlessos.org Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d6c552505c
commit
c19c5ef5a6
@@ -1906,6 +1906,8 @@ enum {
|
|||||||
ALC1220_FIXUP_CLEVO_P950,
|
ALC1220_FIXUP_CLEVO_P950,
|
||||||
ALC1220_FIXUP_CLEVO_PB51ED,
|
ALC1220_FIXUP_CLEVO_PB51ED,
|
||||||
ALC1220_FIXUP_CLEVO_PB51ED_PINS,
|
ALC1220_FIXUP_CLEVO_PB51ED_PINS,
|
||||||
|
ALC887_FIXUP_ASUS_AUDIO,
|
||||||
|
ALC887_FIXUP_ASUS_HMIC,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void alc889_fixup_coef(struct hda_codec *codec,
|
static void alc889_fixup_coef(struct hda_codec *codec,
|
||||||
@@ -2118,6 +2120,31 @@ static void alc1220_fixup_clevo_pb51ed(struct hda_codec *codec,
|
|||||||
alc_fixup_headset_mode_no_hp_mic(codec, fix, action);
|
alc_fixup_headset_mode_no_hp_mic(codec, fix, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void alc887_asus_hp_automute_hook(struct hda_codec *codec,
|
||||||
|
struct hda_jack_callback *jack)
|
||||||
|
{
|
||||||
|
struct alc_spec *spec = codec->spec;
|
||||||
|
unsigned int vref;
|
||||||
|
|
||||||
|
snd_hda_gen_hp_automute(codec, jack);
|
||||||
|
|
||||||
|
if (spec->gen.hp_jack_present)
|
||||||
|
vref = AC_PINCTL_VREF_80;
|
||||||
|
else
|
||||||
|
vref = AC_PINCTL_VREF_HIZ;
|
||||||
|
snd_hda_set_pin_ctl(codec, 0x19, PIN_HP | vref);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void alc887_fixup_asus_jack(struct hda_codec *codec,
|
||||||
|
const struct hda_fixup *fix, int action)
|
||||||
|
{
|
||||||
|
struct alc_spec *spec = codec->spec;
|
||||||
|
if (action != HDA_FIXUP_ACT_PROBE)
|
||||||
|
return;
|
||||||
|
snd_hda_set_pin_ctl_cache(codec, 0x1b, PIN_HP);
|
||||||
|
spec->gen.hp_automute_hook = alc887_asus_hp_automute_hook;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct hda_fixup alc882_fixups[] = {
|
static const struct hda_fixup alc882_fixups[] = {
|
||||||
[ALC882_FIXUP_ABIT_AW9D_MAX] = {
|
[ALC882_FIXUP_ABIT_AW9D_MAX] = {
|
||||||
.type = HDA_FIXUP_PINS,
|
.type = HDA_FIXUP_PINS,
|
||||||
@@ -2375,6 +2402,20 @@ static const struct hda_fixup alc882_fixups[] = {
|
|||||||
.chained = true,
|
.chained = true,
|
||||||
.chain_id = ALC1220_FIXUP_CLEVO_PB51ED,
|
.chain_id = ALC1220_FIXUP_CLEVO_PB51ED,
|
||||||
},
|
},
|
||||||
|
[ALC887_FIXUP_ASUS_AUDIO] = {
|
||||||
|
.type = HDA_FIXUP_PINS,
|
||||||
|
.v.pins = (const struct hda_pintbl[]) {
|
||||||
|
{ 0x15, 0x02a14150 }, /* use as headset mic, without its own jack detect */
|
||||||
|
{ 0x19, 0x22219420 },
|
||||||
|
{}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[ALC887_FIXUP_ASUS_HMIC] = {
|
||||||
|
.type = HDA_FIXUP_FUNC,
|
||||||
|
.v.func = alc887_fixup_asus_jack,
|
||||||
|
.chained = true,
|
||||||
|
.chain_id = ALC887_FIXUP_ASUS_AUDIO,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
||||||
@@ -2408,6 +2449,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
|||||||
SND_PCI_QUIRK(0x1043, 0x13c2, "Asus A7M", ALC882_FIXUP_EAPD),
|
SND_PCI_QUIRK(0x1043, 0x13c2, "Asus A7M", ALC882_FIXUP_EAPD),
|
||||||
SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V),
|
SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V),
|
||||||
SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC),
|
SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC),
|
||||||
|
SND_PCI_QUIRK(0x1043, 0x2390, "Asus D700SA", ALC887_FIXUP_ASUS_HMIC),
|
||||||
SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601),
|
SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601),
|
||||||
SND_PCI_QUIRK(0x1043, 0x84bc, "ASUS ET2700", ALC887_FIXUP_ASUS_BASS),
|
SND_PCI_QUIRK(0x1043, 0x84bc, "ASUS ET2700", ALC887_FIXUP_ASUS_BASS),
|
||||||
SND_PCI_QUIRK(0x1043, 0x8691, "ASUS ROG Ranger VIII", ALC882_FIXUP_GPIO3),
|
SND_PCI_QUIRK(0x1043, 0x8691, "ASUS ROG Ranger VIII", ALC882_FIXUP_GPIO3),
|
||||||
|
|||||||
Reference in New Issue
Block a user