aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkalkyl <[email protected]>2022-11-14 11:39:55 +0100
committerkalkyl <[email protected]>2022-11-14 11:39:55 +0100
commit8d2d5a30a519de76c3c74e5e8066ac3bc9aa8f77 (patch)
tree91e0a1a503852961e6e256b2506087ad678157c5
parent5cfad3f853280069e2927e4838d9b56980e28e34 (diff)
Single waker
-rw-r--r--embassy-nrf/src/spis.rs14
1 files changed, 6 insertions, 8 deletions
diff --git a/embassy-nrf/src/spis.rs b/embassy-nrf/src/spis.rs
index 416db2d33..f3105007f 100644
--- a/embassy-nrf/src/spis.rs
+++ b/embassy-nrf/src/spis.rs
@@ -201,12 +201,12 @@ impl<'d, T: Instance> Spis<'d, T> {
201 let s = T::state(); 201 let s = T::state();
202 202
203 if r.events_end.read().bits() != 0 { 203 if r.events_end.read().bits() != 0 {
204 s.end_waker.wake(); 204 s.waker.wake();
205 r.intenclr.write(|w| w.end().clear()); 205 r.intenclr.write(|w| w.end().clear());
206 } 206 }
207 207
208 if r.events_acquired.read().bits() != 0 { 208 if r.events_acquired.read().bits() != 0 {
209 s.acquire_waker.wake(); 209 s.waker.wake();
210 r.intenclr.write(|w| w.acquired().clear()); 210 r.intenclr.write(|w| w.acquired().clear());
211 } 211 }
212 } 212 }
@@ -295,7 +295,7 @@ impl<'d, T: Instance> Spis<'d, T> {
295 295
296 // Wait until CPU has acquired the semaphore. 296 // Wait until CPU has acquired the semaphore.
297 poll_fn(|cx| { 297 poll_fn(|cx| {
298 s.acquire_waker.register(cx.waker()); 298 s.waker.register(cx.waker());
299 if r.semstat.read().bits() == 1 { 299 if r.semstat.read().bits() == 1 {
300 return Poll::Ready(()); 300 return Poll::Ready(());
301 } 301 }
@@ -310,7 +310,7 @@ impl<'d, T: Instance> Spis<'d, T> {
310 // Wait for 'end' event. 310 // Wait for 'end' event.
311 r.intenset.write(|w| w.end().set()); 311 r.intenset.write(|w| w.end().set());
312 poll_fn(|cx| { 312 poll_fn(|cx| {
313 s.end_waker.register(cx.waker()); 313 s.waker.register(cx.waker());
314 if r.events_end.read().bits() != 0 { 314 if r.events_end.read().bits() != 0 {
315 return Poll::Ready(()); 315 return Poll::Ready(());
316 } 316 }
@@ -451,15 +451,13 @@ pub(crate) mod sealed {
451 use super::*; 451 use super::*;
452 452
453 pub struct State { 453 pub struct State {
454 pub end_waker: AtomicWaker, 454 pub waker: AtomicWaker,
455 pub acquire_waker: AtomicWaker,
456 } 455 }
457 456
458 impl State { 457 impl State {
459 pub const fn new() -> Self { 458 pub const fn new() -> Self {
460 Self { 459 Self {
461 end_waker: AtomicWaker::new(), 460 waker: AtomicWaker::new(),
462 acquire_waker: AtomicWaker::new(),
463 } 461 }
464 } 462 }
465 } 463 }