stm32/dma: update codegen+macrotables for new stm32-data
This commit is contained in:
@ -150,8 +150,8 @@ pub(crate) unsafe fn init() {
|
||||
}
|
||||
}
|
||||
|
||||
pac::bdma_channels! {
|
||||
($channel_peri:ident, $dma_peri:ident, $channel_num:expr) => {
|
||||
pac::dma_channels! {
|
||||
($channel_peri:ident, $dma_peri:ident, bdma, $channel_num:expr, $dmamux:tt) => {
|
||||
impl crate::dma::sealed::Channel for crate::peripherals::$channel_peri {}
|
||||
impl Channel for crate::peripherals::$channel_peri
|
||||
{
|
||||
|
@ -153,7 +153,7 @@ pub(crate) unsafe fn init() {
|
||||
}
|
||||
|
||||
pac::dma_channels! {
|
||||
($channel_peri:ident, $dma_peri:ident, $channel_num:expr) => {
|
||||
($channel_peri:ident, $dma_peri:ident, dma, $channel_num:expr, $dmamux:tt) => {
|
||||
impl crate::dma::sealed::Channel for crate::peripherals::$channel_peri {}
|
||||
impl Channel for crate::peripherals::$channel_peri
|
||||
{
|
||||
|
@ -24,40 +24,11 @@ pub(crate) trait MuxChannel {
|
||||
const DMAMUX_REGS: pac::dmamux::Dmamux;
|
||||
}
|
||||
|
||||
macro_rules! dma_num {
|
||||
(DMA1) => {
|
||||
0
|
||||
};
|
||||
(DMA2) => {
|
||||
1
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(not(rcc_h7))]
|
||||
pac::bdma_channels! {
|
||||
($channel_peri:ident, $dma_peri:ident, $channel_num:expr) => {
|
||||
impl MuxChannel for peripherals::$channel_peri {
|
||||
const DMAMUX_CH_NUM: u8 = (dma_num!($dma_peri) * 8) + $channel_num;
|
||||
const DMAMUX_REGS: pac::dmamux::Dmamux = pac::DMAMUX1;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(rcc_h7)]
|
||||
pac::dma_channels! {
|
||||
($channel_peri:ident, $dma_peri:ident, $channel_num:expr) => {
|
||||
($channel_peri:ident, $dma_peri:ident, $version:ident, $channel_num:expr, {dmamux: $dmamux:ident, dmamux_channel: $dmamux_channel:expr}) => {
|
||||
impl MuxChannel for peripherals::$channel_peri {
|
||||
const DMAMUX_CH_NUM: u8 = (dma_num!($dma_peri) * 8) + $channel_num;
|
||||
const DMAMUX_REGS: pac::dmamux::Dmamux = pac::DMAMUX1;
|
||||
}
|
||||
};
|
||||
}
|
||||
#[cfg(rcc_h7)]
|
||||
pac::bdma_channels! {
|
||||
($channel_peri:ident, $dma_peri:ident, $channel_num:expr) => {
|
||||
impl MuxChannel for peripherals::$channel_peri {
|
||||
const DMAMUX_CH_NUM: u8 = $channel_num;
|
||||
const DMAMUX_REGS: pac::dmamux::Dmamux = pac::DMAMUX2;
|
||||
const DMAMUX_CH_NUM: u8 = $dmamux_channel;
|
||||
const DMAMUX_REGS: pac::dmamux::Dmamux = pac::$dmamux;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -171,7 +171,7 @@ crate::pac::peripheral_pins!(
|
||||
);
|
||||
|
||||
macro_rules! impl_dma {
|
||||
($inst:ident, ALL, $signal:ident, $request:expr) => {
|
||||
($inst:ident, {dmamux: $dmamux:ident}, $signal:ident, $request:expr) => {
|
||||
impl<T: crate::dma::Channel> sealed::$signal<peripherals::$inst> for T {
|
||||
fn request(&self) -> dma::Request {
|
||||
$request
|
||||
@ -180,7 +180,7 @@ macro_rules! impl_dma {
|
||||
|
||||
impl<T: crate::dma::Channel> $signal<peripherals::$inst> for T {}
|
||||
};
|
||||
($inst:ident, $channel:ident, $signal:ident, $request:expr) => {
|
||||
($inst:ident, {channel: $channel:ident}, $signal:ident, $request:expr) => {
|
||||
impl sealed::$signal<peripherals::$inst> for peripherals::$channel {
|
||||
fn request(&self) -> dma::Request {
|
||||
$request
|
||||
@ -192,30 +192,16 @@ macro_rules! impl_dma {
|
||||
}
|
||||
|
||||
crate::pac::peripheral_dma_channels! {
|
||||
($peri:ident, usart, $kind:ident, RX, $channel:ident, $dma_peri:ident, $channel_num:expr, $request:expr) => {
|
||||
($peri:ident, usart, $kind:ident, RX, $channel:tt, $request:expr) => {
|
||||
impl_dma!($peri, $channel, RxDma, $request);
|
||||
};
|
||||
($peri:ident, usart, $kind:ident, TX, $channel:ident, $dma_peri:ident, $channel_num:expr, $request:expr) => {
|
||||
($peri:ident, usart, $kind:ident, TX, $channel:tt, $request:expr) => {
|
||||
impl_dma!($peri, $channel, TxDma, $request);
|
||||
};
|
||||
($peri:ident, uart, $kind:ident, RX, $channel:ident, $dma_peri:ident, $channel_num:expr, $request:expr) => {
|
||||
($peri:ident, uart, $kind:ident, RX, $channel:tt, $request:expr) => {
|
||||
impl_dma!($peri, $channel, RxDma, $request);
|
||||
};
|
||||
($peri:ident, uart, $kind:ident, TX, $channel:ident, $dma_peri:ident, $channel_num:expr, $request:expr) => {
|
||||
($peri:ident, uart, $kind:ident, TX, $channel:tt, $request:expr) => {
|
||||
impl_dma!($peri, $channel, TxDma, $request);
|
||||
};
|
||||
}
|
||||
crate::pac::dma_requests! {
|
||||
(usart, $peri:ident, RX, $request:expr) => {
|
||||
impl_dma!($peri, ALL, RxDma, $request);
|
||||
};
|
||||
(usart, $peri:ident, TX, $request:expr) => {
|
||||
impl_dma!($peri, ALL, TxDma, $request);
|
||||
};
|
||||
(uart, $peri:ident, RX, $request:expr) => {
|
||||
impl_dma!($peri, ALL, RxDma, $request);
|
||||
};
|
||||
(uart, $peri:ident, TX, $request:expr) => {
|
||||
impl_dma!($peri, ALL, TxDma, $request);
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user