Skip to content

Commit 7d74d15

Browse files
committed
refactor: update DMA pointer types for cryp and hash modules
1 parent ff526e1 commit 7d74d15

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

embassy-stm32/src/cryp/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1785,9 +1785,9 @@ impl<'d, T: Instance, DmaIn, DmaOut> Cryp<'d, T, DmaIn, DmaOut> {
17851785
assert_eq!(blocks.len() % block_size, 0);
17861786
// Configure DMA to transfer input to crypto core.
17871787
let dma_request = dma.request();
1788-
let dst_ptr = T::regs().din().as_ptr();
1788+
let dst_ptr: *mut u32 = T::regs().din().as_ptr();
17891789
let num_words = blocks.len() / 4;
1790-
let src_ptr = ptr::slice_from_raw_parts(blocks.as_ptr().cast(), num_words);
1790+
let src_ptr: *const [u8] = ptr::slice_from_raw_parts(blocks.as_ptr().cast(), num_words);
17911791
let options = TransferOptions {
17921792
#[cfg(not(gpdma))]
17931793
priority: crate::dma::Priority::High,
@@ -1825,9 +1825,9 @@ impl<'d, T: Instance, DmaIn, DmaOut> Cryp<'d, T, DmaIn, DmaOut> {
18251825
assert_eq!((blocks.len() * 4) % block_size, 0);
18261826
// Configure DMA to transfer input to crypto core.
18271827
let dma_request = dma.request();
1828-
let dst_ptr = T::regs().din().as_ptr();
1828+
let dst_ptr: *mut u32 = T::regs().din().as_ptr();
18291829
let num_words = blocks.len();
1830-
let src_ptr = ptr::slice_from_raw_parts(blocks.as_ptr().cast(), num_words);
1830+
let src_ptr: *const [u32] = ptr::slice_from_raw_parts(blocks.as_ptr().cast(), num_words);
18311831
let options = TransferOptions {
18321832
#[cfg(not(gpdma))]
18331833
priority: crate::dma::Priority::High,

embassy-stm32/src/hash/mod.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -515,14 +515,21 @@ impl<'d, T: Instance, D> Hash<'d, T, D> {
515515

516516
// Configure DMA to transfer input to hash core.
517517
let dma_request = self.dma.request();
518-
let dst_ptr = T::regs().din().as_ptr();
518+
let dst_ptr: *mut u32 = T::regs().din().as_ptr();
519519
let mut num_words = input.len() / 4;
520520
if input.len() % 4 > 0 {
521521
num_words += 1;
522522
}
523-
let src_ptr = ptr::slice_from_raw_parts(input.as_ptr().cast(), num_words);
524-
let dma_transfer =
525-
unsafe { Transfer::new_write_raw(&mut self.dma, dma_request, src_ptr, dst_ptr, Default::default()) };
523+
let src_ptr: *const [u8] = ptr::slice_from_raw_parts(input.as_ptr().cast(), num_words);
524+
let dma_transfer = unsafe {
525+
Transfer::new_write_raw(
526+
&mut self.dma,
527+
dma_request,
528+
src_ptr,
529+
dst_ptr as *mut u32,
530+
Default::default(),
531+
)
532+
};
526533
T::regs().cr().modify(|w| w.set_dmae(true));
527534

528535
// Wait for the transfer to complete.

0 commit comments

Comments
 (0)