diff options
| -rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index fe163547f906..770013ff556f 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
| @@ -104,6 +104,7 @@ enum { | |||
| 104 | STAC_92HD83XXX_HP_LED, | 104 | STAC_92HD83XXX_HP_LED, |
| 105 | STAC_92HD83XXX_HP_INV_LED, | 105 | STAC_92HD83XXX_HP_INV_LED, |
| 106 | STAC_92HD83XXX_HP_MIC_LED, | 106 | STAC_92HD83XXX_HP_MIC_LED, |
| 107 | STAC_92HD83XXX_HEADSET_JACK, | ||
| 107 | STAC_92HD83XXX_MODELS | 108 | STAC_92HD83XXX_MODELS |
| 108 | }; | 109 | }; |
| 109 | 110 | ||
| @@ -204,6 +205,7 @@ struct sigmatel_spec { | |||
| 204 | unsigned int check_volume_offset:1; | 205 | unsigned int check_volume_offset:1; |
| 205 | unsigned int auto_mic:1; | 206 | unsigned int auto_mic:1; |
| 206 | unsigned int linear_tone_beep:1; | 207 | unsigned int linear_tone_beep:1; |
| 208 | unsigned int headset_jack:1; /* 4-pin headset jack (hp + mono mic) */ | ||
| 207 | 209 | ||
| 208 | /* gpio lines */ | 210 | /* gpio lines */ |
| 209 | unsigned int eapd_mask; | 211 | unsigned int eapd_mask; |
| @@ -1684,6 +1686,7 @@ static const char * const stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = { | |||
| 1684 | [STAC_92HD83XXX_HP_LED] = "hp-led", | 1686 | [STAC_92HD83XXX_HP_LED] = "hp-led", |
| 1685 | [STAC_92HD83XXX_HP_INV_LED] = "hp-inv-led", | 1687 | [STAC_92HD83XXX_HP_INV_LED] = "hp-inv-led", |
| 1686 | [STAC_92HD83XXX_HP_MIC_LED] = "hp-mic-led", | 1688 | [STAC_92HD83XXX_HP_MIC_LED] = "hp-mic-led", |
| 1689 | [STAC_92HD83XXX_HEADSET_JACK] = "headset-jack", | ||
| 1687 | }; | 1690 | }; |
| 1688 | 1691 | ||
| 1689 | static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { | 1692 | static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { |
| @@ -1694,6 +1697,24 @@ static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { | |||
| 1694 | "DFI LanParty", STAC_92HD83XXX_REF), | 1697 | "DFI LanParty", STAC_92HD83XXX_REF), |
| 1695 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02ba, | 1698 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02ba, |
| 1696 | "unknown Dell", STAC_DELL_S14), | 1699 | "unknown Dell", STAC_DELL_S14), |
| 1700 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0532, | ||
| 1701 | "Dell Latitude E6230", STAC_92HD83XXX_HEADSET_JACK), | ||
| 1702 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0533, | ||
| 1703 | "Dell Latitude E6330", STAC_92HD83XXX_HEADSET_JACK), | ||
| 1704 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0534, | ||
| 1705 | "Dell Latitude E6430", STAC_92HD83XXX_HEADSET_JACK), | ||
| 1706 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0535, | ||
| 1707 | "Dell Latitude E6530", STAC_92HD83XXX_HEADSET_JACK), | ||
| 1708 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x053c, | ||
| 1709 | "Dell Latitude E5430", STAC_92HD83XXX_HEADSET_JACK), | ||
| 1710 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x053d, | ||
| 1711 | "Dell Latitude E5530", STAC_92HD83XXX_HEADSET_JACK), | ||
| 1712 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0549, | ||
| 1713 | "Dell Latitude E5430", STAC_92HD83XXX_HEADSET_JACK), | ||
| 1714 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x057d, | ||
| 1715 | "Dell Latitude E6430s", STAC_92HD83XXX_HEADSET_JACK), | ||
| 1716 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0584, | ||
| 1717 | "Dell Latitude E6430U", STAC_92HD83XXX_HEADSET_JACK), | ||
| 1697 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x1028, | 1718 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x1028, |
| 1698 | "Dell Vostro 3500", STAC_DELL_VOSTRO_3500), | 1719 | "Dell Vostro 3500", STAC_DELL_VOSTRO_3500), |
| 1699 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1656, | 1720 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1656, |
| @@ -2855,6 +2876,9 @@ static inline int stac92xx_add_jack_mode_control(struct hda_codec *codec, | |||
| 2855 | char name[22]; | 2876 | char name[22]; |
| 2856 | 2877 | ||
| 2857 | if (snd_hda_get_input_pin_attr(def_conf) != INPUT_PIN_ATTR_INT) { | 2878 | if (snd_hda_get_input_pin_attr(def_conf) != INPUT_PIN_ATTR_INT) { |
| 2879 | if (spec->headset_jack && snd_hda_get_input_pin_attr(def_conf) | ||
| 2880 | != INPUT_PIN_ATTR_DOCK) | ||
| 2881 | return 0; | ||
| 2858 | if (snd_hda_get_default_vref(codec, nid) == AC_PINCTL_VREF_GRD | 2882 | if (snd_hda_get_default_vref(codec, nid) == AC_PINCTL_VREF_GRD |
| 2859 | && nid == spec->line_switch) | 2883 | && nid == spec->line_switch) |
| 2860 | control = STAC_CTL_WIDGET_IO_SWITCH; | 2884 | control = STAC_CTL_WIDGET_IO_SWITCH; |
| @@ -5626,6 +5650,9 @@ again: | |||
| 5626 | case STAC_92HD83XXX_HP_MIC_LED: | 5650 | case STAC_92HD83XXX_HP_MIC_LED: |
| 5627 | spec->mic_mute_led_gpio = 0x08; /* GPIO3 */ | 5651 | spec->mic_mute_led_gpio = 0x08; /* GPIO3 */ |
| 5628 | break; | 5652 | break; |
| 5653 | case STAC_92HD83XXX_HEADSET_JACK: | ||
| 5654 | spec->headset_jack = 1; | ||
| 5655 | break; | ||
| 5629 | } | 5656 | } |
| 5630 | 5657 | ||
| 5631 | if (find_mute_led_cfg(codec, default_polarity)) | 5658 | if (find_mute_led_cfg(codec, default_polarity)) |
