Refactor DMA traits.

This commit is contained in:
Matous Hybl
2021-11-19 19:15:55 +01:00
committed by Dario Nieuwenhuis
parent e2719aba10
commit b2910558d3
9 changed files with 591 additions and 559 deletions

View File

@ -70,14 +70,15 @@ impl<'d, T: Instance, TxDma, RxDma> Uart<'d, T, TxDma, RxDma> {
TxDma: crate::usart::TxDma<T>,
{
let ch = &mut self.tx_dma;
let request = ch.request();
unsafe {
self.inner.regs().cr3().modify(|reg| {
reg.set_dmat(true);
});
}
let r = self.inner.regs();
let dst = r.dr().ptr() as *mut u8;
ch.write(ch.request(), buffer, dst).await;
let dst = r.dr().ptr() as *mut u32;
crate::dma::write(ch, request, buffer, dst).await;
Ok(())
}
@ -86,14 +87,15 @@ impl<'d, T: Instance, TxDma, RxDma> Uart<'d, T, TxDma, RxDma> {
RxDma: crate::usart::RxDma<T>,
{
let ch = &mut self.rx_dma;
let request = ch.request();
unsafe {
self.inner.regs().cr3().modify(|reg| {
reg.set_dmar(true);
});
}
let r = self.inner.regs();
let src = r.dr().ptr() as *mut u8;
ch.read(ch.request(), src, buffer).await;
let src = r.dr().ptr() as *mut u32;
crate::dma::read(ch, request, src, buffer).await;
Ok(())
}

View File

@ -80,14 +80,15 @@ impl<'d, T: Instance, TxDma, RxDma> Uart<'d, T, TxDma, RxDma> {
TxDma: crate::usart::TxDma<T>,
{
let ch = &mut self.tx_dma;
let request = ch.request();
unsafe {
self.inner.regs().cr3().modify(|reg| {
reg.set_dmat(true);
});
}
let r = self.inner.regs();
let dst = r.tdr().ptr() as *mut u8;
ch.write(ch.request(), buffer, dst).await;
let dst = r.tdr().ptr() as *mut u32;
crate::dma::write(ch, request, buffer, dst).await;
Ok(())
}
@ -96,14 +97,16 @@ impl<'d, T: Instance, TxDma, RxDma> Uart<'d, T, TxDma, RxDma> {
RxDma: crate::usart::RxDma<T>,
{
let ch = &mut self.rx_dma;
let request = ch.request();
unsafe {
self.inner.regs().cr3().modify(|reg| {
reg.set_dmar(true);
});
}
let r = self.inner.regs();
let src = r.rdr().ptr() as *mut u8;
ch.read(ch.request(), src, buffer).await;
let src = r.rdr().ptr() as *mut u32;
crate::dma::read(ch, request, src, buffer).await;
Ok(())
}