mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
ALSA: hda - Avoid unnecessary parameter read for EPSS
EPSS parameter should be static, so we can read it once and remember. This also allows more easily to override the wrong EPSS capability reported from a codec by changing the flag in the codec initialization step. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
042b92c185
commit
983f6b9381
@ -1209,6 +1209,9 @@ static void snd_hda_codec_free(struct hda_codec *codec)
|
||||
kfree(codec);
|
||||
}
|
||||
|
||||
static bool snd_hda_codec_get_supported_ps(struct hda_codec *codec,
|
||||
hda_nid_t fg, unsigned int power_state);
|
||||
|
||||
static void hda_set_power_state(struct hda_codec *codec, hda_nid_t fg,
|
||||
unsigned int power_state);
|
||||
|
||||
@ -1317,6 +1320,10 @@ int /*__devinit*/ snd_hda_codec_new(struct hda_bus *bus,
|
||||
AC_VERB_GET_SUBSYSTEM_ID, 0);
|
||||
}
|
||||
|
||||
codec->epss = snd_hda_codec_get_supported_ps(codec,
|
||||
codec->afg ? codec->afg : codec->mfg,
|
||||
AC_PWRST_EPSS);
|
||||
|
||||
/* power-up all before initialization */
|
||||
hda_set_power_state(codec,
|
||||
codec->afg ? codec->afg : codec->mfg,
|
||||
@ -3543,8 +3550,7 @@ static void hda_set_power_state(struct hda_codec *codec, hda_nid_t fg,
|
||||
/* this delay seems necessary to avoid click noise at power-down */
|
||||
if (power_state == AC_PWRST_D3) {
|
||||
/* transition time less than 10ms for power down */
|
||||
bool epss = snd_hda_codec_get_supported_ps(codec, fg, AC_PWRST_EPSS);
|
||||
msleep(epss ? 10 : 100);
|
||||
msleep(codec->epss ? 10 : 100);
|
||||
}
|
||||
|
||||
/* repeat power states setting at most 10 times*/
|
||||
|
@ -862,6 +862,7 @@ struct hda_codec {
|
||||
unsigned int ignore_misc_bit:1; /* ignore MISC_NO_PRESENCE bit */
|
||||
unsigned int no_jack_detect:1; /* Machine has no jack-detection */
|
||||
unsigned int pcm_format_first:1; /* PCM format must be set first */
|
||||
unsigned int epss:1; /* supporting EPSS? */
|
||||
#ifdef CONFIG_SND_HDA_POWER_SAVE
|
||||
unsigned int power_on :1; /* current (global) power-state */
|
||||
int power_transition; /* power-state in transition */
|
||||
|
Loading…
Reference in New Issue
Block a user