aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_sigmatel.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r--sound/pci/hda/patch_sigmatel.c14
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 */
2819static const struct snd_pci_quirk stac922x_intel_mac_fixup_tbl[] = { 2821static 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)
3612static int stac_init(struct hda_codec *codec) 3615static 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;