aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandrine Bailleux <sandrine.bailleux@arm.com>2014-04-02 15:51:19 +0100
committerSandrine Bailleux <sandrine.bailleux@arm.com>2014-06-04 15:37:36 +0100
commit0d1a5804a2be96bd3dbf08ff90e8956f629fe07d (patch)
treeb48769df7a8fe605bd37ff356a957fb2539cb1c0
parent26bae2fc7489fc7eeec3b35cdd612c6e3c478c48 (diff)
downloadtrusted-firmware-a-0d1a5804a2be96bd3dbf08ff90e8956f629fe07d.tar.gz
juno: Implement plat_get_syscnt_freq() function
In the Juno port, this function returns the first entry of the frequency modes table from the memory mapped generic timer.
-rw-r--r--plat/juno/aarch64/plat_common.c15
-rw-r--r--plat/juno/bl1_plat_setup.c2
-rw-r--r--plat/juno/platform.h1
3 files changed, 16 insertions, 2 deletions
diff --git a/plat/juno/aarch64/plat_common.c b/plat/juno/aarch64/plat_common.c
index 0011cb7aad..a3ecb005fc 100644
--- a/plat/juno/aarch64/plat_common.c
+++ b/plat/juno/aarch64/plat_common.c
@@ -31,7 +31,7 @@
#include <arch_helpers.h>
#include <platform.h>
#include <xlat_tables.h>
-
+#include <assert.h>
unsigned char platform_normal_stacks[PLATFORM_STACK_SIZE][PLATFORM_CORE_COUNT]
__attribute__ ((aligned(PLATFORM_CACHE_LINE_SIZE),
@@ -133,3 +133,16 @@ unsigned long plat_get_ns_image_entrypoint(void)
{
return NS_IMAGE_OFFSET;
}
+
+uint64_t plat_get_syscnt_freq(void)
+{
+ uint64_t counter_base_frequency;
+
+ /* Read the frequency from Frequency modes table */
+ counter_base_frequency = mmio_read_32(SYS_CNTCTL_BASE + CNTFID_OFF);
+
+ /* The first entry of the frequency modes table must not be 0 */
+ assert(counter_base_frequency != 0);
+
+ return counter_base_frequency;
+}
diff --git a/plat/juno/bl1_plat_setup.c b/plat/juno/bl1_plat_setup.c
index 7fe96f2bb4..91c0caf984 100644
--- a/plat/juno/bl1_plat_setup.c
+++ b/plat/juno/bl1_plat_setup.c
@@ -208,7 +208,7 @@ void bl1_platform_setup(void)
io_setup();
/* Enable and initialize the System level generic timer */
- mmio_write_32(SYS_CNTCTL_BASE + CNTCR_OFF, CNTCR_EN);
+ mmio_write_32(SYS_CNTCTL_BASE + CNTCR_OFF, CNTCR_FCREQ(0) | CNTCR_EN);
}
diff --git a/plat/juno/platform.h b/plat/juno/platform.h
index dfcffff926..fcf63b7ce7 100644
--- a/plat/juno/platform.h
+++ b/plat/juno/platform.h
@@ -335,6 +335,7 @@ extern void configure_mmu(meminfo *,
extern void plat_report_exception(unsigned long);
extern unsigned long plat_get_ns_image_entrypoint(void);
extern unsigned long platform_get_stack(unsigned long mpidr);
+extern uint64_t plat_get_syscnt_freq(void);
/* Declarations for fvp_gic.c */
extern void gic_cpuif_deactivate(unsigned int);