aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-07-14 18:52:53 +0000
committerGitHub <[email protected]>2023-07-14 18:52:53 +0000
commit7b36fe049dbb2b7c816a80d2238c2169bbc716d0 (patch)
treea2cc6d7f5b1f538ffd2f73c47b368e941c1eee2d
parent4b3fda4f96cee03d15ee5c339ea3073ca928239d (diff)
parent460cdc9e0f51979e27dbd0a8faaad2738760cdf3 (diff)
Merge pull request #1649 from simmsb/master
rp: Check intrstatus before signalling suspended
-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 }