Updated from Linux LTS 3.10.23 to 3.10.24
This commit is contained in:
@@ -1772,6 +1772,7 @@ enum {
|
||||
ALC889_FIXUP_DAC_ROUTE,
|
||||
ALC889_FIXUP_MBP_VREF,
|
||||
ALC889_FIXUP_IMAC91_VREF,
|
||||
ALC889_FIXUP_MBA21_VREF,
|
||||
ALC882_FIXUP_INV_DMIC,
|
||||
ALC882_FIXUP_NO_PRIMARY_HP,
|
||||
ALC887_FIXUP_ASUS_BASS,
|
||||
@@ -1875,17 +1876,13 @@ static void alc889_fixup_mbp_vref(struct hda_codec *codec,
|
||||
}
|
||||
}
|
||||
|
||||
/* Set VREF on speaker pins on imac91 */
|
||||
static void alc889_fixup_imac91_vref(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix, int action)
|
||||
static void alc889_fixup_mac_pins(struct hda_codec *codec,
|
||||
const hda_nid_t *nids, int num_nids)
|
||||
{
|
||||
struct alc_spec *spec = codec->spec;
|
||||
static hda_nid_t nids[2] = { 0x18, 0x1a };
|
||||
int i;
|
||||
|
||||
if (action != HDA_FIXUP_ACT_INIT)
|
||||
return;
|
||||
for (i = 0; i < ARRAY_SIZE(nids); i++) {
|
||||
for (i = 0; i < num_nids; i++) {
|
||||
unsigned int val;
|
||||
val = snd_hda_codec_get_pin_target(codec, nids[i]);
|
||||
val |= AC_PINCTL_VREF_50;
|
||||
@@ -1894,6 +1891,26 @@ static void alc889_fixup_imac91_vref(struct hda_codec *codec,
|
||||
spec->gen.keep_vref_in_automute = 1;
|
||||
}
|
||||
|
||||
/* Set VREF on speaker pins on imac91 */
|
||||
static void alc889_fixup_imac91_vref(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix, int action)
|
||||
{
|
||||
static hda_nid_t nids[2] = { 0x18, 0x1a };
|
||||
|
||||
if (action == HDA_FIXUP_ACT_INIT)
|
||||
alc889_fixup_mac_pins(codec, nids, ARRAY_SIZE(nids));
|
||||
}
|
||||
|
||||
/* Set VREF on speaker pins on mba21 */
|
||||
static void alc889_fixup_mba21_vref(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix, int action)
|
||||
{
|
||||
static hda_nid_t nids[2] = { 0x18, 0x19 };
|
||||
|
||||
if (action == HDA_FIXUP_ACT_INIT)
|
||||
alc889_fixup_mac_pins(codec, nids, ARRAY_SIZE(nids));
|
||||
}
|
||||
|
||||
/* Don't take HP output as primary
|
||||
* Strangely, the speaker output doesn't work on Vaio Z and some Vaio
|
||||
* all-in-one desktop PCs (for example VGC-LN51JGB) through DAC 0x05
|
||||
@@ -2088,6 +2105,12 @@ static const struct hda_fixup alc882_fixups[] = {
|
||||
.chained = true,
|
||||
.chain_id = ALC882_FIXUP_GPIO1,
|
||||
},
|
||||
[ALC889_FIXUP_MBA21_VREF] = {
|
||||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc889_fixup_mba21_vref,
|
||||
.chained = true,
|
||||
.chain_id = ALC889_FIXUP_MBP_VREF,
|
||||
},
|
||||
[ALC882_FIXUP_INV_DMIC] = {
|
||||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc_fixup_inv_dmic_0x12,
|
||||
@@ -2152,7 +2175,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x106b, 0x3000, "iMac", ALC889_FIXUP_MBP_VREF),
|
||||
SND_PCI_QUIRK(0x106b, 0x3200, "iMac 7,1 Aluminum", ALC882_FIXUP_EAPD),
|
||||
SND_PCI_QUIRK(0x106b, 0x3400, "MacBookAir 1,1", ALC889_FIXUP_MBP_VREF),
|
||||
SND_PCI_QUIRK(0x106b, 0x3500, "MacBookAir 2,1", ALC889_FIXUP_MBP_VREF),
|
||||
SND_PCI_QUIRK(0x106b, 0x3500, "MacBookAir 2,1", ALC889_FIXUP_MBA21_VREF),
|
||||
SND_PCI_QUIRK(0x106b, 0x3600, "Macbook 3,1", ALC889_FIXUP_MBP_VREF),
|
||||
SND_PCI_QUIRK(0x106b, 0x3800, "MacbookPro 4,1", ALC889_FIXUP_MBP_VREF),
|
||||
SND_PCI_QUIRK(0x106b, 0x3e00, "iMac 24 Aluminum", ALC885_FIXUP_MACPRO_GPIO),
|
||||
@@ -3113,6 +3136,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
|
||||
alc_write_coef_idx(codec, 0x18, 0x7388);
|
||||
break;
|
||||
case 0x10ec0668:
|
||||
alc_write_coef_idx(codec, 0x11, 0x0001);
|
||||
alc_write_coef_idx(codec, 0x15, 0x0d60);
|
||||
alc_write_coef_idx(codec, 0xc3, 0x0000);
|
||||
break;
|
||||
@@ -3135,6 +3159,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
|
||||
alc_write_coef_idx(codec, 0x18, 0x7388);
|
||||
break;
|
||||
case 0x10ec0668:
|
||||
alc_write_coef_idx(codec, 0x11, 0x0001);
|
||||
alc_write_coef_idx(codec, 0x15, 0x0d50);
|
||||
alc_write_coef_idx(codec, 0xc3, 0x0000);
|
||||
break;
|
||||
@@ -3729,6 +3754,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
||||
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, 0x0638, "Dell Inspiron 5439", ALC290_FIXUP_MONO_SPEAKERS),
|
||||
SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
|
||||
SND_PCI_QUIRK(0x103c, 0x18e6, "HP", ALC269_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x1973, "HP Pavilion", ALC269_FIXUP_HP_MUTE_LED_MIC1),
|
||||
@@ -3999,6 +4025,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 */
|
||||
@@ -4048,10 +4075,22 @@ 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, 0x1263, "ASUS Z35HL", 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),
|
||||
|
||||
@@ -407,10 +407,10 @@ static int wm8731_set_dai_fmt(struct snd_soc_dai *codec_dai,
|
||||
iface |= 0x0001;
|
||||
break;
|
||||
case SND_SOC_DAIFMT_DSP_A:
|
||||
iface |= 0x0003;
|
||||
iface |= 0x0013;
|
||||
break;
|
||||
case SND_SOC_DAIFMT_DSP_B:
|
||||
iface |= 0x0013;
|
||||
iface |= 0x0003;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
||||
@@ -1264,6 +1264,8 @@ static int wm8990_set_bias_level(struct snd_soc_codec *codec,
|
||||
|
||||
/* disable POBCTRL, SOFT_ST and BUFDCOPEN */
|
||||
snd_soc_write(codec, WM8990_ANTIPOP2, 0x0);
|
||||
|
||||
codec->cache_sync = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user