Skip to content

Commit 52d39ef

Browse files
authored
dma: add methods to read CR for debug
1 parent 71829ba commit 52d39ef

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

hal/src/dma/cr.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,3 +877,23 @@ impl From<Cr> for u32 {
877877
reg.raw()
878878
}
879879
}
880+
881+
impl core::fmt::Display for Cr {
882+
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
883+
f.debug_struct("Cr")
884+
.field("privileged", &self.privileged())
885+
.field("mem2mem", &self.mem2mem())
886+
.field("priority", &self.priority())
887+
.field("mem_size", &self.mem_size())
888+
.field("periph_size", &self.periph_size())
889+
.field("mem_inc", &self.mem_inc())
890+
.field("periph_inc", &self.periph_inc())
891+
.field("circ", &self.circ())
892+
.field("dir", &self.dir())
893+
.field("xfer_err_irq_en", &self.xfer_err_irq_en())
894+
.field("xfer_hlf_irq_en", &self.xfer_hlf_irq_en())
895+
.field("xfer_cpl_irq_en", &self.xfer_cpl_irq_en())
896+
.field("enabled", &self.enabled())
897+
.finish()
898+
}
899+
}

hal/src/dma/mod.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,21 @@ impl<const BASE: usize, const CH: u8> Dma<BASE, CH> {
101101
unsafe { Self::NDT.write_volatile(ndt) }
102102
}
103103

104+
#[inline]
105+
pub fn num_data_xfer(&self) -> u32 {
106+
unsafe { Self::NDT.read_volatile() }
107+
}
108+
104109
#[inline]
105110
pub fn set_cr(&mut self, cr: Cr) {
106111
unsafe { Self::CR.write_volatile(cr.raw()) }
107112
}
108113

114+
#[inline]
115+
pub fn cr(&self) -> Cr {
116+
Cr::new(unsafe { Self::CR.read_volatile() })
117+
}
118+
109119
#[inline]
110120
pub fn set_mux_cr_reqid(&mut self, req_id: u8) {
111121
unsafe { Self::MUX_CR.write_volatile(req_id as u32) }
@@ -133,7 +143,9 @@ pub(crate) mod sealed {
133143
fn set_periph_addr(&mut self, pa: u32);
134144
fn set_mem_addr(&mut self, ma: u32);
135145
fn set_num_data_xfer(&mut self, ndt: u32);
146+
fn num_data_xfer(&self) -> u32;
136147
fn set_cr(&mut self, cr: Cr);
148+
fn cr(&self) -> Cr;
137149
fn set_mux_cr_reqid(&mut self, req_id: u8);
138150
fn sync_ovr(&self) -> bool;
139151
fn clr_sync_ovr(&mut self);
@@ -256,10 +268,18 @@ macro_rules! dma_ch {
256268
self.dma.set_num_data_xfer(ndt)
257269
}
258270
#[inline]
271+
fn num_data_xfer(&self) -> u32 {
272+
self.dma.num_data_xfer()
273+
}
274+
#[inline]
259275
fn set_cr(&mut self, cr: Cr) {
260276
self.dma.set_cr(cr)
261277
}
262278
#[inline]
279+
fn cr(&self) -> Cr {
280+
self.dma.cr()
281+
}
282+
#[inline]
263283
fn set_mux_cr_reqid(&mut self, req_id: u8) {
264284
self.dma.set_mux_cr_reqid(req_id)
265285
}

0 commit comments

Comments
 (0)