Skip to content

Commit

Permalink
ALSA: hda - Keep halting ALC5505 DSP
Browse files Browse the repository at this point in the history
ALC5505 DSP is enabled even though we don't use the features yet at
all.  This results in the unnecessarily high power consumption, more
than 100mV higher.  Until we implement the DSP support, better to
bypass DSP for saving more power.

Reported-by: Mengdong Lin <mengdong.lin@intel.com>
[Patch modified by Mengdong to cal alc5505_dsp_init() with extra
acl5505_dsp_halt().]

Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Iwai committed Jul 8, 2013
1 parent 38f0ad7 commit cd63a5f
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions sound/pci/hda/patch_realtek.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@
#include "hda_jack.h"
#include "hda_generic.h"

/* keep halting ALC5505 DSP, for power saving */
#define HALT_REALTEK_ALC5505

/* unsol event tags */
#define ALC_DCVOL_EVENT 0x08

Expand Down Expand Up @@ -2659,15 +2662,27 @@ static void alc5505_dsp_init(struct hda_codec *codec)
alc5505_coef_set(codec, 0x880c, 0x00000004); /* DRAM Function control */
alc5505_coef_set(codec, 0x880c, 0x00000003);
alc5505_coef_set(codec, 0x880c, 0x00000010);

#ifdef HALT_REALTEK_ALC5505
alc5505_dsp_halt(codec);
#endif
}

#ifdef HALT_REALTEK_ALC5505
#define alc5505_dsp_suspend(codec) /* NOP */
#define alc5505_dsp_resume(codec) /* NOP */
#else
#define alc5505_dsp_suspend(codec) alc5505_dsp_halt(codec)
#define alc5505_dsp_resume(codec) alc5505_dsp_back_from_halt(codec)
#endif

#ifdef CONFIG_PM
static int alc269_suspend(struct hda_codec *codec)
{
struct alc_spec *spec = codec->spec;

if (spec->has_alc5505_dsp)
alc5505_dsp_halt(codec);
alc5505_dsp_suspend(codec);
return alc_suspend(codec);
}

Expand Down Expand Up @@ -2696,7 +2711,7 @@ static int alc269_resume(struct hda_codec *codec)
alc_inv_dmic_sync(codec, true);
hda_call_check_power_status(codec, 0x01);
if (spec->has_alc5505_dsp)
alc5505_dsp_back_from_halt(codec);
alc5505_dsp_resume(codec);
return 0;
}
#endif /* CONFIG_PM */
Expand Down

0 comments on commit cd63a5f

Please sign in to comment.