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.c31
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*");
5091MODULE_LICENSE("GPL"); 5104MODULE_LICENSE("GPL");
5092MODULE_DESCRIPTION("IDT/Sigmatel HD-audio codec"); 5105MODULE_DESCRIPTION("IDT/Sigmatel HD-audio codec");
5093 5106
5094static struct hda_codec_preset_list sigmatel_list = { 5107static 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
5099static int __init patch_sigmatel_init(void) 5111module_hda_codec_driver(sigmatel_driver);
5100{
5101 return snd_hda_add_codec_preset(&sigmatel_list);
5102}
5103
5104static void __exit patch_sigmatel_exit(void)
5105{
5106 snd_hda_delete_codec_preset(&sigmatel_list);
5107}
5108
5109module_init(patch_sigmatel_init)
5110module_exit(patch_sigmatel_exit)