diff options
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 72 |
1 files changed, 71 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 8cebe2653223..63cfebb8d959 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -224,6 +224,7 @@ enum { | |||
| 224 | ALC883_ACER, | 224 | ALC883_ACER, |
| 225 | ALC883_ACER_ASPIRE, | 225 | ALC883_ACER_ASPIRE, |
| 226 | ALC888_ACER_ASPIRE_4930G, | 226 | ALC888_ACER_ASPIRE_4930G, |
| 227 | ALC888_ACER_ASPIRE_6530G, | ||
| 227 | ALC888_ACER_ASPIRE_8930G, | 228 | ALC888_ACER_ASPIRE_8930G, |
| 228 | ALC883_MEDION, | 229 | ALC883_MEDION, |
| 229 | ALC883_MEDION_MD2, | 230 | ALC883_MEDION_MD2, |
| @@ -1471,6 +1472,25 @@ static struct hda_verb alc888_acer_aspire_4930g_verbs[] = { | |||
| 1471 | }; | 1472 | }; |
| 1472 | 1473 | ||
| 1473 | /* | 1474 | /* |
| 1475 | * ALC888 Acer Aspire 6530G model | ||
| 1476 | */ | ||
| 1477 | |||
| 1478 | static struct hda_verb alc888_acer_aspire_6530g_verbs[] = { | ||
| 1479 | /* Bias voltage on for external mic port */ | ||
| 1480 | {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN | PIN_VREF80}, | ||
| 1481 | /* Enable unsolicited event for HP jack */ | ||
| 1482 | {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN}, | ||
| 1483 | /* Enable speaker output */ | ||
| 1484 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
| 1485 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
| 1486 | /* Enable headphone output */ | ||
| 1487 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT | PIN_HP}, | ||
| 1488 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
| 1489 | {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
| 1490 | { } | ||
| 1491 | }; | ||
| 1492 | |||
| 1493 | /* | ||
| 1474 | * ALC889 Acer Aspire 8930G model | 1494 | * ALC889 Acer Aspire 8930G model |
| 1475 | */ | 1495 | */ |
| 1476 | 1496 | ||
| @@ -1544,6 +1564,25 @@ static struct hda_input_mux alc888_2_capture_sources[2] = { | |||
| 1544 | } | 1564 | } |
| 1545 | }; | 1565 | }; |
| 1546 | 1566 | ||
| 1567 | static struct hda_input_mux alc888_acer_aspire_6530_sources[2] = { | ||
| 1568 | /* Interal mic only available on one ADC */ | ||
| 1569 | { | ||
| 1570 | .num_items = 3, | ||
| 1571 | .items = { | ||
| 1572 | { "Ext Mic", 0x0 }, | ||
| 1573 | { "CD", 0x4 }, | ||
| 1574 | { "Int Mic", 0xb }, | ||
| 1575 | }, | ||
| 1576 | }, | ||
| 1577 | { | ||
| 1578 | .num_items = 2, | ||
| 1579 | .items = { | ||
| 1580 | { "Ext Mic", 0x0 }, | ||
| 1581 | { "CD", 0x4 }, | ||
| 1582 | }, | ||
| 1583 | } | ||
| 1584 | }; | ||
| 1585 | |||
| 1547 | static struct hda_input_mux alc889_capture_sources[3] = { | 1586 | static struct hda_input_mux alc889_capture_sources[3] = { |
| 1548 | /* Digital mic only available on first "ADC" */ | 1587 | /* Digital mic only available on first "ADC" */ |
| 1549 | { | 1588 | { |
| @@ -8153,6 +8192,19 @@ static struct snd_kcontrol_new alc883_acer_aspire_mixer[] = { | |||
| 8153 | { } /* end */ | 8192 | { } /* end */ |
| 8154 | }; | 8193 | }; |
| 8155 | 8194 | ||
| 8195 | static struct snd_kcontrol_new alc888_acer_aspire_6530_mixer[] = { | ||
| 8196 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | ||
| 8197 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), | ||
| 8198 | HDA_CODEC_VOLUME("LFE Playback Volume", 0x0f, 0x0, HDA_OUTPUT), | ||
| 8199 | HDA_BIND_MUTE("LFE Playback Switch", 0x0f, 2, HDA_INPUT), | ||
| 8200 | HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT), | ||
| 8201 | HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT), | ||
| 8202 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), | ||
| 8203 | HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT), | ||
| 8204 | HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), | ||
| 8205 | { } /* end */ | ||
| 8206 | }; | ||
| 8207 | |||
| 8156 | static struct snd_kcontrol_new alc888_lenovo_sky_mixer[] = { | 8208 | static struct snd_kcontrol_new alc888_lenovo_sky_mixer[] = { |
| 8157 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | 8209 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), |
| 8158 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), | 8210 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), |
| @@ -9021,7 +9073,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = { | |||
| 9021 | SND_PCI_QUIRK(0x1025, 0x015e, "Acer Aspire 6930G", | 9073 | SND_PCI_QUIRK(0x1025, 0x015e, "Acer Aspire 6930G", |
| 9022 | ALC888_ACER_ASPIRE_4930G), | 9074 | ALC888_ACER_ASPIRE_4930G), |
| 9023 | SND_PCI_QUIRK(0x1025, 0x0166, "Acer Aspire 6530G", | 9075 | SND_PCI_QUIRK(0x1025, 0x0166, "Acer Aspire 6530G", |
| 9024 | ALC888_ACER_ASPIRE_4930G), | 9076 | ALC888_ACER_ASPIRE_6530G), |
| 9025 | /* default Acer -- disabled as it causes more problems. | 9077 | /* default Acer -- disabled as it causes more problems. |
| 9026 | * model=auto should work fine now | 9078 | * model=auto should work fine now |
| 9027 | */ | 9079 | */ |
| @@ -9256,6 +9308,24 @@ static struct alc_config_preset alc883_presets[] = { | |||
| 9256 | .unsol_event = alc_automute_amp_unsol_event, | 9308 | .unsol_event = alc_automute_amp_unsol_event, |
| 9257 | .init_hook = alc888_acer_aspire_4930g_init_hook, | 9309 | .init_hook = alc888_acer_aspire_4930g_init_hook, |
| 9258 | }, | 9310 | }, |
| 9311 | [ALC888_ACER_ASPIRE_6530G] = { | ||
| 9312 | .mixers = { alc888_acer_aspire_6530_mixer }, | ||
| 9313 | .init_verbs = { alc883_init_verbs, alc880_gpio1_init_verbs, | ||
| 9314 | alc888_acer_aspire_6530g_verbs }, | ||
| 9315 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), | ||
| 9316 | .dac_nids = alc883_dac_nids, | ||
| 9317 | .num_adc_nids = ARRAY_SIZE(alc883_adc_nids_rev), | ||
| 9318 | .adc_nids = alc883_adc_nids_rev, | ||
| 9319 | .capsrc_nids = alc883_capsrc_nids_rev, | ||
| 9320 | .dig_out_nid = ALC883_DIGOUT_NID, | ||
| 9321 | .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), | ||
| 9322 | .channel_mode = alc883_3ST_2ch_modes, | ||
| 9323 | .num_mux_defs = | ||
| 9324 | ARRAY_SIZE(alc888_2_capture_sources), | ||
| 9325 | .input_mux = alc888_acer_aspire_6530_sources, | ||
| 9326 | .unsol_event = alc_automute_amp_unsol_event, | ||
| 9327 | .init_hook = alc888_acer_aspire_4930g_init_hook, | ||
| 9328 | }, | ||
| 9259 | [ALC888_ACER_ASPIRE_8930G] = { | 9329 | [ALC888_ACER_ASPIRE_8930G] = { |
| 9260 | .mixers = { alc888_base_mixer, | 9330 | .mixers = { alc888_base_mixer, |
| 9261 | alc883_chmode_mixer }, | 9331 | alc883_chmode_mixer }, |
