diff options
Diffstat (limited to 'drivers/gpio')
| -rw-r--r-- | drivers/gpio/Cargo.toml | 7 | ||||
| -rw-r--r-- | drivers/gpio/src/lib.rs | 34 |
2 files changed, 41 insertions, 0 deletions
diff --git a/drivers/gpio/Cargo.toml b/drivers/gpio/Cargo.toml new file mode 100644 index 0000000..9e7f4e1 --- /dev/null +++ b/drivers/gpio/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "imxrt-drivers-gpio" +version = "0.1.0" +edition = "2024" + +[dependencies] +ral-registers = { workspace = true } diff --git a/drivers/gpio/src/lib.rs b/drivers/gpio/src/lib.rs new file mode 100644 index 0000000..31a04b1 --- /dev/null +++ b/drivers/gpio/src/lib.rs @@ -0,0 +1,34 @@ +#![no_std] + +use ral_registers::register; + +#[allow(non_snake_case)] +#[repr(C)] +pub struct RegisterBlock { + pub DR: u32, + pub GDIR: u32, + pub PSR: u32, + pub ICR1: u32, + pub ICR2: u32, + pub IMR: u32, + pub ISR: u32, + pub EDGE_SEL: u32, + _reserved0: [u8; 0x64], + pub DR_SET: u32, + pub DR_CLEAR: u32, + pub DR_TOGGLE: u32, +} + +pub type GPIO = ral_registers::Instance<RegisterBlock>; + +register!(pub DR<u32> RW []); +register!(pub GDIR<u32> RW []); +register!(pub PSR<u32> RO []); +register!(pub ICR1<u32> RW []); +register!(pub ICR2<u32> RW []); +register!(pub IMR<u32> RW []); +register!(pub ISR<u32> RW []); +register!(pub EDGE_SEL<u32> RW []); +register!(pub DR_SET<u32> WO []); +register!(pub DR_CLEAR<u32> WO []); +register!(pub DR_TOGGLE<u32> WO []); |
