diff options
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index f286bb8fda13..22c73b78ac6f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -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 | ||
@@ -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); |