diff options
| -rw-r--r-- | sound/pci/hda/patch_analog.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 7a426ed491f2..50b2427f19ca 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), |
