aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpio/src/lib.rs
diff options
context:
space:
mode:
authorIan McIntyre <me@mciantyre.dev>2025-11-30 18:52:34 -0500
committerIan McIntyre <me@mciantyre.dev>2025-11-30 19:10:51 -0500
commit76199f21616ad86cf68f3b063c1ce23c6fc5a52f (patch)
tree4c076d0afd649803a2bd9a5ed5cbb1f1c74fb459 /drivers/gpio/src/lib.rs
First commit
Diffstat (limited to 'drivers/gpio/src/lib.rs')
-rw-r--r--drivers/gpio/src/lib.rs34
1 files changed, 34 insertions, 0 deletions
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 []);