diff options
author | Wojtek Kosior <kwojtus@protonmail.com> | 2020-01-03 16:41:41 +0100 |
---|---|---|
committer | Wojtek Kosior <kwojtus@protonmail.com> | 2020-01-03 16:41:41 +0100 |
commit | 06991bb6572c1eb814ee35256b3c2bd06519acd2 (patch) | |
tree | 7d9d128a60d44ee5d0a3c74d84ac05132d326cea /armclock.h | |
parent | ffb2c4adfb8e65e355b39abd39d994eebc649c98 (diff) | |
download | rpi-MMU-example-06991bb6572c1eb814ee35256b3c2bd06519acd2.tar.gz rpi-MMU-example-06991bb6572c1eb814ee35256b3c2bd06519acd2.zip |
fix interrupt enabling/disabling/polling and uart fifo setting to make the io work properly
Diffstat (limited to 'armclock.h')
-rw-r--r-- | armclock.h | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -46,11 +46,21 @@ static inline void armclk_init(void) static inline void armclk_enable_timer_irq(void) { + armclk_control_t ctrl = + (armclk_control_t) *(uint32_t volatile*) ARMCLK_CONTROL; + ctrl.fields.interrupt_enable = 1; + *(uint32_t volatile*) ARMCLK_CONTROL = ctrl.raw; + *(uint32_t volatile*) ARM_ENABLE_BASIC_IRQS = 1; } static inline void armclk_disable_timer_irq(void) { + armclk_control_t ctrl = + (armclk_control_t) *(uint32_t volatile*) ARMCLK_CONTROL; + ctrl.fields.interrupt_enable = 0; + *(uint32_t volatile*) ARMCLK_CONTROL = ctrl.raw; + *(uint32_t volatile*) ARM_DISABLE_BASIC_IRQS = 1; } @@ -62,7 +72,7 @@ static inline void armclk_irq_settimeout(uint32_t timeout) static inline _Bool armclk_irq_pending(void) { - return *(uint32_t volatile*) ARMCLK_RAW_IRQ; + return *(uint32_t volatile*) ARM_IRQ_BASIC_PENDING & 1; } #endif // ARMCLOCK_H |