diff options
| -rw-r--r-- | embassy-rp/src/dma.rs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/embassy-rp/src/dma.rs b/embassy-rp/src/dma.rs index dfa047a2f..bf15e1f4e 100644 --- a/embassy-rp/src/dma.rs +++ b/embassy-rp/src/dma.rs | |||
| @@ -30,9 +30,6 @@ pub fn copy<'a, C: Channel, W: Word>(ch: impl Peripheral<P = C> + 'a, from: &[W] | |||
| 30 | w.set_en(true); | 30 | w.set_en(true); |
| 31 | }); | 31 | }); |
| 32 | 32 | ||
| 33 | // FIXME: | ||
| 34 | while p.ctrl_trig().read().busy() {} | ||
| 35 | |||
| 36 | compiler_fence(Ordering::SeqCst); | 33 | compiler_fence(Ordering::SeqCst); |
| 37 | } | 34 | } |
| 38 | Transfer::new(ch) | 35 | Transfer::new(ch) |
| @@ -51,8 +48,11 @@ impl<'a, C: Channel> Transfer<'a, C> { | |||
| 51 | 48 | ||
| 52 | impl<'a, C: Channel> Drop for Transfer<'a, C> { | 49 | impl<'a, C: Channel> Drop for Transfer<'a, C> { |
| 53 | fn drop(&mut self) { | 50 | fn drop(&mut self) { |
| 54 | // self.channel.request_stop(); | 51 | let p = self.channel.regs(); |
| 55 | // while self.channel.is_running() {} | 52 | unsafe { |
| 53 | p.ctrl_trig().write(|w| w.set_en(false)); | ||
| 54 | while p.ctrl_trig().read().busy() {} | ||
| 55 | } | ||
| 56 | } | 56 | } |
| 57 | } | 57 | } |
| 58 | 58 | ||
| @@ -64,7 +64,7 @@ impl<'a, C: Channel> Future for Transfer<'a, C> { | |||
| 64 | // if self.channel.is_running() { | 64 | // if self.channel.is_running() { |
| 65 | // Poll::Pending | 65 | // Poll::Pending |
| 66 | // } else { | 66 | // } else { |
| 67 | Poll::Ready(()) | 67 | Poll::Ready(()) |
| 68 | // } | 68 | // } |
| 69 | } | 69 | } |
| 70 | } | 70 | } |
| @@ -87,9 +87,7 @@ pub trait Channel: Peripheral<P = Self> + sealed::Channel + Into<AnyChannel> + S | |||
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | fn degrade(self) -> AnyChannel { | 89 | fn degrade(self) -> AnyChannel { |
| 90 | AnyChannel { | 90 | AnyChannel { number: self.number() } |
| 91 | number: self.number(), | ||
| 92 | } | ||
| 93 | } | 91 | } |
| 94 | } | 92 | } |
| 95 | 93 | ||
