diff --git a/plat/xilinx/zynqmp/aarch64/zynqmp_common.c b/plat/xilinx/zynqmp/aarch64/zynqmp_common.c index 339967c7a..b3365d95a 100644 --- a/plat/xilinx/zynqmp/aarch64/zynqmp_common.c +++ b/plat/xilinx/zynqmp/aarch64/zynqmp_common.c @@ -350,10 +350,19 @@ unsigned int zynqmp_get_bootmode(void) void zynqmp_config_setup(void) { + uint64_t counter_freq; + /* Configure IPI data for ZynqMP */ zynqmp_ipi_config_table_init(); zynqmp_print_platform_name(); + + /* Configure counter frequency */ + counter_freq = read_cntfrq_el0(); + if (counter_freq == ZYNQMP_DEFAULT_COUNTER_FREQ) { + write_cntfrq_el0(plat_get_syscnt_freq2()); + } + generic_delay_timer_init(); } diff --git a/plat/xilinx/zynqmp/include/zynqmp_def.h b/plat/xilinx/zynqmp/include/zynqmp_def.h index f47463000..7e5839136 100644 --- a/plat/xilinx/zynqmp/include/zynqmp_def.h +++ b/plat/xilinx/zynqmp/include/zynqmp_def.h @@ -17,6 +17,9 @@ #define ZYNQMP_CONSOLE_IS(con) (ZYNQMP_CONSOLE_ID_ ## con == ZYNQMP_CONSOLE) +/* Default counter frequency */ +#define ZYNQMP_DEFAULT_COUNTER_FREQ 0U + /* Firmware Image Package */ #define ZYNQMP_PRIMARY_CPU 0