Stop active DMA transfer on drop
This commit is contained in:
		| @@ -30,9 +30,6 @@ pub fn copy<'a, C: Channel, W: Word>(ch: impl Peripheral<P = C> + 'a, from: &[W] | ||||
|             w.set_en(true); | ||||
|         }); | ||||
|  | ||||
|         // FIXME: | ||||
|         while p.ctrl_trig().read().busy() {} | ||||
|  | ||||
|         compiler_fence(Ordering::SeqCst); | ||||
|     } | ||||
|     Transfer::new(ch) | ||||
| @@ -51,8 +48,11 @@ impl<'a, C: Channel> Transfer<'a, C> { | ||||
|  | ||||
| impl<'a, C: Channel> Drop for Transfer<'a, C> { | ||||
|     fn drop(&mut self) { | ||||
|         // self.channel.request_stop(); | ||||
|         // while self.channel.is_running() {} | ||||
|         let p = self.channel.regs(); | ||||
|         unsafe { | ||||
|             p.ctrl_trig().write(|w| w.set_en(false)); | ||||
|             while p.ctrl_trig().read().busy() {} | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -64,7 +64,7 @@ impl<'a, C: Channel> Future for Transfer<'a, C> { | ||||
|         // if self.channel.is_running() { | ||||
|         //     Poll::Pending | ||||
|         // } else { | ||||
|             Poll::Ready(()) | ||||
|         Poll::Ready(()) | ||||
|         // } | ||||
|     } | ||||
| } | ||||
| @@ -87,9 +87,7 @@ pub trait Channel: Peripheral<P = Self> + sealed::Channel + Into<AnyChannel> + S | ||||
|     } | ||||
|  | ||||
|     fn degrade(self) -> AnyChannel { | ||||
|         AnyChannel { | ||||
|             number: self.number(), | ||||
|         } | ||||
|         AnyChannel { number: self.number() } | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user