Skip to content

Commit f2de3a1

Browse files
committed
Merge tag 'sound-3.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "A few HD-audio fixes and one USB-audio kconfig dependency fix. All small and device-specific changes marked with Cc to stable" * tag 'sound-3.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda - Improve loopback path lookups for AD1983 ALSA: hda - Fix missing VREF setup for Mac Pro 1,1 ALSA: hda - Add missing mixer widget for AD1983 ALSA: hda/realtek - Avoid invalid COEFs for ALC271X ALSA: hda - Fix silent output on Toshiba Satellite L40 ALSA: usb-audio: Add missing kconfig dependecy
2 parents 65f0505 + 276ab33 commit f2de3a1

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

sound/pci/hda/patch_analog.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,13 +244,27 @@ static void ad_fixup_inv_jack_detect(struct hda_codec *codec,
244244
}
245245
}
246246

247+
/* Toshiba Satellite L40 implements EAPD in a standard way unlike others */
248+
static void ad1986a_fixup_eapd(struct hda_codec *codec,
249+
const struct hda_fixup *fix, int action)
250+
{
251+
struct ad198x_spec *spec = codec->spec;
252+
253+
if (action == HDA_FIXUP_ACT_PRE_PROBE) {
254+
codec->inv_eapd = 0;
255+
spec->gen.keep_eapd_on = 1;
256+
spec->eapd_nid = 0x1b;
257+
}
258+
}
259+
247260
enum {
248261
AD1986A_FIXUP_INV_JACK_DETECT,
249262
AD1986A_FIXUP_ULTRA,
250263
AD1986A_FIXUP_SAMSUNG,
251264
AD1986A_FIXUP_3STACK,
252265
AD1986A_FIXUP_LAPTOP,
253266
AD1986A_FIXUP_LAPTOP_IMIC,
267+
AD1986A_FIXUP_EAPD,
254268
};
255269

256270
static const struct hda_fixup ad1986a_fixups[] = {
@@ -311,13 +325,18 @@ static const struct hda_fixup ad1986a_fixups[] = {
311325
.chained_before = 1,
312326
.chain_id = AD1986A_FIXUP_LAPTOP,
313327
},
328+
[AD1986A_FIXUP_EAPD] = {
329+
.type = HDA_FIXUP_FUNC,
330+
.v.func = ad1986a_fixup_eapd,
331+
},
314332
};
315333

316334
static const struct snd_pci_quirk ad1986a_fixup_tbl[] = {
317335
SND_PCI_QUIRK(0x103c, 0x30af, "HP B2800", AD1986A_FIXUP_LAPTOP_IMIC),
318336
SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8100, "ASUS P5", AD1986A_FIXUP_3STACK),
319337
SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8200, "ASUS M2", AD1986A_FIXUP_3STACK),
320338
SND_PCI_QUIRK(0x10de, 0xcb84, "ASUS A8N-VM", AD1986A_FIXUP_3STACK),
339+
SND_PCI_QUIRK(0x1179, 0xff40, "Toshiba Satellite L40", AD1986A_FIXUP_EAPD),
321340
SND_PCI_QUIRK(0x144d, 0xc01e, "FSC V2060", AD1986A_FIXUP_LAPTOP),
322341
SND_PCI_QUIRK_MASK(0x144d, 0xff00, 0xc000, "Samsung", AD1986A_FIXUP_SAMSUNG),
323342
SND_PCI_QUIRK(0x144d, 0xc027, "Samsung Q1", AD1986A_FIXUP_ULTRA),
@@ -472,15 +491,23 @@ static int ad1983_add_spdif_mux_ctl(struct hda_codec *codec)
472491
static int patch_ad1983(struct hda_codec *codec)
473492
{
474493
struct ad198x_spec *spec;
494+
static hda_nid_t conn_0c[] = { 0x08 };
495+
static hda_nid_t conn_0d[] = { 0x09 };
475496
int err;
476497

477498
err = alloc_ad_spec(codec);
478499
if (err < 0)
479500
return err;
480501
spec = codec->spec;
481502

503+
spec->gen.mixer_nid = 0x0e;
482504
spec->gen.beep_nid = 0x10;
483505
set_beep_amp(spec, 0x10, 0, HDA_OUTPUT);
506+
507+
/* limit the loopback routes not to confuse the parser */
508+
snd_hda_override_conn_list(codec, 0x0c, ARRAY_SIZE(conn_0c), conn_0c);
509+
snd_hda_override_conn_list(codec, 0x0d, ARRAY_SIZE(conn_0d), conn_0d);
510+
484511
err = ad198x_parse_auto_config(codec, false);
485512
if (err < 0)
486513
goto error;

sound/pci/hda/patch_realtek.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1821,6 +1821,7 @@ enum {
18211821
ALC889_FIXUP_IMAC91_VREF,
18221822
ALC889_FIXUP_MBA11_VREF,
18231823
ALC889_FIXUP_MBA21_VREF,
1824+
ALC889_FIXUP_MP11_VREF,
18241825
ALC882_FIXUP_INV_DMIC,
18251826
ALC882_FIXUP_NO_PRIMARY_HP,
18261827
ALC887_FIXUP_ASUS_BASS,
@@ -2190,6 +2191,12 @@ static const struct hda_fixup alc882_fixups[] = {
21902191
.chained = true,
21912192
.chain_id = ALC889_FIXUP_MBP_VREF,
21922193
},
2194+
[ALC889_FIXUP_MP11_VREF] = {
2195+
.type = HDA_FIXUP_FUNC,
2196+
.v.func = alc889_fixup_mba11_vref,
2197+
.chained = true,
2198+
.chain_id = ALC885_FIXUP_MACPRO_GPIO,
2199+
},
21932200
[ALC882_FIXUP_INV_DMIC] = {
21942201
.type = HDA_FIXUP_FUNC,
21952202
.v.func = alc_fixup_inv_dmic_0x12,
@@ -2253,7 +2260,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
22532260
SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC889_FIXUP_MBP_VREF),
22542261
SND_PCI_QUIRK(0x106b, 0x00a1, "Macbook", ALC889_FIXUP_MBP_VREF),
22552262
SND_PCI_QUIRK(0x106b, 0x00a4, "MacbookPro 4,1", ALC889_FIXUP_MBP_VREF),
2256-
SND_PCI_QUIRK(0x106b, 0x0c00, "Mac Pro", ALC885_FIXUP_MACPRO_GPIO),
2263+
SND_PCI_QUIRK(0x106b, 0x0c00, "Mac Pro", ALC889_FIXUP_MP11_VREF),
22572264
SND_PCI_QUIRK(0x106b, 0x1000, "iMac 24", ALC885_FIXUP_MACPRO_GPIO),
22582265
SND_PCI_QUIRK(0x106b, 0x2800, "AppleTV", ALC885_FIXUP_MACPRO_GPIO),
22592266
SND_PCI_QUIRK(0x106b, 0x2c00, "MacbookPro rev3", ALC889_FIXUP_MBP_VREF),
@@ -4427,6 +4434,9 @@ static void alc269_fill_coef(struct hda_codec *codec)
44274434

44284435
if (spec->codec_variant != ALC269_TYPE_ALC269VB)
44294436
return;
4437+
/* ALC271X doesn't seem to support these COEFs (bko#52181) */
4438+
if (!strcmp(codec->chip_name, "ALC271X"))
4439+
return;
44304440

44314441
if ((alc_get_coef0(codec) & 0x00ff) < 0x015) {
44324442
alc_write_coef_idx(codec, 0xf, 0x960b);

sound/usb/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ config SND_USB_AUDIO
1414
select SND_HWDEP
1515
select SND_RAWMIDI
1616
select SND_PCM
17+
select BITREVERSE
1718
help
1819
Say Y here to include support for USB audio and USB MIDI
1920
devices.

0 commit comments

Comments
 (0)