diff options
author | Dan Handley <dan.handley@arm.com> | 2014-06-20 09:43:15 +0100 |
---|---|---|
committer | Dan Handley <dan.handley@arm.com> | 2014-07-09 16:36:39 +0100 |
commit | 1e8c5c4f20ef820c339992a89a4680f2ccddd69b (patch) | |
tree | f002ca49e24f23299cdb08ad3fb4f8020eab1b20 /plat/fvp/fvp_pm.c | |
parent | 6f3b195a18a151c08a4812497aaf4cee700d8b1b (diff) |
Refactor fvp gic code to be a generic driver
Refactor the FVP gic code in plat/fvp/fvp_gic.c to be a generic ARM
GIC driver in drivers/arm/gic/arm_gic.c. Provide the platform
specific inputs in the arm_gic_setup() function so that the driver
has no explicit dependency on platform code.
Provide weak implementations of the platform interrupt controller
API in a new file, plat/common/plat_gic.c. These simply call through
to the ARM GIC driver.
Move the only remaining FVP GIC function, fvp_gic_init() to
plat/fvp/aarch64/fvp_common.c and remove plat/fvp/fvp_gic.c
Fixes ARM-software/tf-issues#182
Change-Id: Iea82fe095fad62dd33ba9efbddd48c57717edd21
Diffstat (limited to 'plat/fvp/fvp_pm.c')
-rw-r--r-- | plat/fvp/fvp_pm.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/plat/fvp/fvp_pm.c b/plat/fvp/fvp_pm.c index f796718e..55f465ba 100644 --- a/plat/fvp/fvp_pm.c +++ b/plat/fvp/fvp_pm.c @@ -29,6 +29,7 @@ */ #include <arch_helpers.h> +#include <arm_gic.h> #include <assert.h> #include <bakery_lock.h> #include <cci400.h> @@ -130,7 +131,7 @@ int fvp_affinst_off(unsigned long mpidr, unsigned int state) { int rc = PSCI_E_SUCCESS; - unsigned int gicc_base, ectlr; + unsigned int ectlr; switch (afflvl) { case MPIDR_AFFLVL1: @@ -168,8 +169,7 @@ int fvp_affinst_off(unsigned long mpidr, * Prevent interrupts from spuriously waking up * this cpu */ - gicc_base = get_plat_config()->gicc_base; - gic_cpuif_deactivate(gicc_base); + arm_gic_cpuif_deactivate(); /* * Program the power controller to power this @@ -205,7 +205,7 @@ int fvp_affinst_suspend(unsigned long mpidr, unsigned int state) { int rc = PSCI_E_SUCCESS; - unsigned int gicc_base, ectlr; + unsigned int ectlr; unsigned long linear_id; mailbox_t *fvp_mboxes; @@ -251,8 +251,7 @@ int fvp_affinst_suspend(unsigned long mpidr, * Prevent interrupts from spuriously waking up * this cpu */ - gicc_base = get_plat_config()->gicc_base; - gic_cpuif_deactivate(gicc_base); + arm_gic_cpuif_deactivate(); /* * Program the power controller to power this @@ -284,7 +283,7 @@ int fvp_affinst_on_finish(unsigned long mpidr, int rc = PSCI_E_SUCCESS; unsigned long linear_id; mailbox_t *fvp_mboxes; - unsigned int gicd_base, gicc_base, ectlr; + unsigned int ectlr; switch (afflvl) { @@ -339,12 +338,10 @@ int fvp_affinst_on_finish(unsigned long mpidr, sizeof(unsigned long)); /* Enable the gic cpu interface */ - gicc_base = get_plat_config()->gicc_base; - gic_cpuif_setup(gicc_base); + arm_gic_cpuif_setup(); /* TODO: This setup is needed only after a cold boot */ - gicd_base = get_plat_config()->gicd_base; - gic_pcpu_distif_setup(gicd_base); + arm_gic_pcpu_distif_setup(); break; |