diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index e2f83591161b..6d1924c19abf 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -417,9 +417,11 @@ static void stac_update_outputs(struct hda_codec *codec) | |||
417 | val &= ~spec->eapd_mask; | 417 | val &= ~spec->eapd_mask; |
418 | else | 418 | else |
419 | val |= spec->eapd_mask; | 419 | val |= spec->eapd_mask; |
420 | if (spec->gpio_data != val) | 420 | if (spec->gpio_data != val) { |
421 | spec->gpio_data = val; | ||
421 | stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, | 422 | stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, |
422 | val); | 423 | val); |
424 | } | ||
423 | } | 425 | } |
424 | } | 426 | } |
425 | 427 | ||
@@ -2817,6 +2819,7 @@ static const struct hda_pintbl ecs202_pin_configs[] = { | |||
2817 | 2819 | ||
2818 | /* codec SSIDs for Intel Mac sharing the same PCI SSID 8384:7680 */ | 2820 | /* codec SSIDs for Intel Mac sharing the same PCI SSID 8384:7680 */ |
2819 | static const struct snd_pci_quirk stac922x_intel_mac_fixup_tbl[] = { | 2821 | static const struct snd_pci_quirk stac922x_intel_mac_fixup_tbl[] = { |
2822 | SND_PCI_QUIRK(0x0000, 0x0100, "Mac Mini", STAC_INTEL_MAC_V3), | ||
2820 | SND_PCI_QUIRK(0x106b, 0x0800, "Mac", STAC_INTEL_MAC_V1), | 2823 | SND_PCI_QUIRK(0x106b, 0x0800, "Mac", STAC_INTEL_MAC_V1), |
2821 | SND_PCI_QUIRK(0x106b, 0x0600, "Mac", STAC_INTEL_MAC_V2), | 2824 | SND_PCI_QUIRK(0x106b, 0x0600, "Mac", STAC_INTEL_MAC_V2), |
2822 | SND_PCI_QUIRK(0x106b, 0x0700, "Mac", STAC_INTEL_MAC_V2), | 2825 | SND_PCI_QUIRK(0x106b, 0x0700, "Mac", STAC_INTEL_MAC_V2), |
@@ -3231,7 +3234,7 @@ static const struct hda_fixup stac927x_fixups[] = { | |||
3231 | /* configure the analog microphone on some laptops */ | 3234 | /* configure the analog microphone on some laptops */ |
3232 | { 0x0c, 0x90a79130 }, | 3235 | { 0x0c, 0x90a79130 }, |
3233 | /* correct the front output jack as a hp out */ | 3236 | /* correct the front output jack as a hp out */ |
3234 | { 0x0f, 0x0227011f }, | 3237 | { 0x0f, 0x0221101f }, |
3235 | /* correct the front input jack as a mic */ | 3238 | /* correct the front input jack as a mic */ |
3236 | { 0x0e, 0x02a79130 }, | 3239 | { 0x0e, 0x02a79130 }, |
3237 | {} | 3240 | {} |
@@ -3612,20 +3615,18 @@ static int stac_parse_auto_config(struct hda_codec *codec) | |||
3612 | static int stac_init(struct hda_codec *codec) | 3615 | static int stac_init(struct hda_codec *codec) |
3613 | { | 3616 | { |
3614 | struct sigmatel_spec *spec = codec->spec; | 3617 | struct sigmatel_spec *spec = codec->spec; |
3615 | unsigned int gpio; | ||
3616 | int i; | 3618 | int i; |
3617 | 3619 | ||
3618 | /* override some hints */ | 3620 | /* override some hints */ |
3619 | stac_store_hints(codec); | 3621 | stac_store_hints(codec); |
3620 | 3622 | ||
3621 | /* set up GPIO */ | 3623 | /* set up GPIO */ |
3622 | gpio = spec->gpio_data; | ||
3623 | /* turn on EAPD statically when spec->eapd_switch isn't set. | 3624 | /* turn on EAPD statically when spec->eapd_switch isn't set. |
3624 | * otherwise, unsol event will turn it on/off dynamically | 3625 | * otherwise, unsol event will turn it on/off dynamically |
3625 | */ | 3626 | */ |
3626 | if (!spec->eapd_switch) | 3627 | if (!spec->eapd_switch) |
3627 | gpio |= spec->eapd_mask; | 3628 | spec->gpio_data |= spec->eapd_mask; |
3628 | stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, gpio); | 3629 | stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data); |
3629 | 3630 | ||
3630 | snd_hda_gen_init(codec); | 3631 | snd_hda_gen_init(codec); |
3631 | 3632 | ||
@@ -3915,6 +3916,7 @@ static void stac_setup_gpio(struct hda_codec *codec) | |||
3915 | { | 3916 | { |
3916 | struct sigmatel_spec *spec = codec->spec; | 3917 | struct sigmatel_spec *spec = codec->spec; |
3917 | 3918 | ||
3919 | spec->gpio_mask |= spec->eapd_mask; | ||
3918 | if (spec->gpio_led) { | 3920 | if (spec->gpio_led) { |
3919 | if (!spec->vref_mute_led_nid) { | 3921 | if (!spec->vref_mute_led_nid) { |
3920 | spec->gpio_mask |= spec->gpio_led; | 3922 | spec->gpio_mask |= spec->gpio_led; |