diff options
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 6ac53f7de549..55d6e5b6bb7d 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 | }; |
@@ -7041,6 +7042,7 @@ static int patch_alc260(struct hda_codec *codec) | |||
7041 | 7042 | ||
7042 | spec->stream_analog_playback = &alc260_pcm_analog_playback; | 7043 | spec->stream_analog_playback = &alc260_pcm_analog_playback; |
7043 | spec->stream_analog_capture = &alc260_pcm_analog_capture; | 7044 | spec->stream_analog_capture = &alc260_pcm_analog_capture; |
7045 | spec->stream_analog_alt_capture = &alc260_pcm_analog_capture; | ||
7044 | 7046 | ||
7045 | spec->stream_digital_playback = &alc260_pcm_digital_playback; | 7047 | spec->stream_digital_playback = &alc260_pcm_digital_playback; |
7046 | spec->stream_digital_capture = &alc260_pcm_digital_capture; | 7048 | spec->stream_digital_capture = &alc260_pcm_digital_capture; |
@@ -13475,7 +13477,6 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = { | |||
13475 | SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA), | 13477 | SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA), |
13476 | SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER), | 13478 | SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER), |
13477 | SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1), | 13479 | SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1), |
13478 | SND_PCI_QUIRK(0x1854, 0x1775, "LG R510", ALC268_DELL), | ||
13479 | {} | 13480 | {} |
13480 | }; | 13481 | }; |
13481 | 13482 | ||
@@ -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) |