Add a non-minc write() to DMA which takes a count.
Use it from "read-only" SPI.
This commit is contained in:
@ -48,6 +48,7 @@ pub(crate) unsafe fn do_transfer(
|
||||
peri_addr: *const u8,
|
||||
mem_addr: *mut u8,
|
||||
mem_len: usize,
|
||||
incr_mem: bool,
|
||||
#[cfg(dmamux)] dmamux_regs: pac::dmamux::Dmamux,
|
||||
#[cfg(dmamux)] dmamux_ch_num: u8,
|
||||
) -> impl Future<Output = ()> {
|
||||
@ -187,6 +188,7 @@ pac::dma_channels! {
|
||||
src,
|
||||
buf.as_mut_ptr(),
|
||||
buf.len(),
|
||||
true,
|
||||
#[cfg(dmamux)]
|
||||
<Self as super::dmamux::sealed::MuxChannel>::DMAMUX_REGS,
|
||||
#[cfg(dmamux)]
|
||||
@ -211,6 +213,33 @@ pac::dma_channels! {
|
||||
dst,
|
||||
buf.as_ptr() as *mut u8,
|
||||
buf.len(),
|
||||
true,
|
||||
#[cfg(dmamux)]
|
||||
<Self as super::dmamux::sealed::MuxChannel>::DMAMUX_REGS,
|
||||
#[cfg(dmamux)]
|
||||
<Self as super::dmamux::sealed::MuxChannel>::DMAMUX_CH_NUM,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fn write_x<'a>(
|
||||
&'a mut self,
|
||||
request: Request,
|
||||
word: &u8,
|
||||
num: usize,
|
||||
dst: *mut u8,
|
||||
) -> Self::WriteFuture<'a> {
|
||||
unsafe {
|
||||
do_transfer(
|
||||
crate::pac::$dma_peri,
|
||||
$channel_num,
|
||||
(dma_num!($dma_peri) * 8) + $channel_num,
|
||||
request,
|
||||
vals::Dir::MEMORYTOPERIPHERAL,
|
||||
dst,
|
||||
word as *const u8 as *mut u8,
|
||||
num,
|
||||
false,
|
||||
#[cfg(dmamux)]
|
||||
<Self as super::dmamux::sealed::MuxChannel>::DMAMUX_REGS,
|
||||
#[cfg(dmamux)]
|
||||
|
Reference in New Issue
Block a user