aboutsummaryrefslogtreecommitdiff
path: root/src/bsp/drivers/gpio
diff options
context:
space:
mode:
Diffstat (limited to 'src/bsp/drivers/gpio')
-rw-r--r--src/bsp/drivers/gpio/mod.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/bsp/drivers/gpio/mod.rs b/src/bsp/drivers/gpio/mod.rs
new file mode 100644
index 0000000..a94c6e5
--- /dev/null
+++ b/src/bsp/drivers/gpio/mod.rs
@@ -0,0 +1,28 @@
+/// # GPIO Register
+pub mod GPPUD {
+ const ADDR: u32 = 0x3F200094;
+ pub fn set(v: u32) {
+ use crate::cpu::store32;
+ store32(ADDR, v)
+ }
+ pub fn clear() {
+ set(0)
+ }
+}
+/// # GPIO Clock 0 Register
+pub mod GPPUDCLK0 {
+ const ADDR: u32 = 0x3F200098;
+ const MASK: u32 = (1 << 14) | (1 << 15);
+ pub fn set(v: u32) {
+ use crate::cpu::store32;
+ store32(ADDR, v)
+ }
+ pub fn init() {
+ use crate::cpu::spin_for_n_cycles;
+ super::GPPUD::clear();
+ spin_for_n_cycles(150);
+ set(MASK);
+ spin_for_n_cycles(150);
+ set(0);
+ }
+}