diff options
author | Kailang Yang <kailang@realtek.com> | 2010-08-06 04:02:57 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-08-06 04:04:14 -0400 |
commit | fe3eb0a73ca052ee9346a1544f4c00e697cc9a4e (patch) | |
tree | 2e603bcd2f3cca16972b78c75931d2f5b15bf89b /sound/pci | |
parent | 74bf40f0793fed9e01eb6164c2ce63e8c27ca205 (diff) |
ALSA: hda - Add support for Acer ZGA ALC271 (1025:047c)
Signed-off-by: Kailang Yang <kailang@realtek.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 6ac53f7de549..2891571e7647 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -137,6 +137,7 @@ enum { | |||
137 | ALC269VB_DMIC, | 137 | ALC269VB_DMIC, |
138 | ALC269_FUJITSU, | 138 | ALC269_FUJITSU, |
139 | ALC269_LIFEBOOK, | 139 | ALC269_LIFEBOOK, |
140 | ALC271_ACER, | ||
140 | ALC269_AUTO, | 141 | ALC269_AUTO, |
141 | ALC269_MODEL_LAST /* last tag */ | 142 | ALC269_MODEL_LAST /* last tag */ |
142 | }; | 143 | }; |
@@ -13866,6 +13867,12 @@ static struct snd_kcontrol_new alc269vb_laptop_mixer[] = { | |||
13866 | { } /* end */ | 13867 | { } /* end */ |
13867 | }; | 13868 | }; |
13868 | 13869 | ||
13870 | static struct snd_kcontrol_new alc269_asus_mixer[] = { | ||
13871 | HDA_CODEC_VOLUME("Master Playback Volume", 0x02, 0x0, HDA_OUTPUT), | ||
13872 | HDA_CODEC_MUTE("Master Playback Switch", 0x0c, 0x0, HDA_INPUT), | ||
13873 | { } /* end */ | ||
13874 | }; | ||
13875 | |||
13869 | /* capture mixer elements */ | 13876 | /* capture mixer elements */ |
13870 | static struct snd_kcontrol_new alc269_laptop_analog_capture_mixer[] = { | 13877 | static struct snd_kcontrol_new alc269_laptop_analog_capture_mixer[] = { |
13871 | HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), | 13878 | HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), |
@@ -14086,6 +14093,20 @@ static struct hda_verb alc269vb_laptop_amic_init_verbs[] = { | |||
14086 | {} | 14093 | {} |
14087 | }; | 14094 | }; |
14088 | 14095 | ||
14096 | static struct hda_verb alc271_acer_dmic_verbs[] = { | ||
14097 | {0x20, AC_VERB_SET_COEF_INDEX, 0x0d}, | ||
14098 | {0x20, AC_VERB_SET_PROC_COEF, 0x4000}, | ||
14099 | {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
14100 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
14101 | {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | ||
14102 | {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
14103 | {0x21, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
14104 | {0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT}, | ||
14105 | {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT}, | ||
14106 | {0x22, AC_VERB_SET_CONNECT_SEL, 6}, | ||
14107 | { } | ||
14108 | }; | ||
14109 | |||
14089 | /* toggle speaker-output according to the hp-jack state */ | 14110 | /* toggle speaker-output according to the hp-jack state */ |
14090 | static void alc269_speaker_automute(struct hda_codec *codec) | 14111 | static void alc269_speaker_automute(struct hda_codec *codec) |
14091 | { | 14112 | { |
@@ -14465,6 +14486,7 @@ static const char *alc269_models[ALC269_MODEL_LAST] = { | |||
14465 | 14486 | ||
14466 | static struct snd_pci_quirk alc269_cfg_tbl[] = { | 14487 | static struct snd_pci_quirk alc269_cfg_tbl[] = { |
14467 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1), | 14488 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1), |
14489 | SND_PCI_QUIRK(0x1025, 0x047c, "ACER ZGA", ALC271_ACER), | ||
14468 | SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", | 14490 | SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", |
14469 | ALC269_AMIC), | 14491 | ALC269_AMIC), |
14470 | SND_PCI_QUIRK(0x1043, 0x1013, "ASUS N61Da", ALC269VB_AMIC), | 14492 | SND_PCI_QUIRK(0x1043, 0x1013, "ASUS N61Da", ALC269VB_AMIC), |
@@ -14626,6 +14648,23 @@ static struct alc_config_preset alc269_presets[] = { | |||
14626 | .unsol_event = alc269_lifebook_unsol_event, | 14648 | .unsol_event = alc269_lifebook_unsol_event, |
14627 | .init_hook = alc269_lifebook_init_hook, | 14649 | .init_hook = alc269_lifebook_init_hook, |
14628 | }, | 14650 | }, |
14651 | [ALC271_ACER] = { | ||
14652 | .mixers = { alc269_asus_mixer }, | ||
14653 | .cap_mixer = alc269vb_laptop_digital_capture_mixer, | ||
14654 | .init_verbs = { alc269_init_verbs, alc271_acer_dmic_verbs }, | ||
14655 | .num_dacs = ARRAY_SIZE(alc269_dac_nids), | ||
14656 | .dac_nids = alc269_dac_nids, | ||
14657 | .adc_nids = alc262_dmic_adc_nids, | ||
14658 | .num_adc_nids = ARRAY_SIZE(alc262_dmic_adc_nids), | ||
14659 | .capsrc_nids = alc262_dmic_capsrc_nids, | ||
14660 | .num_channel_mode = ARRAY_SIZE(alc269_modes), | ||
14661 | .channel_mode = alc269_modes, | ||
14662 | .input_mux = &alc269_capture_source, | ||
14663 | .dig_out_nid = ALC880_DIGOUT_NID, | ||
14664 | .unsol_event = alc_sku_unsol_event, | ||
14665 | .setup = alc269vb_laptop_dmic_setup, | ||
14666 | .init_hook = alc_inithook, | ||
14667 | }, | ||
14629 | }; | 14668 | }; |
14630 | 14669 | ||
14631 | static int patch_alc269(struct hda_codec *codec) | 14670 | static int patch_alc269(struct hda_codec *codec) |