Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe3eb0a7 authored by Kailang Yang's avatar Kailang Yang Committed by Takashi Iwai
Browse files

ALSA: hda - Add support for Acer ZGA ALC271 (1025:047c)



Signed-off-by: default avatarKailang Yang <kailang@realtek.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 74bf40f0
Loading
Loading
Loading
Loading
+39 −0
Original line number Original line Diff line number Diff line
@@ -137,6 +137,7 @@ enum {
	ALC269VB_DMIC,
	ALC269VB_DMIC,
	ALC269_FUJITSU,
	ALC269_FUJITSU,
	ALC269_LIFEBOOK,
	ALC269_LIFEBOOK,
	ALC271_ACER,
	ALC269_AUTO,
	ALC269_AUTO,
	ALC269_MODEL_LAST /* last tag */
	ALC269_MODEL_LAST /* last tag */
};
};
@@ -13866,6 +13867,12 @@ static struct snd_kcontrol_new alc269vb_laptop_mixer[] = {
	{ } /* end */
	{ } /* end */
};
};
static struct snd_kcontrol_new alc269_asus_mixer[] = {
	HDA_CODEC_VOLUME("Master Playback Volume", 0x02, 0x0, HDA_OUTPUT),
	HDA_CODEC_MUTE("Master Playback Switch", 0x0c, 0x0, HDA_INPUT),
	{ } /* end */
};
/* capture mixer elements */
/* capture mixer elements */
static struct snd_kcontrol_new alc269_laptop_analog_capture_mixer[] = {
static struct snd_kcontrol_new alc269_laptop_analog_capture_mixer[] = {
	HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT),
	HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT),
@@ -14086,6 +14093,20 @@ static struct hda_verb alc269vb_laptop_amic_init_verbs[] = {
	{}
	{}
};
};
static struct hda_verb alc271_acer_dmic_verbs[] = {
	{0x20, AC_VERB_SET_COEF_INDEX, 0x0d},
	{0x20, AC_VERB_SET_PROC_COEF, 0x4000},
	{0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
	{0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
	{0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
	{0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
	{0x21, AC_VERB_SET_CONNECT_SEL, 0x00},
	{0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
	{0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT},
	{0x22, AC_VERB_SET_CONNECT_SEL, 6},
	{ }
};
/* toggle speaker-output according to the hp-jack state */
/* toggle speaker-output according to the hp-jack state */
static void alc269_speaker_automute(struct hda_codec *codec)
static void alc269_speaker_automute(struct hda_codec *codec)
{
{
@@ -14465,6 +14486,7 @@ static const char *alc269_models[ALC269_MODEL_LAST] = {
static struct snd_pci_quirk alc269_cfg_tbl[] = {
static struct snd_pci_quirk alc269_cfg_tbl[] = {
	SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1),
	SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1),
	SND_PCI_QUIRK(0x1025, 0x047c, "ACER ZGA", ALC271_ACER),
	SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A",
	SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A",
		      ALC269_AMIC),
		      ALC269_AMIC),
	SND_PCI_QUIRK(0x1043, 0x1013, "ASUS N61Da", ALC269VB_AMIC),
	SND_PCI_QUIRK(0x1043, 0x1013, "ASUS N61Da", ALC269VB_AMIC),
@@ -14626,6 +14648,23 @@ static struct alc_config_preset alc269_presets[] = {
		.unsol_event = alc269_lifebook_unsol_event,
		.unsol_event = alc269_lifebook_unsol_event,
		.init_hook = alc269_lifebook_init_hook,
		.init_hook = alc269_lifebook_init_hook,
	},
	},
	[ALC271_ACER] = {
		.mixers = { alc269_asus_mixer },
		.cap_mixer = alc269vb_laptop_digital_capture_mixer,
		.init_verbs = { alc269_init_verbs, alc271_acer_dmic_verbs },
		.num_dacs = ARRAY_SIZE(alc269_dac_nids),
		.dac_nids = alc269_dac_nids,
		.adc_nids = alc262_dmic_adc_nids,
		.num_adc_nids = ARRAY_SIZE(alc262_dmic_adc_nids),
		.capsrc_nids = alc262_dmic_capsrc_nids,
		.num_channel_mode = ARRAY_SIZE(alc269_modes),
		.channel_mode = alc269_modes,
		.input_mux = &alc269_capture_source,
		.dig_out_nid = ALC880_DIGOUT_NID,
		.unsol_event = alc_sku_unsol_event,
		.setup = alc269vb_laptop_dmic_setup,
		.init_hook = alc_inithook,
	},
};
};
static int patch_alc269(struct hda_codec *codec)
static int patch_alc269(struct hda_codec *codec)