aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32/src/dma/dmamux.rs
blob: 1585b30d47ff003bc18bd9eb408352550a2838b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#![macro_use]

use crate::pac;

pub(crate) struct DmamuxInfo {
    pub(crate) mux: pac::dmamux::Dmamux,
    pub(crate) num: usize,
}

pub(crate) fn configure_dmamux(info: &DmamuxInfo, request: u8) {
    let ch_mux_regs = info.mux.ccr(info.num);
    ch_mux_regs.write(|reg| {
        reg.set_nbreq(0);
        reg.set_dmareq_id(request);
    });

    ch_mux_regs.modify(|reg| {
        reg.set_ege(true);
    });
}

/// safety: must be called only once
pub(crate) unsafe fn init(_cs: critical_section::CriticalSection) {
    crate::_generated::init_dmamux();
}