Skip to content

Commit 5dd4613

Browse files
committed
Remove usage from USB driver as well
1 parent 8132163 commit 5dd4613

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

features/unsupported/USBDevice/targets/TARGET_Silicon_Labs/USBHAL_EFM32.cpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
#include "em_usbtypes.h"
2424
#include "em_usbhal.h"
2525
#include "em_usbd.h"
26-
27-
#include "sleepmodes.h"
26+
#include "mbed_sleep.h"
2827

2928
enum USBISRCommand {
3029
CMD_HANDLED = 0,
@@ -134,11 +133,6 @@ USBHAL::USBHAL(void)
134133
// be dynamically removed/reinstated to allow deeper sleep.
135134
usbhal_allow_em2(false);
136135

137-
// When in suspend / Vbus off we can go to EM2, but never below
138-
// that as long as USB is being used. Despite the name the call here
139-
// blocks entering modes _below_ EM2, but allows EM2.
140-
blockSleepMode(EM2);
141-
142136
epCallback[EP0OUT] = NULL;
143137
epCallback[EP0IN ] = NULL;
144138
epCallback[EP1OUT] = &USBHAL::EP1_OUT_callback;
@@ -193,17 +187,17 @@ USBHAL::~USBHAL(void)
193187
usbhal_free_buffers();
194188

195189
usbhal_allow_em2(true);
196-
unblockSleepMode(EM2);
197190
}
198191

199192
extern "C" void usbhal_allow_em2(bool allow_em2)
200193
{
201-
if (allow_em2) {
202-
// unblockSleepMode is safe to call even if we would unblock
203-
// an already unblocked mode, so no checks here.
204-
unblockSleepMode(EM1);
205-
} else {
206-
blockSleepMode(EM1);
194+
static bool blocked = false;
195+
if (allow_em2 && blocked) {
196+
sleep_manager_unlock_deep_sleep();
197+
blocked = false;
198+
} else if (!blocked) {
199+
sleep_manager_lock_deep_sleep();
200+
blocked = true;
207201
}
208202
}
209203

0 commit comments

Comments
 (0)