summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Harkin <ryan.harkin@linaro.org>2015-03-17 14:54:01 +0000
committerDan Handley <dan.handley@arm.com>2015-06-18 16:06:32 +0100
commitb49b3221900e4bc1d223227273815492da599f20 (patch)
tree9a932bf51a722da81e23d4128658f8ea4d0ea741
parentcc58b2d0f5698560d9f8c26e136fd0afc1d5d71b (diff)
FVP: Add SP804 delay timer
Add SP804 delay timer support to the FVP BSP. This commit simply provides the 3 constants needed by the SP804 delay timer driver and calls sp804_timer_init() in bl2_platform_setup(). The BSP does not currently use the delay timer functions. Note that the FVP SP804 is a normal world accessible peripheral and should not be used by the secure world after transition to the normal world. Change-Id: I5f91d2ac9eb336fd81943b3bb388860dfb5f2b39 Co-authored-by: Dan Handley <dan.handley@arm.com>
-rw-r--r--include/plat/arm/board/common/v2m_def.h3
-rw-r--r--plat/arm/board/fvp/fvp_bl2_setup.c12
-rw-r--r--plat/arm/board/fvp/fvp_def.h3
-rw-r--r--plat/arm/board/fvp/platform.mk4
4 files changed, 21 insertions, 1 deletions
diff --git a/include/plat/arm/board/common/v2m_def.h b/include/plat/arm/board/common/v2m_def.h
index c16e9bc..7a4ef5a 100644
--- a/include/plat/arm/board/common/v2m_def.h
+++ b/include/plat/arm/board/common/v2m_def.h
@@ -105,6 +105,9 @@
#define V2M_IOFPGA_UART2_CLK_IN_HZ 24000000
#define V2M_IOFPGA_UART3_CLK_IN_HZ 24000000
+/* SP804 timer related constants */
+#define V2M_SP804_TIMER0_BASE 0x1C110000
+#define V2M_SP804_TIMER1_BASE 0x1C120000
#define V2M_MAP_FLASH0 MAP_REGION_FLAT(V2M_FLASH0_BASE,\
V2M_FLASH0_SIZE, \
diff --git a/plat/arm/board/fvp/fvp_bl2_setup.c b/plat/arm/board/fvp/fvp_bl2_setup.c
index a08f42c..b1cdef4 100644
--- a/plat/arm/board/fvp/fvp_bl2_setup.c
+++ b/plat/arm/board/fvp/fvp_bl2_setup.c
@@ -29,6 +29,9 @@
*/
#include <plat_arm.h>
+#include <sp804_delay_timer.h>
+#include <v2m_def.h>
+#include "fvp_def.h"
#include "fvp_private.h"
@@ -39,3 +42,12 @@ void bl2_early_platform_setup(meminfo_t *mem_layout)
/* Initialize the platform config for future decision making */
fvp_config_setup();
}
+
+void bl2_platform_setup(void)
+{
+ arm_bl2_platform_setup();
+
+ /* Initialize delay timer driver using SP804 dual timer 0 */
+ sp804_timer_init(V2M_SP804_TIMER0_BASE,
+ SP804_TIMER_CLKMULT, SP804_TIMER_CLKDIV);
+}
diff --git a/plat/arm/board/fvp/fvp_def.h b/plat/arm/board/fvp/fvp_def.h
index 47723c7..68ef297 100644
--- a/plat/arm/board/fvp/fvp_def.h
+++ b/plat/arm/board/fvp/fvp_def.h
@@ -83,6 +83,9 @@
/* FVP Power controller base address*/
#define PWRC_BASE 0x1c100000
+/* FVP SP804 timer frequency is 35 MHz*/
+#define SP804_TIMER_CLKMULT 35
+#define SP804_TIMER_CLKDIV 1
/*******************************************************************************
* GIC-400 & interrupt handling related constants
diff --git a/plat/arm/board/fvp/platform.mk b/plat/arm/board/fvp/platform.mk
index cba18c7..949e6ad 100644
--- a/plat/arm/board/fvp/platform.mk
+++ b/plat/arm/board/fvp/platform.mk
@@ -46,7 +46,9 @@ BL1_SOURCES += drivers/io/io_semihosting.c \
plat/arm/board/fvp/fvp_bl1_setup.c \
plat/arm/board/fvp/fvp_io_storage.c
-BL2_SOURCES += drivers/io/io_semihosting.c \
+BL2_SOURCES += drivers/arm/sp804/sp804_delay_timer.c \
+ drivers/io/io_semihosting.c \
+ drivers/delay_timer/delay_timer.c \
lib/semihosting/semihosting.c \
lib/semihosting/aarch64/semihosting_call.S \
plat/arm/board/fvp/fvp_bl2_setup.c \