diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-11-14 11:08:28 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-11-14 11:48:28 +0100 |
commit | df9426f970c6c3ff11300cefbf221abee679b270 (patch) | |
tree | bf01743b689bf2b7a3cbc34157884672ab44f3d4 | |
parent | bsp/gumstix: Fix warning (diff) | |
download | rtems-df9426f970c6c3ff11300cefbf221abee679b270.tar.bz2 |
bsp/riscv: riscv_get_core_frequency()
Always provide this function. Return 0 by default. Fix formatting.
Simplify function.
Update #3785.
-rw-r--r-- | bsps/riscv/riscv/include/bsp/riscv.h | 2 | ||||
-rw-r--r-- | bsps/riscv/riscv/start/bspstart.c | 64 |
2 files changed, 23 insertions, 43 deletions
diff --git a/bsps/riscv/riscv/include/bsp/riscv.h b/bsps/riscv/riscv/include/bsp/riscv.h index f2f1a597ca..a469155865 100644 --- a/bsps/riscv/riscv/include/bsp/riscv.h +++ b/bsps/riscv/riscv/include/bsp/riscv.h @@ -38,9 +38,7 @@ extern volatile RISCV_CLINT_regs *riscv_clint; void *riscv_fdt_get_address(const void *fdt, int node); -#if RISCV_ENABLE_FRDME310ARTY_SUPPORT != 0 uint32_t riscv_get_core_frequency(void); -#endif #ifdef RTEMS_SMP extern uint32_t riscv_hart_count; diff --git a/bsps/riscv/riscv/start/bspstart.c b/bsps/riscv/riscv/start/bspstart.c index a462bbe6e1..ff5738628d 100644 --- a/bsps/riscv/riscv/start/bspstart.c +++ b/bsps/riscv/riscv/start/bspstart.c @@ -32,9 +32,7 @@ #include <libfdt.h> #include <string.h> -#if RISCV_ENABLE_FRDME310ARTY_SUPPORT != 0 -unsigned int riscv_core_freq; -#endif +static uint32_t riscv_core_freq; void *riscv_fdt_get_address(const void *fdt, int node) { @@ -166,55 +164,39 @@ uint32_t riscv_get_hart_index_by_phandle(uint32_t phandle) return UINT32_MAX; } -#if RISCV_ENABLE_FRDME310ARTY_SUPPORT != 0 static uint32_t get_core_frequency(void) { - uint32_t node; - const char *fdt=bsp_fdt_get(); - - char *tlclk; - uint32_t len; - - do - { - node=fdt_node_offset_by_compatible(fdt, -1,"fixed-clock"); - uint32_t *val=NULL; - if (node>0) - { - tlclk = fdt_getprop(fdt, node, "clock-output-names", &len); - - if (strcmp(tlclk,"tlclk") == 0) - { - val = fdt_getprop(fdt, node, "clock-frequency", &len); - if(val !=NULL) - { - riscv_core_freq=fdt32_to_cpu(*val); - break; - } - } - }else - { - bsp_fatal(RISCV_FATAL_NO_TLCLOCK_FREQUENCY_IN_DEVICE_TREE); - } +#if RISCV_ENABLE_FRDME310ARTY_SUPPORT != 0 + uint32_t node; + const char *fdt; + const char *tlclk; + int len; + const fdt32_t *val; - } while (node > 0); + fdt = bsp_fdt_get(); + node = fdt_node_offset_by_compatible(fdt, -1,"fixed-clock"); + tlclk = fdt_getprop(fdt, node, "clock-output-names", &len); - return riscv_core_freq; + if (strcmp(tlclk,"tlclk") != 0) { + bsp_fatal(RISCV_FATAL_NO_TLCLOCK_FREQUENCY_IN_DEVICE_TREE); + } + + val = fdt_getprop(fdt, node, "clock-frequency", &len); + if (val != NULL && len == 4) { + return fdt32_to_cpu(*val); + } +#endif + return 0; } -inline uint32_t riscv_get_core_frequency(void) +uint32_t riscv_get_core_frequency(void) { - return riscv_core_freq; + return riscv_core_freq; } -#endif void bsp_start(void) { riscv_find_harts(); bsp_interrupt_initialize(); - -#if RISCV_ENABLE_FRDME310ARTY_SUPPORT != 0 - riscv_core_freq=get_core_frequency(); -#endif - + riscv_core_freq = get_core_frequency(); } |