diff options
Diffstat (limited to 'bsps/riscv/riscv/start/bspstart.c')
-rw-r--r-- | bsps/riscv/riscv/start/bspstart.c | 64 |
1 files changed, 23 insertions, 41 deletions
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(); } |