|
@@ -826,7 +826,7 @@ static hda_nid_t path_power_update(struct hda_codec *codec,
|
|
|
bool allow_powerdown)
|
|
|
{
|
|
|
hda_nid_t nid, changed = 0;
|
|
|
- int i, state;
|
|
|
+ int i, state, power;
|
|
|
|
|
|
for (i = 0; i < path->depth; i++) {
|
|
|
nid = path->path[i];
|
|
@@ -838,7 +838,9 @@ static hda_nid_t path_power_update(struct hda_codec *codec,
|
|
|
state = AC_PWRST_D0;
|
|
|
else
|
|
|
state = AC_PWRST_D3;
|
|
|
- if (!snd_hda_check_power_state(codec, nid, state)) {
|
|
|
+ power = snd_hda_codec_read(codec, nid, 0,
|
|
|
+ AC_VERB_GET_POWER_STATE, 0);
|
|
|
+ if (power != (state | (state << 4))) {
|
|
|
snd_hda_codec_write(codec, nid, 0,
|
|
|
AC_VERB_SET_POWER_STATE, state);
|
|
|
changed = nid;
|