aboutsummaryrefslogtreecommitdiff
path: root/embassy-rp
diff options
context:
space:
mode:
authorBen Simms <[email protected]>2023-07-13 19:29:09 +0100
committerBen Simms <[email protected]>2023-07-13 19:29:09 +0100
commit460cdc9e0f51979e27dbd0a8faaad2738760cdf3 (patch)
treeca8357463187d6c31d20957e908617e498bf41a5 /embassy-rp
parentd979841f17721c344142d36bc56f79bea50a158f (diff)
Check intrstatus before signalling suspended
Diffstat (limited to 'embassy-rp')
-rw-r--r--embassy-rp/src/usb.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/embassy-rp/src/usb.rs b/embassy-rp/src/usb.rs
index b3f3bd927..4ab881f6e 100644
--- a/embassy-rp/src/usb.rs
+++ b/embassy-rp/src/usb.rs
@@ -361,6 +361,7 @@ impl<'d, T: Instance> driver::Bus for Bus<'d, T> {
361 361
362 let regs = T::regs(); 362 let regs = T::regs();
363 let siestatus = regs.sie_status().read(); 363 let siestatus = regs.sie_status().read();
364 let intrstatus = regs.intr().read();
364 365
365 if siestatus.resume() { 366 if siestatus.resume() {
366 regs.sie_status().write(|w| w.set_resume(true)); 367 regs.sie_status().write(|w| w.set_resume(true));
@@ -389,7 +390,7 @@ impl<'d, T: Instance> driver::Bus for Bus<'d, T> {
389 return Poll::Ready(Event::Reset); 390 return Poll::Ready(Event::Reset);
390 } 391 }
391 392
392 if siestatus.suspended() { 393 if siestatus.suspended() && intrstatus.dev_suspend() {
393 regs.sie_status().write(|w| w.set_suspended(true)); 394 regs.sie_status().write(|w| w.set_suspended(true));
394 return Poll::Ready(Event::Suspend); 395 return Poll::Ready(Event::Suspend);
395 } 396 }