diff options
Diffstat (limited to 'chips/imxrt1010/src/lib.rs')
| -rw-r--r-- | chips/imxrt1010/src/lib.rs | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/chips/imxrt1010/src/lib.rs b/chips/imxrt1010/src/lib.rs new file mode 100644 index 0000000..1c45430 --- /dev/null +++ b/chips/imxrt1010/src/lib.rs @@ -0,0 +1,76 @@ +//! Drivers for iMXRT1010 MCUs. + +#![no_std] + +pub use ral_registers::{Instance, modify_reg, read_reg, write_reg}; + +mod rt; +pub use rt::*; + +pub mod iomuxc; + +/// Clock control module. +pub mod ccm { + pub use imxrt_drivers_ccm_10xx::ahb::pll6_500mhz::*; + + pub use imxrt_drivers_ccm_10xx::ccm::{ + CCM, LowPowerMode, ahb_clk, clock_gate, flexspi1_clk_root_pll2 as flexspi1_clk, ipg_clk, + low_power_mode, lpi2c_clk, lpspi_clk, perclk_clk, set_low_power_mode, uart_clk, + }; + pub use imxrt_drivers_ccm_10xx::ccm_analog::{CCM_ANALOG, pll2, pll3}; + + /// Peripheral clock 2. + pub mod periph_clk2 { + pub use imxrt_drivers_ccm_10xx::ccm::periph_clk2::{Selection, selection, set_selection}; + } + + pub use imxrt_drivers_ccm_10xx::ccm::pre_periph_clk_pll6 as pre_periph_clk; + + pub use imxrt_drivers_ccm_10xx::ccm_analog::pll6_500mhz as pll6; + + pub mod gates { + use super::clock_gate::Locator::{self, *}; + + pub const FLEXSPI: Locator = Ccgr6Cg05; + } + + pub use imxrt_drivers_ccm_10xx::ral; +} + +pub use imxrt_drivers_dcdc as dcdc; +pub use imxrt_drivers_flexspi as flexspi; +pub use imxrt_drivers_gpio as gpio; +pub use imxrt_drivers_lpspi as lpspi; +pub use imxrt_drivers_pit as pit; +pub use imxrt_drivers_rtwdog as rtwdog; + +/// Peripheral instances. +pub mod instances { + ral_registers::instances! { + // Safety: The reference manual confirms there are register + // blocks at this address matching this shape. + unsafe { + /// Access CCM registers. + pub ccm<imxrt_drivers_ccm_10xx::ral::ccm::RegisterBlock> = 0x400F_C000; + /// Access CCM\_ANALOG registers. + pub ccm_analog<imxrt_drivers_ccm_10xx::ral::ccm_analog::RegisterBlock> = 0x400D_8000; + + pub dcdc<crate::dcdc::RegisterBlock> = 0x4008_0000; + + pub gpio1<crate::gpio::RegisterBlock> = 0x401b_8000; + pub gpio5<crate::gpio::RegisterBlock> = 0x400c_0000; + pub gpio2<crate::gpio::RegisterBlock> = 0x4200_0000; + + pub iomuxc<crate::iomuxc::RegisterBlock> = 0x401F_8000; + + pub flexspi<crate::flexspi::RegisterBlock> = 0x400A_0000; + + pub pit<crate::pit::RegisterBlock> = 0x4008_4000; + + pub lpspi1<crate::lpspi::RegisterBlock> = 0x4019_4000; + pub lpspi2<crate::lpspi::RegisterBlock> = 0x4019_8000; + + pub wdog3<crate::rtwdog::RegisterBlock> = 0x400B_C000; + } + } +} |
