armcm_timer: Unify udelay() implementation

Move the udelay() code from various arm board directories into the
src/generic/armcm_timer.c code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor
2019-06-09 20:26:30 -04:00
parent 97840f9851
commit 700e35c6ac
10 changed files with 24 additions and 42 deletions

View File

@@ -10,6 +10,4 @@
extern GPIO_TypeDef *const digital_regs[];
extern uint32_t const digital_pins[];
void udelay(uint32_t usecs);
#endif // internal.h

View File

@@ -131,20 +131,6 @@ void io_config(void)
LL_DBGMCU_SetTracePinAssignment(LL_DBGMCU_TRACE_NONE);
}
// Implement simple early-boot delay mechanism
void
udelay(uint32_t usecs)
{
if (!(CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk)) {
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
}
uint32_t end = timer_read_time() + timer_from_us(usecs);
while (timer_is_before(timer_read_time(), end))
;
}
// Main entry point
int
main(void)

View File

@@ -6,6 +6,7 @@
#include <string.h> // NULL
#include "autoconf.h" // CONFIG_STM_FLASH_START_2000
#include "board/armcm_timer.h" // udelay
#include "board/gpio.h" // gpio_out_setup
#include "board/io.h" // writeb
#include "board/irq.h" // irq_disable