timer: usleep: Use HW clock to detect elapsed sleep time
timer: usleep: Use HW clock to detect elapsed sleep time

If a non-timer task event is received while in usleep, we will again
attempt to sleep for the entire duration. This can cause an infinite
sleep in cases where a periodic task event occurs. Fix this by checking
the HW clock for our elapsed duration.

BUG=chrome-os-partner:36864
TEST=Manual on Samus. Verify that we don't get stuck in usleep during
VCORE_PGOOD interrupt storm.
BRANCH=Samus

Change-Id: Ie3ab8ce3c22822095845a3d9a6f33bd4b1273c6e
Signed-off-by: Shawn Nematbakhsh <5259333ce42e3ace6a73988cec7115ed9d3a661a@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/251311
Reviewed-by: Randall Spangler <62698fdbb84d1779579ee80c3f39fac22017e5bc@chromium.org>
Reviewed-by: Alec Berg <1a4429eeda29095a12e19a73405f80f5b7f37a63@chromium.org>
Reviewed-by: Vincent Palatin <70a9964ec8fd10b0b08fcc8623c2add25ddf99ac@chromium.org>

fourier49/BZ_DEV_EC,md5555/ec,akappy7/ChromeOS_EC_LED_Diagnostics,fourier49/BIZ_EC,md5555/ec,coreboot/chrome-ec,eatbyte/chromium-ec,fourier49/BZ_DEV_EC,eatbyte/chromium-ec,md5555/ec,fourier49/BIZ_EC,coreboot/chrome-ec,akappy7/ChromeOS_EC_LED_Diagnostics,akappy7/ChromeOS_EC_LED_Diagnostics,fourier49/BZ_DEV_EC,fourier49/BZ_DEV_EC,eatbyte/chromium-ec,coreboot/chrome-ec,md5555/ec,fourier49/BIZ_EC,coreboot/chrome-ec,akappy7/ChromeOS_EC_LED_Diagnostics,eatbyte/chromium-ec,fourier49/BIZ_EC,coreboot/chrome-ec,akappy7/ChromeOS_EC_LED_Diagnostics,coreboot/chrome-ec