Commit e037cb4a authored by Mengdong Lin's avatar Mengdong Lin Committed by Takashi Iwai

ALSA : hda - bug fix on checking the supported power states of a codec

The return value of snd_hda_param_read() is -1 for an error, otherwise
it's the supported power states of a codec.

The supported power states is a 32-bit value. Bit 31 will be set to 1
if the codec supports EPSS, thus making "sup" negative. And the bit
28:5 is reserved as "0".
So a negative value other than -1 shall be further checked.

Please refer to High-Definition spec 7.3.4.12 "Supported Power
States", thanks!
Signed-off-by: default avatarMengdong Lin <mengdong.lin@intel.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 14bc9c6d
...@@ -3497,7 +3497,7 @@ static bool snd_hda_codec_get_supported_ps(struct hda_codec *codec, hda_nid_t fg ...@@ -3497,7 +3497,7 @@ static bool snd_hda_codec_get_supported_ps(struct hda_codec *codec, hda_nid_t fg
{ {
int sup = snd_hda_param_read(codec, fg, AC_PAR_POWER_STATE); int sup = snd_hda_param_read(codec, fg, AC_PAR_POWER_STATE);
if (sup < 0) if (sup == -1)
return false; return false;
if (sup & power_state) if (sup & power_state)
return true; return true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment