sound fixes for 3.14-rc2
A few HD-audio fixes and one USB-audio kconfig dependency fix. All small and device-specific changes marked with Cc to stable. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAABAgAGBQJS81nGAAoJEGwxgFQ9KSmk1SAP/30M2QQRYDhIqtWc4rtU9WbF tH33bH1BpQvCk7c3M3j4VTFj/8uTxd7Sm0ZCpoKo2Uipf1xv+ROSCW7rp0vIHPgi nNltl+AvTkGEtP0sv6b8hzHJuPx0Npqt9N3aSPbPahDz8kXxBkuPCZaIpCO6rSWw cKNsLBmKMwCen6TV5FHXVom/6EFHfjxtdZtsbJsc4c8ok38qBkpw0wUqhol7FdmS 2roVPMXhZNO8E18FNcGmTNonk7sKiFYPVBHvW/l3pIAQDMJTAgu1qC8GmK1KhWWi tWzCQLc3FOjR4ANmNyI3CiCHGu/clNOdmwlIvRyuCC9wqcqlNH2lVxrWjunjlAsP z5y8qkQ30hdXe/+q9QZo0QFjBdhqEW2tT97RRcUJPHaTq1q07I0VBuCGr6TFYktR mVOJa6kC5obVBiWLiknFEm1m8SFWvRPhQ4ks+EYItXJauP7aPv+CzeezL2smt+gY Gn0eVnHY14AWiLwp3n8sEOit6uz4q4n2CER8Dtxt/nryfm4c1tNDp9qvHwK8vNJE jhao2jjBsh4x01/Q55JL5jzVriT+99M+qRHaa66wdkFaB5CkbyV7ogu4TEBwf5tD x2dgXnGY4ZYVNYYNsaXDWbNe/GJNIBxtsi2vFq6qhw31eFtlGn43FeA27699RgAN +Hbip+d2HaH017+QQP6q =EugC -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
f2de3a1599
|
@ -244,6 +244,19 @@ static void ad_fixup_inv_jack_detect(struct hda_codec *codec,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Toshiba Satellite L40 implements EAPD in a standard way unlike others */
|
||||||
|
static void ad1986a_fixup_eapd(struct hda_codec *codec,
|
||||||
|
const struct hda_fixup *fix, int action)
|
||||||
|
{
|
||||||
|
struct ad198x_spec *spec = codec->spec;
|
||||||
|
|
||||||
|
if (action == HDA_FIXUP_ACT_PRE_PROBE) {
|
||||||
|
codec->inv_eapd = 0;
|
||||||
|
spec->gen.keep_eapd_on = 1;
|
||||||
|
spec->eapd_nid = 0x1b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
AD1986A_FIXUP_INV_JACK_DETECT,
|
AD1986A_FIXUP_INV_JACK_DETECT,
|
||||||
AD1986A_FIXUP_ULTRA,
|
AD1986A_FIXUP_ULTRA,
|
||||||
|
@ -251,6 +264,7 @@ enum {
|
||||||
AD1986A_FIXUP_3STACK,
|
AD1986A_FIXUP_3STACK,
|
||||||
AD1986A_FIXUP_LAPTOP,
|
AD1986A_FIXUP_LAPTOP,
|
||||||
AD1986A_FIXUP_LAPTOP_IMIC,
|
AD1986A_FIXUP_LAPTOP_IMIC,
|
||||||
|
AD1986A_FIXUP_EAPD,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct hda_fixup ad1986a_fixups[] = {
|
static const struct hda_fixup ad1986a_fixups[] = {
|
||||||
|
@ -311,6 +325,10 @@ static const struct hda_fixup ad1986a_fixups[] = {
|
||||||
.chained_before = 1,
|
.chained_before = 1,
|
||||||
.chain_id = AD1986A_FIXUP_LAPTOP,
|
.chain_id = AD1986A_FIXUP_LAPTOP,
|
||||||
},
|
},
|
||||||
|
[AD1986A_FIXUP_EAPD] = {
|
||||||
|
.type = HDA_FIXUP_FUNC,
|
||||||
|
.v.func = ad1986a_fixup_eapd,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct snd_pci_quirk ad1986a_fixup_tbl[] = {
|
static const struct snd_pci_quirk ad1986a_fixup_tbl[] = {
|
||||||
|
@ -318,6 +336,7 @@ static const struct snd_pci_quirk ad1986a_fixup_tbl[] = {
|
||||||
SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8100, "ASUS P5", AD1986A_FIXUP_3STACK),
|
SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8100, "ASUS P5", AD1986A_FIXUP_3STACK),
|
||||||
SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8200, "ASUS M2", AD1986A_FIXUP_3STACK),
|
SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8200, "ASUS M2", AD1986A_FIXUP_3STACK),
|
||||||
SND_PCI_QUIRK(0x10de, 0xcb84, "ASUS A8N-VM", AD1986A_FIXUP_3STACK),
|
SND_PCI_QUIRK(0x10de, 0xcb84, "ASUS A8N-VM", AD1986A_FIXUP_3STACK),
|
||||||
|
SND_PCI_QUIRK(0x1179, 0xff40, "Toshiba Satellite L40", AD1986A_FIXUP_EAPD),
|
||||||
SND_PCI_QUIRK(0x144d, 0xc01e, "FSC V2060", AD1986A_FIXUP_LAPTOP),
|
SND_PCI_QUIRK(0x144d, 0xc01e, "FSC V2060", AD1986A_FIXUP_LAPTOP),
|
||||||
SND_PCI_QUIRK_MASK(0x144d, 0xff00, 0xc000, "Samsung", AD1986A_FIXUP_SAMSUNG),
|
SND_PCI_QUIRK_MASK(0x144d, 0xff00, 0xc000, "Samsung", AD1986A_FIXUP_SAMSUNG),
|
||||||
SND_PCI_QUIRK(0x144d, 0xc027, "Samsung Q1", AD1986A_FIXUP_ULTRA),
|
SND_PCI_QUIRK(0x144d, 0xc027, "Samsung Q1", AD1986A_FIXUP_ULTRA),
|
||||||
|
@ -472,6 +491,8 @@ static int ad1983_add_spdif_mux_ctl(struct hda_codec *codec)
|
||||||
static int patch_ad1983(struct hda_codec *codec)
|
static int patch_ad1983(struct hda_codec *codec)
|
||||||
{
|
{
|
||||||
struct ad198x_spec *spec;
|
struct ad198x_spec *spec;
|
||||||
|
static hda_nid_t conn_0c[] = { 0x08 };
|
||||||
|
static hda_nid_t conn_0d[] = { 0x09 };
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
err = alloc_ad_spec(codec);
|
err = alloc_ad_spec(codec);
|
||||||
|
@ -479,8 +500,14 @@ static int patch_ad1983(struct hda_codec *codec)
|
||||||
return err;
|
return err;
|
||||||
spec = codec->spec;
|
spec = codec->spec;
|
||||||
|
|
||||||
|
spec->gen.mixer_nid = 0x0e;
|
||||||
spec->gen.beep_nid = 0x10;
|
spec->gen.beep_nid = 0x10;
|
||||||
set_beep_amp(spec, 0x10, 0, HDA_OUTPUT);
|
set_beep_amp(spec, 0x10, 0, HDA_OUTPUT);
|
||||||
|
|
||||||
|
/* limit the loopback routes not to confuse the parser */
|
||||||
|
snd_hda_override_conn_list(codec, 0x0c, ARRAY_SIZE(conn_0c), conn_0c);
|
||||||
|
snd_hda_override_conn_list(codec, 0x0d, ARRAY_SIZE(conn_0d), conn_0d);
|
||||||
|
|
||||||
err = ad198x_parse_auto_config(codec, false);
|
err = ad198x_parse_auto_config(codec, false);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
|
@ -1821,6 +1821,7 @@ enum {
|
||||||
ALC889_FIXUP_IMAC91_VREF,
|
ALC889_FIXUP_IMAC91_VREF,
|
||||||
ALC889_FIXUP_MBA11_VREF,
|
ALC889_FIXUP_MBA11_VREF,
|
||||||
ALC889_FIXUP_MBA21_VREF,
|
ALC889_FIXUP_MBA21_VREF,
|
||||||
|
ALC889_FIXUP_MP11_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_ASUS_BASS,
|
||||||
|
@ -2190,6 +2191,12 @@ static const struct hda_fixup alc882_fixups[] = {
|
||||||
.chained = true,
|
.chained = true,
|
||||||
.chain_id = ALC889_FIXUP_MBP_VREF,
|
.chain_id = ALC889_FIXUP_MBP_VREF,
|
||||||
},
|
},
|
||||||
|
[ALC889_FIXUP_MP11_VREF] = {
|
||||||
|
.type = HDA_FIXUP_FUNC,
|
||||||
|
.v.func = alc889_fixup_mba11_vref,
|
||||||
|
.chained = true,
|
||||||
|
.chain_id = ALC885_FIXUP_MACPRO_GPIO,
|
||||||
|
},
|
||||||
[ALC882_FIXUP_INV_DMIC] = {
|
[ALC882_FIXUP_INV_DMIC] = {
|
||||||
.type = HDA_FIXUP_FUNC,
|
.type = HDA_FIXUP_FUNC,
|
||||||
.v.func = alc_fixup_inv_dmic_0x12,
|
.v.func = alc_fixup_inv_dmic_0x12,
|
||||||
|
@ -2253,7 +2260,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
||||||
SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC889_FIXUP_MBP_VREF),
|
SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC889_FIXUP_MBP_VREF),
|
||||||
SND_PCI_QUIRK(0x106b, 0x00a1, "Macbook", ALC889_FIXUP_MBP_VREF),
|
SND_PCI_QUIRK(0x106b, 0x00a1, "Macbook", ALC889_FIXUP_MBP_VREF),
|
||||||
SND_PCI_QUIRK(0x106b, 0x00a4, "MacbookPro 4,1", ALC889_FIXUP_MBP_VREF),
|
SND_PCI_QUIRK(0x106b, 0x00a4, "MacbookPro 4,1", ALC889_FIXUP_MBP_VREF),
|
||||||
SND_PCI_QUIRK(0x106b, 0x0c00, "Mac Pro", ALC885_FIXUP_MACPRO_GPIO),
|
SND_PCI_QUIRK(0x106b, 0x0c00, "Mac Pro", ALC889_FIXUP_MP11_VREF),
|
||||||
SND_PCI_QUIRK(0x106b, 0x1000, "iMac 24", ALC885_FIXUP_MACPRO_GPIO),
|
SND_PCI_QUIRK(0x106b, 0x1000, "iMac 24", ALC885_FIXUP_MACPRO_GPIO),
|
||||||
SND_PCI_QUIRK(0x106b, 0x2800, "AppleTV", ALC885_FIXUP_MACPRO_GPIO),
|
SND_PCI_QUIRK(0x106b, 0x2800, "AppleTV", ALC885_FIXUP_MACPRO_GPIO),
|
||||||
SND_PCI_QUIRK(0x106b, 0x2c00, "MacbookPro rev3", ALC889_FIXUP_MBP_VREF),
|
SND_PCI_QUIRK(0x106b, 0x2c00, "MacbookPro rev3", ALC889_FIXUP_MBP_VREF),
|
||||||
|
@ -4427,6 +4434,9 @@ static void alc269_fill_coef(struct hda_codec *codec)
|
||||||
|
|
||||||
if (spec->codec_variant != ALC269_TYPE_ALC269VB)
|
if (spec->codec_variant != ALC269_TYPE_ALC269VB)
|
||||||
return;
|
return;
|
||||||
|
/* ALC271X doesn't seem to support these COEFs (bko#52181) */
|
||||||
|
if (!strcmp(codec->chip_name, "ALC271X"))
|
||||||
|
return;
|
||||||
|
|
||||||
if ((alc_get_coef0(codec) & 0x00ff) < 0x015) {
|
if ((alc_get_coef0(codec) & 0x00ff) < 0x015) {
|
||||||
alc_write_coef_idx(codec, 0xf, 0x960b);
|
alc_write_coef_idx(codec, 0xf, 0x960b);
|
||||||
|
|
|
@ -14,6 +14,7 @@ config SND_USB_AUDIO
|
||||||
select SND_HWDEP
|
select SND_HWDEP
|
||||||
select SND_RAWMIDI
|
select SND_RAWMIDI
|
||||||
select SND_PCM
|
select SND_PCM
|
||||||
|
select BITREVERSE
|
||||||
help
|
help
|
||||||
Say Y here to include support for USB audio and USB MIDI
|
Say Y here to include support for USB audio and USB MIDI
|
||||||
devices.
|
devices.
|
||||||
|
|
Loading…
Reference in a new issue