forked from Mirrors/opensbi
lib: utils/fdt: Add fdt_parse_timebase_frequency() function
We add fdt_parse_timebase_frequency() function which can be used by ACLINT mtimer driver and platform code to get timebase frequency. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Xiang W <wxjstz@126.com>
This commit is contained in:
@@ -50,6 +50,8 @@ int fdt_parse_hart_id(void *fdt, int cpu_offset, u32 *hartid);
|
||||
|
||||
int fdt_parse_max_hart_id(void *fdt, u32 *max_hartid);
|
||||
|
||||
int fdt_parse_timebase_frequency(void *fdt, unsigned long *freq);
|
||||
|
||||
int fdt_parse_gaisler_uart_node(void *fdt, int nodeoffset,
|
||||
struct platform_uart_data *uart);
|
||||
|
||||
|
@@ -269,6 +269,27 @@ int fdt_parse_max_hart_id(void *fdt, u32 *max_hartid)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fdt_parse_timebase_frequency(void *fdt, unsigned long *freq)
|
||||
{
|
||||
const fdt32_t *val;
|
||||
int len, cpus_offset;
|
||||
|
||||
if (!fdt || !freq)
|
||||
return SBI_EINVAL;
|
||||
|
||||
cpus_offset = fdt_path_offset(fdt, "/cpus");
|
||||
if (cpus_offset < 0)
|
||||
return cpus_offset;
|
||||
|
||||
val = fdt_getprop(fdt, cpus_offset, "timebase-frequency", &len);
|
||||
if (len > 0 && val)
|
||||
*freq = fdt32_to_cpu(*val);
|
||||
else
|
||||
return SBI_ENOENT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fdt_parse_gaisler_uart_node(void *fdt, int nodeoffset,
|
||||
struct platform_uart_data *uart)
|
||||
{
|
||||
|
Reference in New Issue
Block a user