Files
OpenCellular/include
Nicolas Boichat 520bd3f6ad chip/stm32/usb: More reliable implementation of usb_wake
Current usb_wake was sleeping between setting and clearing RESUME
bit, which is unprecise.

Instead, we count ESOF interrupts in usb_interrupt to detect when
to clear RESUME.

It is also important that usb_wake does not block, as the calling
task (e.g. keyboard scanning) must continue to service events while
the USB device is resuming.

BRANCH=none
BUG=b:35587173
TEST=Connect hammer, force autosuspend using:
   DEVICE=$(dirname $(grep 5022 /sys/bus/usb/devices/*/idProduct))
   echo 500 > $DEVICE/power/autosuspend_delay_ms
   echo auto > $DEVICE/power/control
   Wait a second, type something quickly, verify that no keys are lost.

Change-Id: I53b46cce5a4adb0ee4c4a7e9f935c00f7f321636
Reviewed-on: https://chromium-review.googlesource.com/490129
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2017-05-02 20:24:17 -07:00
..
2017-02-17 04:09:37 -08:00
2017-01-07 13:29:52 -08:00
2016-05-26 16:17:26 -07:00
2013-12-17 21:27:53 +00:00
2017-03-16 04:17:32 -07:00
2015-06-18 19:07:00 +00:00
2015-06-18 19:07:00 +00:00
2015-07-27 22:19:16 +00:00
2014-02-08 00:14:48 +00:00
2013-10-25 20:12:49 +00:00
2015-06-10 18:24:05 +00:00
2017-02-27 16:56:24 -08:00
2015-05-27 03:58:16 +00:00
2015-05-27 03:58:16 +00:00
2013-06-26 09:08:23 -07:00
2017-02-06 14:50:32 -08:00
2011-12-07 19:10:02 +00:00
2016-11-08 17:11:28 -08:00
2012-10-25 14:12:11 -07:00
2015-10-07 17:51:36 -07:00
2016-07-29 10:51:22 -07:00
2015-06-18 19:07:00 +00:00
2015-06-18 19:07:00 +00:00
2015-06-18 19:07:00 +00:00
2016-11-15 17:41:53 -08:00
2017-02-23 11:36:21 -08:00
2017-03-13 17:53:58 -07:00
2016-11-08 17:11:28 -08:00
2015-09-16 14:49:46 -07:00
2017-02-23 11:36:21 -08:00
2015-06-18 19:07:00 +00:00
2017-03-07 14:15:56 -08:00
2017-02-23 16:02:02 -08:00
2015-01-20 20:56:43 +00:00