1f000744eSPrasad Kummari /* 2f000744eSPrasad Kummari * Copyright (c) 2023-2024, Advanced Micro Devices, Inc. All rights reserved. 3f000744eSPrasad Kummari * 4f000744eSPrasad Kummari * SPDX-License-Identifier: BSD-3-Clause 5f000744eSPrasad Kummari */ 6f000744eSPrasad Kummari #include <common/debug.h> 7cc3374acSPrasad Kummari #include <lib/mmio.h> 8f000744eSPrasad Kummari #include <plat/common/platform.h> 9f000744eSPrasad Kummari 10f000744eSPrasad Kummari #include <platform_def.h> 1116c611f8SMaheedhar Bollapalli #include <plat_clkfunc.h> 12f000744eSPrasad Kummari #include <plat_private.h> 13f000744eSPrasad Kummari plat_get_syscnt_freq2(void)14*1d94b27bSSaivardhan Thatikondaunsigned int plat_get_syscnt_freq2(void) 15cc3374acSPrasad Kummari { 16cc3374acSPrasad Kummari uint32_t counter_freq = 0; 17cc3374acSPrasad Kummari uint32_t ret = 0; 18cc3374acSPrasad Kummari 19cc3374acSPrasad Kummari counter_freq = mmio_read_32(IOU_SCNTRS_BASE + 20cc3374acSPrasad Kummari IOU_SCNTRS_BASE_FREQ_OFFSET); 21cc3374acSPrasad Kummari if (counter_freq != 0U) { 22cc3374acSPrasad Kummari ret = counter_freq; 23cc3374acSPrasad Kummari } else { 24cc3374acSPrasad Kummari INFO("Indicates counter frequency %dHz setting to %dHz\n", 25cc3374acSPrasad Kummari counter_freq, cpu_clock); 26cc3374acSPrasad Kummari ret = cpu_clock; 27cc3374acSPrasad Kummari } 28cc3374acSPrasad Kummari 29*1d94b27bSSaivardhan Thatikonda return (unsigned int)ret; 30cc3374acSPrasad Kummari } 31cc3374acSPrasad Kummari set_cnt_freq(void)32f000744eSPrasad Kummarivoid set_cnt_freq(void) 33f000744eSPrasad Kummari { 34f000744eSPrasad Kummari uint64_t counter_freq; 35f000744eSPrasad Kummari 36f000744eSPrasad Kummari /* Configure counter frequency */ 37f000744eSPrasad Kummari counter_freq = read_cntfrq_el0(); 38f000744eSPrasad Kummari if (counter_freq == 0U) { 39f000744eSPrasad Kummari write_cntfrq_el0(plat_get_syscnt_freq2()); 40f000744eSPrasad Kummari } 41f000744eSPrasad Kummari } 42