diff options
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 3647baa9bfed..22c73b78ac6f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -802,7 +802,7 @@ static int alc_automute_mode_info(struct snd_kcontrol *kcontrol, | |||
802 | "Disabled", "Enabled" | 802 | "Disabled", "Enabled" |
803 | }; | 803 | }; |
804 | static const char * const texts3[] = { | 804 | static const char * const texts3[] = { |
805 | "Disabled", "Speaker Only", "Line-Out+Speaker" | 805 | "Disabled", "Speaker Only", "Line Out+Speaker" |
806 | }; | 806 | }; |
807 | const char * const *texts; | 807 | const char * const *texts; |
808 | 808 | ||
@@ -1856,7 +1856,7 @@ static const char * const alc_slave_vols[] = { | |||
1856 | "Headphone Playback Volume", | 1856 | "Headphone Playback Volume", |
1857 | "Speaker Playback Volume", | 1857 | "Speaker Playback Volume", |
1858 | "Mono Playback Volume", | 1858 | "Mono Playback Volume", |
1859 | "Line-Out Playback Volume", | 1859 | "Line Out Playback Volume", |
1860 | "CLFE Playback Volume", | 1860 | "CLFE Playback Volume", |
1861 | "Bass Speaker Playback Volume", | 1861 | "Bass Speaker Playback Volume", |
1862 | "PCM Playback Volume", | 1862 | "PCM Playback Volume", |
@@ -1873,7 +1873,7 @@ static const char * const alc_slave_sws[] = { | |||
1873 | "Speaker Playback Switch", | 1873 | "Speaker Playback Switch", |
1874 | "Mono Playback Switch", | 1874 | "Mono Playback Switch", |
1875 | "IEC958 Playback Switch", | 1875 | "IEC958 Playback Switch", |
1876 | "Line-Out Playback Switch", | 1876 | "Line Out Playback Switch", |
1877 | "CLFE Playback Switch", | 1877 | "CLFE Playback Switch", |
1878 | "Bass Speaker Playback Switch", | 1878 | "Bass Speaker Playback Switch", |
1879 | "PCM Playback Switch", | 1879 | "PCM Playback Switch", |
@@ -2068,12 +2068,16 @@ static int alc_build_controls(struct hda_codec *codec) | |||
2068 | */ | 2068 | */ |
2069 | 2069 | ||
2070 | static void alc_init_special_input_src(struct hda_codec *codec); | 2070 | static void alc_init_special_input_src(struct hda_codec *codec); |
2071 | static int alc269_fill_coef(struct hda_codec *codec); | ||
2071 | 2072 | ||
2072 | static int alc_init(struct hda_codec *codec) | 2073 | static int alc_init(struct hda_codec *codec) |
2073 | { | 2074 | { |
2074 | struct alc_spec *spec = codec->spec; | 2075 | struct alc_spec *spec = codec->spec; |
2075 | unsigned int i; | 2076 | unsigned int i; |
2076 | 2077 | ||
2078 | if (codec->vendor_id == 0x10ec0269) | ||
2079 | alc269_fill_coef(codec); | ||
2080 | |||
2077 | alc_fix_pll(codec); | 2081 | alc_fix_pll(codec); |
2078 | alc_auto_init_amp(codec, spec->init_amp); | 2082 | alc_auto_init_amp(codec, spec->init_amp); |
2079 | 2083 | ||
@@ -3797,7 +3801,7 @@ static void alc_auto_init_input_src(struct hda_codec *codec) | |||
3797 | else | 3801 | else |
3798 | nums = spec->num_adc_nids; | 3802 | nums = spec->num_adc_nids; |
3799 | for (c = 0; c < nums; c++) | 3803 | for (c = 0; c < nums; c++) |
3800 | alc_mux_select(codec, 0, spec->cur_mux[c], true); | 3804 | alc_mux_select(codec, c, spec->cur_mux[c], true); |
3801 | } | 3805 | } |
3802 | 3806 | ||
3803 | /* add mic boosts if needed */ | 3807 | /* add mic boosts if needed */ |
@@ -4367,6 +4371,7 @@ enum { | |||
4367 | ALC882_FIXUP_PB_M5210, | 4371 | ALC882_FIXUP_PB_M5210, |
4368 | ALC882_FIXUP_ACER_ASPIRE_7736, | 4372 | ALC882_FIXUP_ACER_ASPIRE_7736, |
4369 | ALC882_FIXUP_ASUS_W90V, | 4373 | ALC882_FIXUP_ASUS_W90V, |
4374 | ALC889_FIXUP_CD, | ||
4370 | ALC889_FIXUP_VAIO_TT, | 4375 | ALC889_FIXUP_VAIO_TT, |
4371 | ALC888_FIXUP_EEE1601, | 4376 | ALC888_FIXUP_EEE1601, |
4372 | ALC882_FIXUP_EAPD, | 4377 | ALC882_FIXUP_EAPD, |
@@ -4494,6 +4499,13 @@ static const struct alc_fixup alc882_fixups[] = { | |||
4494 | { } | 4499 | { } |
4495 | } | 4500 | } |
4496 | }, | 4501 | }, |
4502 | [ALC889_FIXUP_CD] = { | ||
4503 | .type = ALC_FIXUP_PINS, | ||
4504 | .v.pins = (const struct alc_pincfg[]) { | ||
4505 | { 0x1c, 0x993301f0 }, /* CD */ | ||
4506 | { } | ||
4507 | } | ||
4508 | }, | ||
4497 | [ALC889_FIXUP_VAIO_TT] = { | 4509 | [ALC889_FIXUP_VAIO_TT] = { |
4498 | .type = ALC_FIXUP_PINS, | 4510 | .type = ALC_FIXUP_PINS, |
4499 | .v.pins = (const struct alc_pincfg[]) { | 4511 | .v.pins = (const struct alc_pincfg[]) { |
@@ -4650,6 +4662,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = { | |||
4650 | 4662 | ||
4651 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC882_FIXUP_EAPD), | 4663 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC882_FIXUP_EAPD), |
4652 | SND_PCI_QUIRK_VENDOR(0x1462, "MSI", ALC882_FIXUP_GPIO3), | 4664 | SND_PCI_QUIRK_VENDOR(0x1462, "MSI", ALC882_FIXUP_GPIO3), |
4665 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte EP45-DS3", ALC889_FIXUP_CD), | ||
4653 | SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", ALC882_FIXUP_ABIT_AW9D_MAX), | 4666 | SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", ALC882_FIXUP_ABIT_AW9D_MAX), |
4654 | SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC882_FIXUP_EAPD), | 4667 | SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC882_FIXUP_EAPD), |
4655 | SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_FIXUP_EAPD), | 4668 | SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_FIXUP_EAPD), |
@@ -5467,8 +5480,12 @@ static const struct alc_model_fixup alc269_fixup_models[] = { | |||
5467 | 5480 | ||
5468 | static int alc269_fill_coef(struct hda_codec *codec) | 5481 | static int alc269_fill_coef(struct hda_codec *codec) |
5469 | { | 5482 | { |
5483 | struct alc_spec *spec = codec->spec; | ||
5470 | int val; | 5484 | int val; |
5471 | 5485 | ||
5486 | if (spec->codec_variant != ALC269_TYPE_ALC269VB) | ||
5487 | return 0; | ||
5488 | |||
5472 | if ((alc_get_coef0(codec) & 0x00ff) < 0x015) { | 5489 | if ((alc_get_coef0(codec) & 0x00ff) < 0x015) { |
5473 | alc_write_coef_idx(codec, 0xf, 0x960b); | 5490 | alc_write_coef_idx(codec, 0xf, 0x960b); |
5474 | alc_write_coef_idx(codec, 0xe, 0x8817); | 5491 | alc_write_coef_idx(codec, 0xe, 0x8817); |