Remove usage from USB driver as well

pull/5581/head
Steven Cooreman 2017-11-24 16:22:04 +01:00
parent 813216306c
commit 5dd46136ad
1 changed files with 8 additions and 14 deletions

View File

@ -23,8 +23,7 @@
#include "em_usbtypes.h" #include "em_usbtypes.h"
#include "em_usbhal.h" #include "em_usbhal.h"
#include "em_usbd.h" #include "em_usbd.h"
#include "mbed_sleep.h"
#include "sleepmodes.h"
enum USBISRCommand { enum USBISRCommand {
CMD_HANDLED = 0, CMD_HANDLED = 0,
@ -134,11 +133,6 @@ USBHAL::USBHAL(void)
// be dynamically removed/reinstated to allow deeper sleep. // be dynamically removed/reinstated to allow deeper sleep.
usbhal_allow_em2(false); usbhal_allow_em2(false);
// When in suspend / Vbus off we can go to EM2, but never below
// that as long as USB is being used. Despite the name the call here
// blocks entering modes _below_ EM2, but allows EM2.
blockSleepMode(EM2);
epCallback[EP0OUT] = NULL; epCallback[EP0OUT] = NULL;
epCallback[EP0IN ] = NULL; epCallback[EP0IN ] = NULL;
epCallback[EP1OUT] = &USBHAL::EP1_OUT_callback; epCallback[EP1OUT] = &USBHAL::EP1_OUT_callback;
@ -193,17 +187,17 @@ USBHAL::~USBHAL(void)
usbhal_free_buffers(); usbhal_free_buffers();
usbhal_allow_em2(true); usbhal_allow_em2(true);
unblockSleepMode(EM2);
} }
extern "C" void usbhal_allow_em2(bool allow_em2) extern "C" void usbhal_allow_em2(bool allow_em2)
{ {
if (allow_em2) { static bool blocked = false;
// unblockSleepMode is safe to call even if we would unblock if (allow_em2 && blocked) {
// an already unblocked mode, so no checks here. sleep_manager_unlock_deep_sleep();
unblockSleepMode(EM1); blocked = false;
} else { } else if (!blocked) {
blockSleepMode(EM1); sleep_manager_lock_deep_sleep();
blocked = true;
} }
} }