diff options
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 55 |
1 files changed, 35 insertions, 20 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 52928d9a72da..c82979a8cd09 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -1704,11 +1704,11 @@ static void alc_apply_fixup(struct hda_codec *codec, int action) | |||
1704 | codec->chip_name, fix->type); | 1704 | codec->chip_name, fix->type); |
1705 | break; | 1705 | break; |
1706 | } | 1706 | } |
1707 | if (!fix[id].chained) | 1707 | if (!fix->chained) |
1708 | break; | 1708 | break; |
1709 | if (++depth > 10) | 1709 | if (++depth > 10) |
1710 | break; | 1710 | break; |
1711 | id = fix[id].chain_id; | 1711 | id = fix->chain_id; |
1712 | } | 1712 | } |
1713 | } | 1713 | } |
1714 | 1714 | ||
@@ -5645,6 +5645,7 @@ static void fillup_priv_adc_nids(struct hda_codec *codec, hda_nid_t *nids, | |||
5645 | static struct snd_pci_quirk beep_white_list[] = { | 5645 | static struct snd_pci_quirk beep_white_list[] = { |
5646 | SND_PCI_QUIRK(0x1043, 0x829f, "ASUS", 1), | 5646 | SND_PCI_QUIRK(0x1043, 0x829f, "ASUS", 1), |
5647 | SND_PCI_QUIRK(0x1043, 0x83ce, "EeePC", 1), | 5647 | SND_PCI_QUIRK(0x1043, 0x83ce, "EeePC", 1), |
5648 | SND_PCI_QUIRK(0x1043, 0x831a, "EeePC", 1), | ||
5648 | SND_PCI_QUIRK(0x8086, 0xd613, "Intel", 1), | 5649 | SND_PCI_QUIRK(0x8086, 0xd613, "Intel", 1), |
5649 | {} | 5650 | {} |
5650 | }; | 5651 | }; |
@@ -9863,6 +9864,7 @@ static struct snd_pci_quirk alc882_cfg_tbl[] = { | |||
9863 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), | 9864 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), |
9864 | SND_PCI_QUIRK(0x10f1, 0x2350, "TYAN-S2350", ALC888_6ST_DELL), | 9865 | SND_PCI_QUIRK(0x10f1, 0x2350, "TYAN-S2350", ALC888_6ST_DELL), |
9865 | SND_PCI_QUIRK(0x108e, 0x534d, NULL, ALC883_3ST_6ch), | 9866 | SND_PCI_QUIRK(0x108e, 0x534d, NULL, ALC883_3ST_6ch), |
9867 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte P35 DS3R", ALC882_6ST_DIG), | ||
9866 | 9868 | ||
9867 | SND_PCI_QUIRK(0x1462, 0x0349, "MSI", ALC883_TARGA_2ch_DIG), | 9869 | SND_PCI_QUIRK(0x1462, 0x0349, "MSI", ALC883_TARGA_2ch_DIG), |
9868 | SND_PCI_QUIRK(0x1462, 0x040d, "MSI", ALC883_TARGA_2ch_DIG), | 9870 | SND_PCI_QUIRK(0x1462, 0x040d, "MSI", ALC883_TARGA_2ch_DIG), |
@@ -10699,7 +10701,6 @@ enum { | |||
10699 | PINFIX_LENOVO_Y530, | 10701 | PINFIX_LENOVO_Y530, |
10700 | PINFIX_PB_M5210, | 10702 | PINFIX_PB_M5210, |
10701 | PINFIX_ACER_ASPIRE_7736, | 10703 | PINFIX_ACER_ASPIRE_7736, |
10702 | PINFIX_GIGABYTE_880GM, | ||
10703 | }; | 10704 | }; |
10704 | 10705 | ||
10705 | static const struct alc_fixup alc882_fixups[] = { | 10706 | static const struct alc_fixup alc882_fixups[] = { |
@@ -10731,13 +10732,6 @@ static const struct alc_fixup alc882_fixups[] = { | |||
10731 | .type = ALC_FIXUP_SKU, | 10732 | .type = ALC_FIXUP_SKU, |
10732 | .v.sku = ALC_FIXUP_SKU_IGNORE, | 10733 | .v.sku = ALC_FIXUP_SKU_IGNORE, |
10733 | }, | 10734 | }, |
10734 | [PINFIX_GIGABYTE_880GM] = { | ||
10735 | .type = ALC_FIXUP_PINS, | ||
10736 | .v.pins = (const struct alc_pincfg[]) { | ||
10737 | { 0x14, 0x1114410 }, /* set as speaker */ | ||
10738 | { } | ||
10739 | } | ||
10740 | }, | ||
10741 | }; | 10735 | }; |
10742 | 10736 | ||
10743 | static struct snd_pci_quirk alc882_fixup_tbl[] = { | 10737 | static struct snd_pci_quirk alc882_fixup_tbl[] = { |
@@ -10745,7 +10739,6 @@ static struct snd_pci_quirk alc882_fixup_tbl[] = { | |||
10745 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", PINFIX_LENOVO_Y530), | 10739 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", PINFIX_LENOVO_Y530), |
10746 | SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", PINFIX_ABIT_AW9D_MAX), | 10740 | SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", PINFIX_ABIT_AW9D_MAX), |
10747 | SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", PINFIX_ACER_ASPIRE_7736), | 10741 | SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", PINFIX_ACER_ASPIRE_7736), |
10748 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte", PINFIX_GIGABYTE_880GM), | ||
10749 | {} | 10742 | {} |
10750 | }; | 10743 | }; |
10751 | 10744 | ||
@@ -14868,6 +14861,23 @@ static void alc269_fixup_hweq(struct hda_codec *codec, | |||
14868 | alc_write_coef_idx(codec, 0x1e, coef | 0x80); | 14861 | alc_write_coef_idx(codec, 0x1e, coef | 0x80); |
14869 | } | 14862 | } |
14870 | 14863 | ||
14864 | static void alc271_fixup_dmic(struct hda_codec *codec, | ||
14865 | const struct alc_fixup *fix, int action) | ||
14866 | { | ||
14867 | static struct hda_verb verbs[] = { | ||
14868 | {0x20, AC_VERB_SET_COEF_INDEX, 0x0d}, | ||
14869 | {0x20, AC_VERB_SET_PROC_COEF, 0x4000}, | ||
14870 | {} | ||
14871 | }; | ||
14872 | unsigned int cfg; | ||
14873 | |||
14874 | if (strcmp(codec->chip_name, "ALC271X")) | ||
14875 | return; | ||
14876 | cfg = snd_hda_codec_get_pincfg(codec, 0x12); | ||
14877 | if (get_defcfg_connect(cfg) == AC_JACK_PORT_FIXED) | ||
14878 | snd_hda_sequence_write(codec, verbs); | ||
14879 | } | ||
14880 | |||
14871 | enum { | 14881 | enum { |
14872 | ALC269_FIXUP_SONY_VAIO, | 14882 | ALC269_FIXUP_SONY_VAIO, |
14873 | ALC275_FIXUP_SONY_VAIO_GPIO2, | 14883 | ALC275_FIXUP_SONY_VAIO_GPIO2, |
@@ -14876,6 +14886,7 @@ enum { | |||
14876 | ALC269_FIXUP_ASUS_G73JW, | 14886 | ALC269_FIXUP_ASUS_G73JW, |
14877 | ALC269_FIXUP_LENOVO_EAPD, | 14887 | ALC269_FIXUP_LENOVO_EAPD, |
14878 | ALC275_FIXUP_SONY_HWEQ, | 14888 | ALC275_FIXUP_SONY_HWEQ, |
14889 | ALC271_FIXUP_DMIC, | ||
14879 | }; | 14890 | }; |
14880 | 14891 | ||
14881 | static const struct alc_fixup alc269_fixups[] = { | 14892 | static const struct alc_fixup alc269_fixups[] = { |
@@ -14929,7 +14940,11 @@ static const struct alc_fixup alc269_fixups[] = { | |||
14929 | .v.func = alc269_fixup_hweq, | 14940 | .v.func = alc269_fixup_hweq, |
14930 | .chained = true, | 14941 | .chained = true, |
14931 | .chain_id = ALC275_FIXUP_SONY_VAIO_GPIO2 | 14942 | .chain_id = ALC275_FIXUP_SONY_VAIO_GPIO2 |
14932 | } | 14943 | }, |
14944 | [ALC271_FIXUP_DMIC] = { | ||
14945 | .type = ALC_FIXUP_FUNC, | ||
14946 | .v.func = alc271_fixup_dmic, | ||
14947 | }, | ||
14933 | }; | 14948 | }; |
14934 | 14949 | ||
14935 | static struct snd_pci_quirk alc269_fixup_tbl[] = { | 14950 | static struct snd_pci_quirk alc269_fixup_tbl[] = { |
@@ -14938,6 +14953,7 @@ static struct snd_pci_quirk alc269_fixup_tbl[] = { | |||
14938 | SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ), | 14953 | SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ), |
14939 | SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO), | 14954 | SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO), |
14940 | SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), | 14955 | SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), |
14956 | SND_PCI_QUIRK_VENDOR(0x1025, "Acer Aspire", ALC271_FIXUP_DMIC), | ||
14941 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE), | 14957 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE), |
14942 | SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE), | 14958 | SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE), |
14943 | SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), | 14959 | SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), |
@@ -18782,6 +18798,8 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = { | |||
18782 | ALC662_3ST_6ch_DIG), | 18798 | ALC662_3ST_6ch_DIG), |
18783 | SND_PCI_QUIRK(0x1179, 0xff6e, "Toshiba NB20x", ALC662_AUTO), | 18799 | SND_PCI_QUIRK(0x1179, 0xff6e, "Toshiba NB20x", ALC662_AUTO), |
18784 | SND_PCI_QUIRK(0x144d, 0xca00, "Samsung NC10", ALC272_SAMSUNG_NC10), | 18800 | SND_PCI_QUIRK(0x144d, 0xca00, "Samsung NC10", ALC272_SAMSUNG_NC10), |
18801 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L", | ||
18802 | ALC662_3ST_6ch_DIG), | ||
18785 | SND_PCI_QUIRK(0x152d, 0x2304, "Quanta WH1", ALC663_ASUS_H13), | 18803 | SND_PCI_QUIRK(0x152d, 0x2304, "Quanta WH1", ALC663_ASUS_H13), |
18786 | SND_PCI_QUIRK(0x1565, 0x820f, "Biostar TA780G M2+", ALC662_3ST_6ch_DIG), | 18804 | SND_PCI_QUIRK(0x1565, 0x820f, "Biostar TA780G M2+", ALC662_3ST_6ch_DIG), |
18787 | SND_PCI_QUIRK(0x1631, 0xc10c, "PB RS65", ALC663_ASUS_M51VA), | 18805 | SND_PCI_QUIRK(0x1631, 0xc10c, "PB RS65", ALC663_ASUS_M51VA), |
@@ -19455,7 +19473,7 @@ enum { | |||
19455 | ALC662_FIXUP_IDEAPAD, | 19473 | ALC662_FIXUP_IDEAPAD, |
19456 | ALC272_FIXUP_MARIO, | 19474 | ALC272_FIXUP_MARIO, |
19457 | ALC662_FIXUP_CZC_P10T, | 19475 | ALC662_FIXUP_CZC_P10T, |
19458 | ALC662_FIXUP_GIGABYTE, | 19476 | ALC662_FIXUP_SKU_IGNORE, |
19459 | }; | 19477 | }; |
19460 | 19478 | ||
19461 | static const struct alc_fixup alc662_fixups[] = { | 19479 | static const struct alc_fixup alc662_fixups[] = { |
@@ -19484,20 +19502,17 @@ static const struct alc_fixup alc662_fixups[] = { | |||
19484 | {} | 19502 | {} |
19485 | } | 19503 | } |
19486 | }, | 19504 | }, |
19487 | [ALC662_FIXUP_GIGABYTE] = { | 19505 | [ALC662_FIXUP_SKU_IGNORE] = { |
19488 | .type = ALC_FIXUP_PINS, | 19506 | .type = ALC_FIXUP_SKU, |
19489 | .v.pins = (const struct alc_pincfg[]) { | 19507 | .v.sku = ALC_FIXUP_SKU_IGNORE, |
19490 | { 0x14, 0x1114410 }, /* set as speaker */ | ||
19491 | { } | ||
19492 | } | ||
19493 | }, | 19508 | }, |
19494 | }; | 19509 | }; |
19495 | 19510 | ||
19496 | static struct snd_pci_quirk alc662_fixup_tbl[] = { | 19511 | static struct snd_pci_quirk alc662_fixup_tbl[] = { |
19497 | SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE), | 19512 | SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE), |
19513 | SND_PCI_QUIRK(0x1025, 0x031c, "Gateway NV79", ALC662_FIXUP_SKU_IGNORE), | ||
19498 | SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), | 19514 | SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), |
19499 | SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), | 19515 | SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), |
19500 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte", ALC662_FIXUP_GIGABYTE), | ||
19501 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), | 19516 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), |
19502 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), | 19517 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), |
19503 | SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), | 19518 | SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), |