aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_realtek.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2013-12-02 07:32:41 -0500
committerTakashi Iwai <tiwai@suse.de>2013-12-02 07:32:41 -0500
commitb95ff8e61afc5b621992bdddef5bf6af2d66772a (patch)
tree15f718fa446ce37b1d4a561b8fdd4d7c3c8854e2 /sound/pci/hda/patch_realtek.c
parent7f132927435cf09d26ceb81cd0043b542ac7206d (diff)
parent88d071fc9a93de2916822910c927f28ed15c3a56 (diff)
Merge branch 'for-linus' into for-next
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r--sound/pci/hda/patch_realtek.c38
1 files changed, 35 insertions, 3 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index b092dfd2670e..537991ccba28 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -1827,6 +1827,8 @@ enum {
1827 ALC889_FIXUP_IMAC91_VREF, 1827 ALC889_FIXUP_IMAC91_VREF,
1828 ALC882_FIXUP_INV_DMIC, 1828 ALC882_FIXUP_INV_DMIC,
1829 ALC882_FIXUP_NO_PRIMARY_HP, 1829 ALC882_FIXUP_NO_PRIMARY_HP,
1830 ALC887_FIXUP_ASUS_BASS,
1831 ALC887_FIXUP_BASS_CHMAP,
1830}; 1832};
1831 1833
1832static void alc889_fixup_coef(struct hda_codec *codec, 1834static void alc889_fixup_coef(struct hda_codec *codec,
@@ -1960,6 +1962,9 @@ static void alc882_fixup_no_primary_hp(struct hda_codec *codec,
1960 } 1962 }
1961} 1963}
1962 1964
1965static void alc_fixup_bass_chmap(struct hda_codec *codec,
1966 const struct hda_fixup *fix, int action);
1967
1963static const struct hda_fixup alc882_fixups[] = { 1968static const struct hda_fixup alc882_fixups[] = {
1964 [ALC882_FIXUP_ABIT_AW9D_MAX] = { 1969 [ALC882_FIXUP_ABIT_AW9D_MAX] = {
1965 .type = HDA_FIXUP_PINS, 1970 .type = HDA_FIXUP_PINS,
@@ -2150,6 +2155,19 @@ static const struct hda_fixup alc882_fixups[] = {
2150 .type = HDA_FIXUP_FUNC, 2155 .type = HDA_FIXUP_FUNC,
2151 .v.func = alc882_fixup_no_primary_hp, 2156 .v.func = alc882_fixup_no_primary_hp,
2152 }, 2157 },
2158 [ALC887_FIXUP_ASUS_BASS] = {
2159 .type = HDA_FIXUP_PINS,
2160 .v.pins = (const struct hda_pintbl[]) {
2161 {0x16, 0x99130130}, /* bass speaker */
2162 {}
2163 },
2164 .chained = true,
2165 .chain_id = ALC887_FIXUP_BASS_CHMAP,
2166 },
2167 [ALC887_FIXUP_BASS_CHMAP] = {
2168 .type = HDA_FIXUP_FUNC,
2169 .v.func = alc_fixup_bass_chmap,
2170 },
2153}; 2171};
2154 2172
2155static const struct snd_pci_quirk alc882_fixup_tbl[] = { 2173static const struct snd_pci_quirk alc882_fixup_tbl[] = {
@@ -2183,6 +2201,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
2183 SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V), 2201 SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V),
2184 SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC), 2202 SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC),
2185 SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601), 2203 SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601),
2204 SND_PCI_QUIRK(0x1043, 0x84bc, "ASUS ET2700", ALC887_FIXUP_ASUS_BASS),
2186 SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT), 2205 SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT),
2187 SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP), 2206 SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP),
2188 SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", ALC882_FIXUP_NO_PRIMARY_HP), 2207 SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", ALC882_FIXUP_NO_PRIMARY_HP),
@@ -4234,6 +4253,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
4234 SND_PCI_QUIRK(0x1028, 0x0614, "Dell Inspiron 3135", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 4253 SND_PCI_QUIRK(0x1028, 0x0614, "Dell Inspiron 3135", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
4235 SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS), 4254 SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
4236 SND_PCI_QUIRK(0x1028, 0x061f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE), 4255 SND_PCI_QUIRK(0x1028, 0x061f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
4256 SND_PCI_QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_FIXUP_MONO_SPEAKERS),
4237 SND_PCI_QUIRK(0x1028, 0x063f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE), 4257 SND_PCI_QUIRK(0x1028, 0x063f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
4238 SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 4258 SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
4239 SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 4259 SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
@@ -4525,6 +4545,7 @@ enum {
4525 ALC861_FIXUP_AMP_VREF_0F, 4545 ALC861_FIXUP_AMP_VREF_0F,
4526 ALC861_FIXUP_NO_JACK_DETECT, 4546 ALC861_FIXUP_NO_JACK_DETECT,
4527 ALC861_FIXUP_ASUS_A6RP, 4547 ALC861_FIXUP_ASUS_A6RP,
4548 ALC660_FIXUP_ASUS_W7J,
4528}; 4549};
4529 4550
4530/* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */ 4551/* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */
@@ -4574,10 +4595,21 @@ static const struct hda_fixup alc861_fixups[] = {
4574 .v.func = alc861_fixup_asus_amp_vref_0f, 4595 .v.func = alc861_fixup_asus_amp_vref_0f,
4575 .chained = true, 4596 .chained = true,
4576 .chain_id = ALC861_FIXUP_NO_JACK_DETECT, 4597 .chain_id = ALC861_FIXUP_NO_JACK_DETECT,
4598 },
4599 [ALC660_FIXUP_ASUS_W7J] = {
4600 .type = HDA_FIXUP_VERBS,
4601 .v.verbs = (const struct hda_verb[]) {
4602 /* ASUS W7J needs a magic pin setup on unused NID 0x10
4603 * for enabling outputs
4604 */
4605 {0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24},
4606 { }
4607 },
4577 } 4608 }
4578}; 4609};
4579 4610
4580static const struct snd_pci_quirk alc861_fixup_tbl[] = { 4611static const struct snd_pci_quirk alc861_fixup_tbl[] = {
4612 SND_PCI_QUIRK(0x1043, 0x1253, "ASUS W7J", ALC660_FIXUP_ASUS_W7J),
4581 SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP), 4613 SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP),
4582 SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F), 4614 SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F),
4583 SND_PCI_QUIRK(0x1462, 0x7254, "HP DX2200", ALC861_FIXUP_NO_JACK_DETECT), 4615 SND_PCI_QUIRK(0x1462, 0x7254, "HP DX2200", ALC861_FIXUP_NO_JACK_DETECT),
@@ -4773,7 +4805,7 @@ static const struct snd_pcm_chmap_elem asus_pcm_2_1_chmaps[] = {
4773}; 4805};
4774 4806
4775/* override the 2.1 chmap */ 4807/* override the 2.1 chmap */
4776static void alc662_fixup_bass_chmap(struct hda_codec *codec, 4808static void alc_fixup_bass_chmap(struct hda_codec *codec,
4777 const struct hda_fixup *fix, int action) 4809 const struct hda_fixup *fix, int action)
4778{ 4810{
4779 if (action == HDA_FIXUP_ACT_BUILD) { 4811 if (action == HDA_FIXUP_ACT_BUILD) {
@@ -4981,7 +5013,7 @@ static const struct hda_fixup alc662_fixups[] = {
4981 }, 5013 },
4982 [ALC662_FIXUP_BASS_CHMAP] = { 5014 [ALC662_FIXUP_BASS_CHMAP] = {
4983 .type = HDA_FIXUP_FUNC, 5015 .type = HDA_FIXUP_FUNC,
4984 .v.func = alc662_fixup_bass_chmap, 5016 .v.func = alc_fixup_bass_chmap,
4985 .chained = true, 5017 .chained = true,
4986 .chain_id = ALC662_FIXUP_ASUS_MODE4 5018 .chain_id = ALC662_FIXUP_ASUS_MODE4
4987 }, 5019 },
@@ -4994,7 +5026,7 @@ static const struct hda_fixup alc662_fixups[] = {
4994 }, 5026 },
4995 [ALC662_FIXUP_BASS_1A_CHMAP] = { 5027 [ALC662_FIXUP_BASS_1A_CHMAP] = {
4996 .type = HDA_FIXUP_FUNC, 5028 .type = HDA_FIXUP_FUNC,
4997 .v.func = alc662_fixup_bass_chmap, 5029 .v.func = alc_fixup_bass_chmap,
4998 .chained = true, 5030 .chained = true,
4999 .chain_id = ALC662_FIXUP_BASS_1A, 5031 .chain_id = ALC662_FIXUP_BASS_1A,
5000 }, 5032 },