aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_realtek.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r--sound/pci/hda/patch_realtek.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 14ac9b0e740c..8bd226149868 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -37,6 +37,9 @@
37#include "hda_jack.h" 37#include "hda_jack.h"
38#include "hda_generic.h" 38#include "hda_generic.h"
39 39
40/* keep halting ALC5505 DSP, for power saving */
41#define HALT_REALTEK_ALC5505
42
40/* unsol event tags */ 43/* unsol event tags */
41#define ALC_DCVOL_EVENT 0x08 44#define ALC_DCVOL_EVENT 0x08
42 45
@@ -2659,15 +2662,27 @@ static void alc5505_dsp_init(struct hda_codec *codec)
2659 alc5505_coef_set(codec, 0x880c, 0x00000004); /* DRAM Function control */ 2662 alc5505_coef_set(codec, 0x880c, 0x00000004); /* DRAM Function control */
2660 alc5505_coef_set(codec, 0x880c, 0x00000003); 2663 alc5505_coef_set(codec, 0x880c, 0x00000003);
2661 alc5505_coef_set(codec, 0x880c, 0x00000010); 2664 alc5505_coef_set(codec, 0x880c, 0x00000010);
2665
2666#ifdef HALT_REALTEK_ALC5505
2667 alc5505_dsp_halt(codec);
2668#endif
2662} 2669}
2663 2670
2671#ifdef HALT_REALTEK_ALC5505
2672#define alc5505_dsp_suspend(codec) /* NOP */
2673#define alc5505_dsp_resume(codec) /* NOP */
2674#else
2675#define alc5505_dsp_suspend(codec) alc5505_dsp_halt(codec)
2676#define alc5505_dsp_resume(codec) alc5505_dsp_back_from_halt(codec)
2677#endif
2678
2664#ifdef CONFIG_PM 2679#ifdef CONFIG_PM
2665static int alc269_suspend(struct hda_codec *codec) 2680static int alc269_suspend(struct hda_codec *codec)
2666{ 2681{
2667 struct alc_spec *spec = codec->spec; 2682 struct alc_spec *spec = codec->spec;
2668 2683
2669 if (spec->has_alc5505_dsp) 2684 if (spec->has_alc5505_dsp)
2670 alc5505_dsp_halt(codec); 2685 alc5505_dsp_suspend(codec);
2671 return alc_suspend(codec); 2686 return alc_suspend(codec);
2672} 2687}
2673 2688
@@ -2696,7 +2711,7 @@ static int alc269_resume(struct hda_codec *codec)
2696 alc_inv_dmic_sync(codec, true); 2711 alc_inv_dmic_sync(codec, true);
2697 hda_call_check_power_status(codec, 0x01); 2712 hda_call_check_power_status(codec, 0x01);
2698 if (spec->has_alc5505_dsp) 2713 if (spec->has_alc5505_dsp)
2699 alc5505_dsp_back_from_halt(codec); 2714 alc5505_dsp_resume(codec);
2700 return 0; 2715 return 0;
2701} 2716}
2702#endif /* CONFIG_PM */ 2717#endif /* CONFIG_PM */