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