feat(timer): support PPI timer interrupts

Add support for timers that use a PPI as timer interrupt. A new
function, tftf_initialise_timer_secondary_core(), is added to initialize
the PPI on the secondary CPUs from tftf_warm_boot_main().

Change-Id: Ia343ce10b0b51e72b9e520b1fab0ea7ba0a43f2c
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
diff --git a/tftf/framework/timer/timer_framework.c b/tftf/framework/timer/timer_framework.c
index 49fd07f..46fe987 100644
--- a/tftf/framework/timer/timer_framework.c
+++ b/tftf/framework/timer/timer_framework.c
@@ -96,6 +96,14 @@
 	return 0;
 }
 
+void tftf_initialise_timer_secondary_core(void)
+{
+	if (!IS_SPI(TIMER_IRQ)) {
+		arm_gic_set_intr_priority(TIMER_IRQ, GIC_HIGHEST_NS_PRIORITY);
+		arm_gic_intr_enable(TIMER_IRQ);
+	}
+}
+
 /*
  * It returns the core number of next timer request to be serviced or
  * -1 if there is no request from any core. The next service request
@@ -179,7 +187,9 @@
 	if ((!get_current_prog_time()) || (interrupt_req_time[core_pos] <
 				(get_current_prog_time() - TIMER_STEP_VALUE))) {
 
-		arm_gic_set_intr_target(TIMER_IRQ, core_pos);
+		if (IS_SPI(TIMER_IRQ)) {
+			arm_gic_set_intr_target(TIMER_IRQ, core_pos);
+		}
 
 		rc = PROGRAM_TIMER(time_out_ms);
 		/* We don't expect timer programming to fail */