FVP: Add SP804 delay timer
authorRyan Harkin <ryan.harkin@linaro.org>
Tue, 17 Mar 2015 14:54:01 +0000 (14:54 +0000)
committerDan Handley <dan.handley@arm.com>
Thu, 18 Jun 2015 15:06:32 +0000 (16:06 +0100)
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>
include/plat/arm/board/common/v2m_def.h
plat/arm/board/fvp/fvp_bl2_setup.c
plat/arm/board/fvp/fvp_def.h
plat/arm/board/fvp/platform.mk

index c16e9bc2f1ef899e84d5df0f7b2972d7d7745e93..7a4ef5add1e9b499b7140b542cb50f6fd43267d5 100644 (file)
 #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,        \
index a08f42c221f0636ebadb0a869f9af83dc4e48a3d..b1cdef487ebfafee2f482899da4b545426a605cd 100644 (file)
@@ -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);
+}
index 47723c78da93ab879d516d699b8c3cd9412ad366..68ef297ce52ddf13d4eb8dd14041ad035234a0b7 100644 (file)
@@ -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
index cba18c79925852b714b599845e1f06f36d3b92d5..949e6addf152534509f7a89eca19a6c69ffb8120 100644 (file)
@@ -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              \