diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 87eff3173ce9..5b7c173adcb8 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -2132,8 +2132,10 @@ static void stac92hd83xxx_fixup_hp_mic_led(struct hda_codec *codec, | |||
2132 | 2132 | ||
2133 | if (action == HDA_FIXUP_ACT_PRE_PROBE) { | 2133 | if (action == HDA_FIXUP_ACT_PRE_PROBE) { |
2134 | spec->mic_mute_led_gpio = 0x08; /* GPIO3 */ | 2134 | spec->mic_mute_led_gpio = 0x08; /* GPIO3 */ |
2135 | #ifdef CONFIG_PM | ||
2135 | /* resetting controller clears GPIO, so we need to keep on */ | 2136 | /* resetting controller clears GPIO, so we need to keep on */ |
2136 | codec->bus->power_keep_link_on = 1; | 2137 | codec->d3_stop_clk = 0; |
2138 | #endif | ||
2137 | } | 2139 | } |
2138 | } | 2140 | } |
2139 | 2141 | ||
@@ -4223,6 +4225,12 @@ static int stac_parse_auto_config(struct hda_codec *codec) | |||
4223 | if (err < 0) | 4225 | if (err < 0) |
4224 | return err; | 4226 | return err; |
4225 | 4227 | ||
4228 | if (spec->vref_mute_led_nid) { | ||
4229 | err = snd_hda_gen_fix_pin_power(codec, spec->vref_mute_led_nid); | ||
4230 | if (err < 0) | ||
4231 | return err; | ||
4232 | } | ||
4233 | |||
4226 | /* setup analog beep controls */ | 4234 | /* setup analog beep controls */ |
4227 | if (spec->anabeep_nid > 0) { | 4235 | if (spec->anabeep_nid > 0) { |
4228 | err = stac_auto_create_beep_ctls(codec, | 4236 | err = stac_auto_create_beep_ctls(codec, |
@@ -4392,6 +4400,7 @@ static const struct hda_codec_ops stac_patch_ops = { | |||
4392 | #ifdef CONFIG_PM | 4400 | #ifdef CONFIG_PM |
4393 | .suspend = stac_suspend, | 4401 | .suspend = stac_suspend, |
4394 | #endif | 4402 | #endif |
4403 | .stream_pm = snd_hda_gen_stream_pm, | ||
4395 | .reboot_notify = stac_shutup, | 4404 | .reboot_notify = stac_shutup, |
4396 | }; | 4405 | }; |
4397 | 4406 | ||
@@ -4485,6 +4494,7 @@ static int patch_stac92hd73xx(struct hda_codec *codec) | |||
4485 | return err; | 4494 | return err; |
4486 | 4495 | ||
4487 | spec = codec->spec; | 4496 | spec = codec->spec; |
4497 | codec->power_save_node = 1; | ||
4488 | spec->linear_tone_beep = 0; | 4498 | spec->linear_tone_beep = 0; |
4489 | spec->gen.mixer_nid = 0x1d; | 4499 | spec->gen.mixer_nid = 0x1d; |
4490 | spec->have_spdif_mux = 1; | 4500 | spec->have_spdif_mux = 1; |
@@ -4590,6 +4600,7 @@ static int patch_stac92hd83xxx(struct hda_codec *codec) | |||
4590 | codec->epss = 0; /* longer delay needed for D3 */ | 4600 | codec->epss = 0; /* longer delay needed for D3 */ |
4591 | 4601 | ||
4592 | spec = codec->spec; | 4602 | spec = codec->spec; |
4603 | codec->power_save_node = 1; | ||
4593 | spec->linear_tone_beep = 0; | 4604 | spec->linear_tone_beep = 0; |
4594 | spec->gen.own_eapd_ctl = 1; | 4605 | spec->gen.own_eapd_ctl = 1; |
4595 | spec->gen.power_down_unused = 1; | 4606 | spec->gen.power_down_unused = 1; |
@@ -4639,6 +4650,7 @@ static int patch_stac92hd95(struct hda_codec *codec) | |||
4639 | codec->epss = 0; /* longer delay needed for D3 */ | 4650 | codec->epss = 0; /* longer delay needed for D3 */ |
4640 | 4651 | ||
4641 | spec = codec->spec; | 4652 | spec = codec->spec; |
4653 | codec->power_save_node = 1; | ||
4642 | spec->linear_tone_beep = 0; | 4654 | spec->linear_tone_beep = 0; |
4643 | spec->gen.own_eapd_ctl = 1; | 4655 | spec->gen.own_eapd_ctl = 1; |
4644 | spec->gen.power_down_unused = 1; | 4656 | spec->gen.power_down_unused = 1; |
@@ -4680,6 +4692,7 @@ static int patch_stac92hd71bxx(struct hda_codec *codec) | |||
4680 | return err; | 4692 | return err; |
4681 | 4693 | ||
4682 | spec = codec->spec; | 4694 | spec = codec->spec; |
4695 | codec->power_save_node = 1; | ||
4683 | spec->linear_tone_beep = 0; | 4696 | spec->linear_tone_beep = 0; |
4684 | spec->gen.own_eapd_ctl = 1; | 4697 | spec->gen.own_eapd_ctl = 1; |
4685 | spec->gen.power_down_unused = 1; | 4698 | spec->gen.power_down_unused = 1; |
@@ -5091,20 +5104,8 @@ MODULE_ALIAS("snd-hda-codec-id:111d*"); | |||
5091 | MODULE_LICENSE("GPL"); | 5104 | MODULE_LICENSE("GPL"); |
5092 | MODULE_DESCRIPTION("IDT/Sigmatel HD-audio codec"); | 5105 | MODULE_DESCRIPTION("IDT/Sigmatel HD-audio codec"); |
5093 | 5106 | ||
5094 | static struct hda_codec_preset_list sigmatel_list = { | 5107 | static struct hda_codec_driver sigmatel_driver = { |
5095 | .preset = snd_hda_preset_sigmatel, | 5108 | .preset = snd_hda_preset_sigmatel, |
5096 | .owner = THIS_MODULE, | ||
5097 | }; | 5109 | }; |
5098 | 5110 | ||
5099 | static int __init patch_sigmatel_init(void) | 5111 | module_hda_codec_driver(sigmatel_driver); |
5100 | { | ||
5101 | return snd_hda_add_codec_preset(&sigmatel_list); | ||
5102 | } | ||
5103 | |||
5104 | static void __exit patch_sigmatel_exit(void) | ||
5105 | { | ||
5106 | snd_hda_delete_codec_preset(&sigmatel_list); | ||
5107 | } | ||
5108 | |||
5109 | module_init(patch_sigmatel_init) | ||
5110 | module_exit(patch_sigmatel_exit) | ||