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 | |
| 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>
| -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) |
