Refactor fvp_config into common platform header

Changed the fvp_config array in fvp_common.c into a struct and
moved into a new optional common platform header,
include/plat/common/plat_config.h. Removed the config definitions
in fvp_def.h and updated all references to the platform config.

This makes the interface to the platform config cleaner and uses
a little less RAM.

Fixes ARM-software/tf-issues#180

Change-Id: I58dd7b3c150f24f7ee230a26fd57c827853ba803
diff --git a/plat/fvp/fvp_gic.c b/plat/fvp/fvp_gic.c
index a48b29b..77a8bef 100644
--- a/plat/fvp/fvp_gic.c
+++ b/plat/fvp/fvp_gic.c
@@ -36,6 +36,7 @@
 #include <gic_v3.h>
 #include <interrupt_mgmt.h>
 #include <platform.h>
+#include <plat_config.h>
 #include <stdint.h>
 #include "fvp_def.h"
 #include "fvp_private.h"
@@ -275,13 +276,8 @@
 
 void gic_setup(void)
 {
-	unsigned int gicd_base, gicc_base;
-
-	gicd_base = fvp_get_cfgvar(CONFIG_GICD_ADDR);
-	gicc_base = fvp_get_cfgvar(CONFIG_GICC_ADDR);
-
-	gic_cpuif_setup(gicc_base);
-	gic_distif_setup(gicd_base);
+	gic_cpuif_setup(get_plat_config()->gicc_base);
+	gic_distif_setup(get_plat_config()->gicd_base);
 }
 
 /*******************************************************************************
@@ -298,7 +294,7 @@
  ******************************************************************************/
 uint32_t plat_interrupt_type_to_line(uint32_t type, uint32_t security_state)
 {
-	uint32_t gicc_base = fvp_get_cfgvar(CONFIG_GICC_ADDR);
+	uint32_t gicc_base = get_plat_config()->gicc_base;
 
 	assert(type == INTR_TYPE_S_EL1 ||
 	       type == INTR_TYPE_EL3 ||
@@ -326,10 +322,9 @@
  ******************************************************************************/
 uint32_t plat_ic_get_pending_interrupt_type(void)
 {
-	uint32_t id, gicc_base;
+	uint32_t id;
 
-	gicc_base = fvp_get_cfgvar(CONFIG_GICC_ADDR);
-	id = gicc_read_hppir(gicc_base);
+	id = gicc_read_hppir(get_plat_config()->gicc_base);
 
 	/* Assume that all secure interrupts are S-EL1 interrupts */
 	if (id < 1022)
@@ -350,7 +345,7 @@
 {
 	uint32_t id, gicc_base;
 
-	gicc_base = fvp_get_cfgvar(CONFIG_GICC_ADDR);
+	gicc_base = get_plat_config()->gicc_base;
 	id = gicc_read_hppir(gicc_base);
 
 	if (id < 1022)
@@ -372,7 +367,7 @@
  ******************************************************************************/
 uint32_t plat_ic_acknowledge_interrupt(void)
 {
-	return gicc_read_IAR(fvp_get_cfgvar(CONFIG_GICC_ADDR));
+	return gicc_read_IAR(get_plat_config()->gicc_base);
 }
 
 /*******************************************************************************
@@ -381,7 +376,7 @@
  ******************************************************************************/
 void plat_ic_end_of_interrupt(uint32_t id)
 {
-	gicc_write_EOIR(fvp_get_cfgvar(CONFIG_GICC_ADDR), id);
+	gicc_write_EOIR(get_plat_config()->gicc_base, id);
 	return;
 }
 
@@ -394,7 +389,7 @@
 {
 	uint32_t group;
 
-	group = gicd_get_igroupr(fvp_get_cfgvar(CONFIG_GICD_ADDR), id);
+	group = gicd_get_igroupr(get_plat_config()->gicd_base, id);
 
 	/* Assume that all secure interrupts are S-EL1 interrupts */
 	if (group == GRP0)