diff options
| author | Bob McWhirter <[email protected]> | 2021-07-13 10:56:35 -0400 |
|---|---|---|
| committer | Bob McWhirter <[email protected]> | 2021-07-13 10:56:35 -0400 |
| commit | 6e0e83cfd907c504c8d2ce05a7304b49565361ff (patch) | |
| tree | a3851981c44ca0e9fd5e34c6b97935a142c3b832 | |
| parent | 604a25ec5de6f8007f9ad61f315ea03d0d292829 (diff) | |
More conversions to associated consts.
| -rw-r--r-- | embassy-stm32/src/bdma/mod.rs | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/embassy-stm32/src/bdma/mod.rs b/embassy-stm32/src/bdma/mod.rs index 8448185a0..39e8bec3b 100644 --- a/embassy-stm32/src/bdma/mod.rs +++ b/embassy-stm32/src/bdma/mod.rs | |||
| @@ -39,7 +39,7 @@ static STATE: State = State::new(); | |||
| 39 | #[allow(unused)] | 39 | #[allow(unused)] |
| 40 | pub(crate) async unsafe fn transfer_p2m( | 40 | pub(crate) async unsafe fn transfer_p2m( |
| 41 | regs: pac::bdma::Ch, | 41 | regs: pac::bdma::Ch, |
| 42 | state_number: usize, | 42 | state_number: u8, |
| 43 | src: *const u8, | 43 | src: *const u8, |
| 44 | dst: &mut [u8], | 44 | dst: &mut [u8], |
| 45 | #[cfg(dmamux)] dmamux_regs: pac::dmamux::Dmamux, | 45 | #[cfg(dmamux)] dmamux_regs: pac::dmamux::Dmamux, |
| @@ -51,7 +51,7 @@ pub(crate) async unsafe fn transfer_p2m( | |||
| 51 | 51 | ||
| 52 | // Reset status | 52 | // Reset status |
| 53 | // Generate a DMB here to flush the store buffer (M7) before enabling the DMA | 53 | // Generate a DMB here to flush the store buffer (M7) before enabling the DMA |
| 54 | STATE.ch_status[state_number].store(CH_STATUS_NONE, Ordering::Release); | 54 | STATE.ch_status[state_number as usize].store(CH_STATUS_NONE, Ordering::Release); |
| 55 | 55 | ||
| 56 | let on_drop = OnDrop::new(|| unsafe { | 56 | let on_drop = OnDrop::new(|| unsafe { |
| 57 | regs.cr().modify(|w| { | 57 | regs.cr().modify(|w| { |
| @@ -78,8 +78,8 @@ pub(crate) async unsafe fn transfer_p2m( | |||
| 78 | }); | 78 | }); |
| 79 | 79 | ||
| 80 | let res = poll_fn(|cx| { | 80 | let res = poll_fn(|cx| { |
| 81 | STATE.ch_wakers[state_number].register(cx.waker()); | 81 | STATE.ch_wakers[state_number as usize].register(cx.waker()); |
| 82 | match STATE.ch_status[state_number].load(Ordering::Acquire) { | 82 | match STATE.ch_status[state_number as usize].load(Ordering::Acquire) { |
| 83 | CH_STATUS_NONE => Poll::Pending, | 83 | CH_STATUS_NONE => Poll::Pending, |
| 84 | x => Poll::Ready(x), | 84 | x => Poll::Ready(x), |
| 85 | } | 85 | } |
| @@ -93,7 +93,7 @@ pub(crate) async unsafe fn transfer_p2m( | |||
| 93 | #[allow(unused)] | 93 | #[allow(unused)] |
| 94 | pub(crate) async unsafe fn transfer_m2p( | 94 | pub(crate) async unsafe fn transfer_m2p( |
| 95 | regs: pac::bdma::Ch, | 95 | regs: pac::bdma::Ch, |
| 96 | state_number: usize, | 96 | state_number: u8, |
| 97 | src: &[u8], | 97 | src: &[u8], |
| 98 | dst: *mut u8, | 98 | dst: *mut u8, |
| 99 | #[cfg(dmamux)] dmamux_regs: pac::dmamux::Dmamux, | 99 | #[cfg(dmamux)] dmamux_regs: pac::dmamux::Dmamux, |
| @@ -105,7 +105,7 @@ pub(crate) async unsafe fn transfer_m2p( | |||
| 105 | 105 | ||
| 106 | // Reset status | 106 | // Reset status |
| 107 | // Generate a DMB here to flush the store buffer (M7) before enabling the DMA | 107 | // Generate a DMB here to flush the store buffer (M7) before enabling the DMA |
| 108 | STATE.ch_status[state_number].store(CH_STATUS_NONE, Ordering::Release); | 108 | STATE.ch_status[state_number as usize].store(CH_STATUS_NONE, Ordering::Release); |
| 109 | 109 | ||
| 110 | let on_drop = OnDrop::new(|| unsafe { | 110 | let on_drop = OnDrop::new(|| unsafe { |
| 111 | regs.cr().modify(|w| { | 111 | regs.cr().modify(|w| { |
| @@ -133,8 +133,8 @@ pub(crate) async unsafe fn transfer_m2p( | |||
| 133 | }); | 133 | }); |
| 134 | 134 | ||
| 135 | let res = poll_fn(|cx| { | 135 | let res = poll_fn(|cx| { |
| 136 | STATE.ch_wakers[state_number].register(cx.waker()); | 136 | STATE.ch_wakers[state_number as usize].register(cx.waker()); |
| 137 | match STATE.ch_status[state_number].load(Ordering::Acquire) { | 137 | match STATE.ch_status[state_number as usize].load(Ordering::Acquire) { |
| 138 | CH_STATUS_NONE => Poll::Pending, | 138 | CH_STATUS_NONE => Poll::Pending, |
| 139 | x => Poll::Ready(x), | 139 | x => Poll::Ready(x), |
| 140 | } | 140 | } |
| @@ -191,13 +191,11 @@ pub(crate) mod sealed { | |||
| 191 | 191 | ||
| 192 | pub trait Channel { | 192 | pub trait Channel { |
| 193 | const CH_NUM: u8; | 193 | const CH_NUM: u8; |
| 194 | 194 | const STATE_NUM: u8; | |
| 195 | fn dma_regs() -> pac::bdma::Dma; | 195 | const DMA_REGS: pac::bdma::Dma; |
| 196 | |||
| 197 | fn state_num(&self) -> usize; | ||
| 198 | 196 | ||
| 199 | fn regs(&self) -> pac::bdma::Ch { | 197 | fn regs(&self) -> pac::bdma::Ch { |
| 200 | Self::dma_regs().ch(Self::CH_NUM as usize) | 198 | Self::DMA_REGS.ch(Self::CH_NUM as usize) |
| 201 | } | 199 | } |
| 202 | } | 200 | } |
| 203 | } | 201 | } |
| @@ -219,15 +217,17 @@ macro_rules! impl_dma_channel { | |||
| 219 | impl Channel for crate::peripherals::$channel_peri {} | 217 | impl Channel for crate::peripherals::$channel_peri {} |
| 220 | impl sealed::Channel for crate::peripherals::$channel_peri { | 218 | impl sealed::Channel for crate::peripherals::$channel_peri { |
| 221 | const CH_NUM: u8 = $ch_num; | 219 | const CH_NUM: u8 = $ch_num; |
| 220 | const STATE_NUM: u8 = (dma_num!($dma_peri) * 8) + $ch_num; | ||
| 221 | const DMA_REGS: pac::bdma::Dma = crate::pac::$dma_peri; | ||
| 222 | 222 | ||
| 223 | #[inline] | 223 | //#[inline] |
| 224 | fn dma_regs() -> pac::bdma::Dma { | 224 | //fn dma_regs() -> pac::bdma::Dma { |
| 225 | crate::pac::$dma_peri | 225 | //crate::pac::$dma_peri |
| 226 | } | 226 | //} |
| 227 | 227 | ||
| 228 | fn state_num(&self) -> usize { | 228 | //fn state_num(&self) -> usize { |
| 229 | (dma_num!($dma_peri) * 8) + $ch_num | 229 | //(dma_num!($dma_peri) * 8) + $ch_num |
| 230 | } | 230 | //} |
| 231 | } | 231 | } |
| 232 | 232 | ||
| 233 | #[cfg(not(dmamux))] | 233 | #[cfg(not(dmamux))] |
| @@ -243,7 +243,7 @@ macro_rules! impl_dma_channel { | |||
| 243 | { | 243 | { |
| 244 | use sealed::Channel as _Channel; | 244 | use sealed::Channel as _Channel; |
| 245 | 245 | ||
| 246 | let state_num = self.state_num(); | 246 | let state_num = Self::STATE_NUM; |
| 247 | let regs = self.regs(); | 247 | let regs = self.regs(); |
| 248 | 248 | ||
| 249 | unsafe { transfer_m2p(regs, state_num, buf, dst) } | 249 | unsafe { transfer_m2p(regs, state_num, buf, dst) } |
| @@ -264,7 +264,7 @@ macro_rules! impl_dma_channel { | |||
| 264 | { | 264 | { |
| 265 | use sealed::Channel as _Channel; | 265 | use sealed::Channel as _Channel; |
| 266 | 266 | ||
| 267 | let state_num = self.state_num(); | 267 | let state_num = Self::STATE_NUM; |
| 268 | let regs = self.regs(); | 268 | let regs = self.regs(); |
| 269 | 269 | ||
| 270 | use crate::dmamux::sealed::Channel as MuxChannel; | 270 | use crate::dmamux::sealed::Channel as MuxChannel; |
| @@ -307,7 +307,7 @@ macro_rules! impl_dma_channel { | |||
| 307 | { | 307 | { |
| 308 | use sealed::Channel as _Channel; | 308 | use sealed::Channel as _Channel; |
| 309 | 309 | ||
| 310 | let state_num = self.state_num(); | 310 | let state_num = Self::STATE_NUM; |
| 311 | let regs = self.regs(); | 311 | let regs = self.regs(); |
| 312 | unsafe { transfer_p2m(regs, state_num, src, buf) } | 312 | unsafe { transfer_p2m(regs, state_num, src, buf) } |
| 313 | } | 313 | } |
| @@ -331,7 +331,7 @@ macro_rules! impl_dma_channel { | |||
| 331 | { | 331 | { |
| 332 | use sealed::Channel as _Channel; | 332 | use sealed::Channel as _Channel; |
| 333 | 333 | ||
| 334 | let state_num = self.state_num(); | 334 | let state_num = Self::STATE_NUM; |
| 335 | let regs = self.regs(); | 335 | let regs = self.regs(); |
| 336 | 336 | ||
| 337 | use crate::dmamux::sealed::Channel as MuxChannel; | 337 | use crate::dmamux::sealed::Channel as MuxChannel; |
