Commit b95ff8e6 authored by Takashi Iwai's avatar Takashi Iwai

Merge branch 'for-linus' into for-next

parents 7f132927 88d071fc
...@@ -1019,7 +1019,7 @@ static void dice_proc_read(struct snd_info_entry *entry, ...@@ -1019,7 +1019,7 @@ static void dice_proc_read(struct snd_info_entry *entry,
if (dice_proc_read_mem(dice, &tx_rx_header, sections[2], 2) < 0) if (dice_proc_read_mem(dice, &tx_rx_header, sections[2], 2) < 0)
return; return;
quadlets = min_t(u32, tx_rx_header.size, sizeof(buf.tx)); quadlets = min_t(u32, tx_rx_header.size, sizeof(buf.tx) / 4);
for (stream = 0; stream < tx_rx_header.number; ++stream) { for (stream = 0; stream < tx_rx_header.number; ++stream) {
if (dice_proc_read_mem(dice, &buf.tx, sections[2] + 2 + if (dice_proc_read_mem(dice, &buf.tx, sections[2] + 2 +
stream * tx_rx_header.size, stream * tx_rx_header.size,
...@@ -1045,7 +1045,7 @@ static void dice_proc_read(struct snd_info_entry *entry, ...@@ -1045,7 +1045,7 @@ static void dice_proc_read(struct snd_info_entry *entry,
if (dice_proc_read_mem(dice, &tx_rx_header, sections[4], 2) < 0) if (dice_proc_read_mem(dice, &tx_rx_header, sections[4], 2) < 0)
return; return;
quadlets = min_t(u32, tx_rx_header.size, sizeof(buf.rx)); quadlets = min_t(u32, tx_rx_header.size, sizeof(buf.rx) / 4);
for (stream = 0; stream < tx_rx_header.number; ++stream) { for (stream = 0; stream < tx_rx_header.number; ++stream) {
if (dice_proc_read_mem(dice, &buf.rx, sections[4] + 2 + if (dice_proc_read_mem(dice, &buf.rx, sections[4] + 2 +
stream * tx_rx_header.size, stream * tx_rx_header.size,
......
...@@ -3876,7 +3876,8 @@ static int azx_probe(struct pci_dev *pci, ...@@ -3876,7 +3876,8 @@ static int azx_probe(struct pci_dev *pci,
} }
dev++; dev++;
complete_all(&chip->probe_wait); if (chip->disabled)
complete_all(&chip->probe_wait);
return 0; return 0;
out_free: out_free:
...@@ -3953,10 +3954,10 @@ static int azx_probe_continue(struct azx *chip) ...@@ -3953,10 +3954,10 @@ static int azx_probe_continue(struct azx *chip)
if ((chip->driver_caps & AZX_DCAPS_PM_RUNTIME) || chip->use_vga_switcheroo) if ((chip->driver_caps & AZX_DCAPS_PM_RUNTIME) || chip->use_vga_switcheroo)
pm_runtime_put_noidle(&pci->dev); pm_runtime_put_noidle(&pci->dev);
return 0;
out_free: out_free:
chip->init_failed = 1; if (err < 0)
chip->init_failed = 1;
complete_all(&chip->probe_wait);
return err; return err;
} }
......
...@@ -962,6 +962,7 @@ static void ad1884_fixup_hp_eapd(struct hda_codec *codec, ...@@ -962,6 +962,7 @@ static void ad1884_fixup_hp_eapd(struct hda_codec *codec,
switch (action) { switch (action) {
case HDA_FIXUP_ACT_PRE_PROBE: case HDA_FIXUP_ACT_PRE_PROBE:
spec->gen.vmaster_mute.hook = ad1884_vmaster_hp_gpio_hook; spec->gen.vmaster_mute.hook = ad1884_vmaster_hp_gpio_hook;
spec->gen.own_eapd_ctl = 1;
snd_hda_sequence_write_cache(codec, gpio_init_verbs); snd_hda_sequence_write_cache(codec, gpio_init_verbs);
break; break;
case HDA_FIXUP_ACT_PROBE: case HDA_FIXUP_ACT_PROBE:
......
...@@ -1827,6 +1827,8 @@ enum { ...@@ -1827,6 +1827,8 @@ enum {
ALC889_FIXUP_IMAC91_VREF, ALC889_FIXUP_IMAC91_VREF,
ALC882_FIXUP_INV_DMIC, ALC882_FIXUP_INV_DMIC,
ALC882_FIXUP_NO_PRIMARY_HP, ALC882_FIXUP_NO_PRIMARY_HP,
ALC887_FIXUP_ASUS_BASS,
ALC887_FIXUP_BASS_CHMAP,
}; };
static void alc889_fixup_coef(struct hda_codec *codec, static void alc889_fixup_coef(struct hda_codec *codec,
...@@ -1960,6 +1962,9 @@ static void alc882_fixup_no_primary_hp(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[] = { static const struct hda_fixup alc882_fixups[] = {
[ALC882_FIXUP_ABIT_AW9D_MAX] = { [ALC882_FIXUP_ABIT_AW9D_MAX] = {
.type = HDA_FIXUP_PINS, .type = HDA_FIXUP_PINS,
...@@ -2150,6 +2155,19 @@ static const struct hda_fixup alc882_fixups[] = { ...@@ -2150,6 +2155,19 @@ static const struct hda_fixup alc882_fixups[] = {
.type = HDA_FIXUP_FUNC, .type = HDA_FIXUP_FUNC,
.v.func = alc882_fixup_no_primary_hp, .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[] = { static const struct snd_pci_quirk alc882_fixup_tbl[] = {
...@@ -2183,6 +2201,7 @@ 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, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V),
SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC), 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, 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, 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, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP),
SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", 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[] = { ...@@ -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, 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, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
SND_PCI_QUIRK(0x1028, 0x061f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE), 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, 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, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
SND_PCI_QUIRK(0x1028, 0x15cd, "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 { ...@@ -4525,6 +4545,7 @@ enum {
ALC861_FIXUP_AMP_VREF_0F, ALC861_FIXUP_AMP_VREF_0F,
ALC861_FIXUP_NO_JACK_DETECT, ALC861_FIXUP_NO_JACK_DETECT,
ALC861_FIXUP_ASUS_A6RP, ALC861_FIXUP_ASUS_A6RP,
ALC660_FIXUP_ASUS_W7J,
}; };
/* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */ /* 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,10 +4595,21 @@ static const struct hda_fixup alc861_fixups[] = {
.v.func = alc861_fixup_asus_amp_vref_0f, .v.func = alc861_fixup_asus_amp_vref_0f,
.chained = true, .chained = true,
.chain_id = ALC861_FIXUP_NO_JACK_DETECT, .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[] = { 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(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP),
SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F), SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F),
SND_PCI_QUIRK(0x1462, 0x7254, "HP DX2200", ALC861_FIXUP_NO_JACK_DETECT), 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,7 +4805,7 @@ static const struct snd_pcm_chmap_elem asus_pcm_2_1_chmaps[] = {
}; };
/* override the 2.1 chmap */ /* 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) const struct hda_fixup *fix, int action)
{ {
if (action == HDA_FIXUP_ACT_BUILD) { if (action == HDA_FIXUP_ACT_BUILD) {
...@@ -4981,7 +5013,7 @@ static const struct hda_fixup alc662_fixups[] = { ...@@ -4981,7 +5013,7 @@ static const struct hda_fixup alc662_fixups[] = {
}, },
[ALC662_FIXUP_BASS_CHMAP] = { [ALC662_FIXUP_BASS_CHMAP] = {
.type = HDA_FIXUP_FUNC, .type = HDA_FIXUP_FUNC,
.v.func = alc662_fixup_bass_chmap, .v.func = alc_fixup_bass_chmap,
.chained = true, .chained = true,
.chain_id = ALC662_FIXUP_ASUS_MODE4 .chain_id = ALC662_FIXUP_ASUS_MODE4
}, },
...@@ -4994,7 +5026,7 @@ static const struct hda_fixup alc662_fixups[] = { ...@@ -4994,7 +5026,7 @@ static const struct hda_fixup alc662_fixups[] = {
}, },
[ALC662_FIXUP_BASS_1A_CHMAP] = { [ALC662_FIXUP_BASS_1A_CHMAP] = {
.type = HDA_FIXUP_FUNC, .type = HDA_FIXUP_FUNC,
.v.func = alc662_fixup_bass_chmap, .v.func = alc_fixup_bass_chmap,
.chained = true, .chained = true,
.chain_id = ALC662_FIXUP_BASS_1A, .chain_id = ALC662_FIXUP_BASS_1A,
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment