diff options
| -rw-r--r-- | sound/pci/hda/patch_analog.c | 27 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 12 | ||||
| -rw-r--r-- | sound/usb/Kconfig | 1 |
3 files changed, 39 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 7a426ed491f2..df3652ad15ef 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
| @@ -244,6 +244,19 @@ static void ad_fixup_inv_jack_detect(struct hda_codec *codec, | |||
| 244 | } | 244 | } |
| 245 | } | 245 | } |
| 246 | 246 | ||
| 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 | |||
| 247 | enum { | 260 | enum { |
| 248 | AD1986A_FIXUP_INV_JACK_DETECT, | 261 | AD1986A_FIXUP_INV_JACK_DETECT, |
| 249 | AD1986A_FIXUP_ULTRA, | 262 | AD1986A_FIXUP_ULTRA, |
| @@ -251,6 +264,7 @@ enum { | |||
| 251 | AD1986A_FIXUP_3STACK, | 264 | AD1986A_FIXUP_3STACK, |
| 252 | AD1986A_FIXUP_LAPTOP, | 265 | AD1986A_FIXUP_LAPTOP, |
| 253 | AD1986A_FIXUP_LAPTOP_IMIC, | 266 | AD1986A_FIXUP_LAPTOP_IMIC, |
| 267 | AD1986A_FIXUP_EAPD, | ||
| 254 | }; | 268 | }; |
| 255 | 269 | ||
| 256 | static const struct hda_fixup ad1986a_fixups[] = { | 270 | static const struct hda_fixup ad1986a_fixups[] = { |
| @@ -311,6 +325,10 @@ static const struct hda_fixup ad1986a_fixups[] = { | |||
| 311 | .chained_before = 1, | 325 | .chained_before = 1, |
| 312 | .chain_id = AD1986A_FIXUP_LAPTOP, | 326 | .chain_id = AD1986A_FIXUP_LAPTOP, |
| 313 | }, | 327 | }, |
| 328 | [AD1986A_FIXUP_EAPD] = { | ||
| 329 | .type = HDA_FIXUP_FUNC, | ||
| 330 | .v.func = ad1986a_fixup_eapd, | ||
| 331 | }, | ||
| 314 | }; | 332 | }; |
| 315 | 333 | ||
| 316 | static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { | 334 | static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { |
| @@ -318,6 +336,7 @@ static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { | |||
| 318 | SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8100, "ASUS P5", AD1986A_FIXUP_3STACK), | 336 | SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8100, "ASUS P5", AD1986A_FIXUP_3STACK), |
| 319 | SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8200, "ASUS M2", AD1986A_FIXUP_3STACK), | 337 | SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8200, "ASUS M2", AD1986A_FIXUP_3STACK), |
| 320 | SND_PCI_QUIRK(0x10de, 0xcb84, "ASUS A8N-VM", AD1986A_FIXUP_3STACK), | 338 | SND_PCI_QUIRK(0x10de, 0xcb84, "ASUS A8N-VM", AD1986A_FIXUP_3STACK), |
| 339 | SND_PCI_QUIRK(0x1179, 0xff40, "Toshiba Satellite L40", AD1986A_FIXUP_EAPD), | ||
| 321 | SND_PCI_QUIRK(0x144d, 0xc01e, "FSC V2060", AD1986A_FIXUP_LAPTOP), | 340 | SND_PCI_QUIRK(0x144d, 0xc01e, "FSC V2060", AD1986A_FIXUP_LAPTOP), |
| 322 | SND_PCI_QUIRK_MASK(0x144d, 0xff00, 0xc000, "Samsung", AD1986A_FIXUP_SAMSUNG), | 341 | SND_PCI_QUIRK_MASK(0x144d, 0xff00, 0xc000, "Samsung", AD1986A_FIXUP_SAMSUNG), |
| 323 | SND_PCI_QUIRK(0x144d, 0xc027, "Samsung Q1", AD1986A_FIXUP_ULTRA), | 342 | 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) | |||
| 472 | static int patch_ad1983(struct hda_codec *codec) | 491 | static int patch_ad1983(struct hda_codec *codec) |
| 473 | { | 492 | { |
| 474 | struct ad198x_spec *spec; | 493 | struct ad198x_spec *spec; |
| 494 | static hda_nid_t conn_0c[] = { 0x08 }; | ||
| 495 | static hda_nid_t conn_0d[] = { 0x09 }; | ||
| 475 | int err; | 496 | int err; |
| 476 | 497 | ||
| 477 | err = alloc_ad_spec(codec); | 498 | err = alloc_ad_spec(codec); |
| @@ -479,8 +500,14 @@ static int patch_ad1983(struct hda_codec *codec) | |||
| 479 | return err; | 500 | return err; |
| 480 | spec = codec->spec; | 501 | spec = codec->spec; |
| 481 | 502 | ||
| 503 | spec->gen.mixer_nid = 0x0e; | ||
| 482 | spec->gen.beep_nid = 0x10; | 504 | spec->gen.beep_nid = 0x10; |
| 483 | set_beep_amp(spec, 0x10, 0, HDA_OUTPUT); | 505 | 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 | |||
| 484 | err = ad198x_parse_auto_config(codec, false); | 511 | err = ad198x_parse_auto_config(codec, false); |
| 485 | if (err < 0) | 512 | if (err < 0) |
| 486 | goto error; | 513 | goto error; |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 56a8f1876603..d9693ca9546f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -1821,6 +1821,7 @@ enum { | |||
| 1821 | ALC889_FIXUP_IMAC91_VREF, | 1821 | ALC889_FIXUP_IMAC91_VREF, |
| 1822 | ALC889_FIXUP_MBA11_VREF, | 1822 | ALC889_FIXUP_MBA11_VREF, |
| 1823 | ALC889_FIXUP_MBA21_VREF, | 1823 | ALC889_FIXUP_MBA21_VREF, |
| 1824 | ALC889_FIXUP_MP11_VREF, | ||
| 1824 | ALC882_FIXUP_INV_DMIC, | 1825 | ALC882_FIXUP_INV_DMIC, |
| 1825 | ALC882_FIXUP_NO_PRIMARY_HP, | 1826 | ALC882_FIXUP_NO_PRIMARY_HP, |
| 1826 | ALC887_FIXUP_ASUS_BASS, | 1827 | ALC887_FIXUP_ASUS_BASS, |
| @@ -2190,6 +2191,12 @@ static const struct hda_fixup alc882_fixups[] = { | |||
| 2190 | .chained = true, | 2191 | .chained = true, |
| 2191 | .chain_id = ALC889_FIXUP_MBP_VREF, | 2192 | .chain_id = ALC889_FIXUP_MBP_VREF, |
| 2192 | }, | 2193 | }, |
| 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 | }, | ||
| 2193 | [ALC882_FIXUP_INV_DMIC] = { | 2200 | [ALC882_FIXUP_INV_DMIC] = { |
| 2194 | .type = HDA_FIXUP_FUNC, | 2201 | .type = HDA_FIXUP_FUNC, |
| 2195 | .v.func = alc_fixup_inv_dmic_0x12, | 2202 | .v.func = alc_fixup_inv_dmic_0x12, |
| @@ -2253,7 +2260,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = { | |||
| 2253 | SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC889_FIXUP_MBP_VREF), | 2260 | SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC889_FIXUP_MBP_VREF), |
| 2254 | SND_PCI_QUIRK(0x106b, 0x00a1, "Macbook", ALC889_FIXUP_MBP_VREF), | 2261 | SND_PCI_QUIRK(0x106b, 0x00a1, "Macbook", ALC889_FIXUP_MBP_VREF), |
| 2255 | SND_PCI_QUIRK(0x106b, 0x00a4, "MacbookPro 4,1", ALC889_FIXUP_MBP_VREF), | 2262 | 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), |
| 2257 | SND_PCI_QUIRK(0x106b, 0x1000, "iMac 24", ALC885_FIXUP_MACPRO_GPIO), | 2264 | SND_PCI_QUIRK(0x106b, 0x1000, "iMac 24", ALC885_FIXUP_MACPRO_GPIO), |
| 2258 | SND_PCI_QUIRK(0x106b, 0x2800, "AppleTV", ALC885_FIXUP_MACPRO_GPIO), | 2265 | SND_PCI_QUIRK(0x106b, 0x2800, "AppleTV", ALC885_FIXUP_MACPRO_GPIO), |
| 2259 | SND_PCI_QUIRK(0x106b, 0x2c00, "MacbookPro rev3", ALC889_FIXUP_MBP_VREF), | 2266 | SND_PCI_QUIRK(0x106b, 0x2c00, "MacbookPro rev3", ALC889_FIXUP_MBP_VREF), |
| @@ -4427,6 +4434,9 @@ static void alc269_fill_coef(struct hda_codec *codec) | |||
| 4427 | 4434 | ||
| 4428 | if (spec->codec_variant != ALC269_TYPE_ALC269VB) | 4435 | if (spec->codec_variant != ALC269_TYPE_ALC269VB) |
| 4429 | return; | 4436 | return; |
| 4437 | /* ALC271X doesn't seem to support these COEFs (bko#52181) */ | ||
| 4438 | if (!strcmp(codec->chip_name, "ALC271X")) | ||
| 4439 | return; | ||
| 4430 | 4440 | ||
| 4431 | if ((alc_get_coef0(codec) & 0x00ff) < 0x015) { | 4441 | if ((alc_get_coef0(codec) & 0x00ff) < 0x015) { |
| 4432 | alc_write_coef_idx(codec, 0xf, 0x960b); | 4442 | alc_write_coef_idx(codec, 0xf, 0x960b); |
diff --git a/sound/usb/Kconfig b/sound/usb/Kconfig index de9408b83f75..e05a86b7c0da 100644 --- a/sound/usb/Kconfig +++ b/sound/usb/Kconfig | |||
| @@ -14,6 +14,7 @@ config SND_USB_AUDIO | |||
| 14 | select SND_HWDEP | 14 | select SND_HWDEP |
| 15 | select SND_RAWMIDI | 15 | select SND_RAWMIDI |
| 16 | select SND_PCM | 16 | select SND_PCM |
| 17 | select BITREVERSE | ||
| 17 | help | 18 | help |
| 18 | Say Y here to include support for USB audio and USB MIDI | 19 | Say Y here to include support for USB audio and USB MIDI |
| 19 | devices. | 20 | devices. |
