rt2x00: Ignore set_state(STATE_SLEEP) failure
Some hardware never seem to accept the "goto sleep" command, since the legacy drivers don't have suspend and resume handlers the entire code for it was basically a educated guess (based on the "enable radio" code). This patch will only print a warning when the "goto sleep" command fails, and just continues as usual. Perhaps that means the device will not reach a sleep state and consumes more power then it should, but it is equally possible it simply needs some seconds longer to sleep. Anyway, by making the command non-fatal it will not block the rest of the suspend procedure. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
ebd9302842
commit
9896322ae1
|
@ -1393,11 +1393,20 @@ int rt2x00lib_suspend(struct rt2x00_dev *rt2x00dev, pm_message_t state)
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
/*
|
/*
|
||||||
* Set device mode to sleep for power management.
|
* Set device mode to sleep for power management,
|
||||||
|
* on some hardware this call seems to consistently fail.
|
||||||
|
* From the specifications it is hard to tell why it fails,
|
||||||
|
* and if this is a "bad thing".
|
||||||
|
* Overall it is safe to just ignore the failure and
|
||||||
|
* continue suspending. The only downside is that the
|
||||||
|
* device will not be in optimal power save mode, but with
|
||||||
|
* the radio and the other components already disabled the
|
||||||
|
* device is as good as disabled.
|
||||||
*/
|
*/
|
||||||
retval = rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_SLEEP);
|
retval = rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_SLEEP);
|
||||||
if (retval)
|
if (retval)
|
||||||
return retval;
|
WARNING(rt2x00dev, "Device failed to enter sleep state, "
|
||||||
|
"continue suspending.\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue