|
@@ -1827,6 +1827,8 @@ enum {
|
|
|
ALC889_FIXUP_IMAC91_VREF,
|
|
|
ALC882_FIXUP_INV_DMIC,
|
|
|
ALC882_FIXUP_NO_PRIMARY_HP,
|
|
|
+ ALC887_FIXUP_ASUS_BASS,
|
|
|
+ ALC887_FIXUP_BASS_CHMAP,
|
|
|
};
|
|
|
|
|
|
static void alc889_fixup_coef(struct hda_codec *codec,
|
|
@@ -1960,6 +1962,9 @@ static void alc882_fixup_no_primary_hp(struct hda_codec *codec,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static void alc_fixup_bass_chmap(struct hda_codec *codec,
|
|
|
+ const struct hda_fixup *fix, int action);
|
|
|
+
|
|
|
static const struct hda_fixup alc882_fixups[] = {
|
|
|
[ALC882_FIXUP_ABIT_AW9D_MAX] = {
|
|
|
.type = HDA_FIXUP_PINS,
|
|
@@ -2150,6 +2155,19 @@ static const struct hda_fixup alc882_fixups[] = {
|
|
|
.type = HDA_FIXUP_FUNC,
|
|
|
.v.func = alc882_fixup_no_primary_hp,
|
|
|
},
|
|
|
+ [ALC887_FIXUP_ASUS_BASS] = {
|
|
|
+ .type = HDA_FIXUP_PINS,
|
|
|
+ .v.pins = (const struct hda_pintbl[]) {
|
|
|
+ {0x16, 0x99130130}, /* bass speaker */
|
|
|
+ {}
|
|
|
+ },
|
|
|
+ .chained = true,
|
|
|
+ .chain_id = ALC887_FIXUP_BASS_CHMAP,
|
|
|
+ },
|
|
|
+ [ALC887_FIXUP_BASS_CHMAP] = {
|
|
|
+ .type = HDA_FIXUP_FUNC,
|
|
|
+ .v.func = alc_fixup_bass_chmap,
|
|
|
+ },
|
|
|
};
|
|
|
|
|
|
static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
|
@@ -2183,6 +2201,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
|
|
SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V),
|
|
|
SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC),
|
|
|
SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601),
|
|
|
+ SND_PCI_QUIRK(0x1043, 0x84bc, "ASUS ET2700", ALC887_FIXUP_ASUS_BASS),
|
|
|
SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT),
|
|
|
SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP),
|
|
|
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[] = {
|
|
|
SND_PCI_QUIRK(0x1028, 0x0614, "Dell Inspiron 3135", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
|
|
SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
|
|
|
SND_PCI_QUIRK(0x1028, 0x061f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
|
|
|
+ SND_PCI_QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_FIXUP_MONO_SPEAKERS),
|
|
|
SND_PCI_QUIRK(0x1028, 0x063f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
|
|
|
SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
|
|
|
SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
|
|
@@ -4525,6 +4545,7 @@ enum {
|
|
|
ALC861_FIXUP_AMP_VREF_0F,
|
|
|
ALC861_FIXUP_NO_JACK_DETECT,
|
|
|
ALC861_FIXUP_ASUS_A6RP,
|
|
|
+ ALC660_FIXUP_ASUS_W7J,
|
|
|
};
|
|
|
|
|
|
/* 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[] = {
|
|
|
.v.func = alc861_fixup_asus_amp_vref_0f,
|
|
|
.chained = true,
|
|
|
.chain_id = ALC861_FIXUP_NO_JACK_DETECT,
|
|
|
+ },
|
|
|
+ [ALC660_FIXUP_ASUS_W7J] = {
|
|
|
+ .type = HDA_FIXUP_VERBS,
|
|
|
+ .v.verbs = (const struct hda_verb[]) {
|
|
|
+ /* ASUS W7J needs a magic pin setup on unused NID 0x10
|
|
|
+ * for enabling outputs
|
|
|
+ */
|
|
|
+ {0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24},
|
|
|
+ { }
|
|
|
+ },
|
|
|
}
|
|
|
};
|
|
|
|
|
|
static const struct snd_pci_quirk alc861_fixup_tbl[] = {
|
|
|
+ SND_PCI_QUIRK(0x1043, 0x1253, "ASUS W7J", ALC660_FIXUP_ASUS_W7J),
|
|
|
SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP),
|
|
|
SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F),
|
|
|
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[] = {
|
|
|
};
|
|
|
|
|
|
/* override the 2.1 chmap */
|
|
|
-static void alc662_fixup_bass_chmap(struct hda_codec *codec,
|
|
|
+static void alc_fixup_bass_chmap(struct hda_codec *codec,
|
|
|
const struct hda_fixup *fix, int action)
|
|
|
{
|
|
|
if (action == HDA_FIXUP_ACT_BUILD) {
|
|
@@ -4981,7 +5013,7 @@ static const struct hda_fixup alc662_fixups[] = {
|
|
|
},
|
|
|
[ALC662_FIXUP_BASS_CHMAP] = {
|
|
|
.type = HDA_FIXUP_FUNC,
|
|
|
- .v.func = alc662_fixup_bass_chmap,
|
|
|
+ .v.func = alc_fixup_bass_chmap,
|
|
|
.chained = true,
|
|
|
.chain_id = ALC662_FIXUP_ASUS_MODE4
|
|
|
},
|
|
@@ -4994,7 +5026,7 @@ static const struct hda_fixup alc662_fixups[] = {
|
|
|
},
|
|
|
[ALC662_FIXUP_BASS_1A_CHMAP] = {
|
|
|
.type = HDA_FIXUP_FUNC,
|
|
|
- .v.func = alc662_fixup_bass_chmap,
|
|
|
+ .v.func = alc_fixup_bass_chmap,
|
|
|
.chained = true,
|
|
|
.chain_id = ALC662_FIXUP_BASS_1A,
|
|
|
},
|