mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-25 06:19:56 +00:00
GICv3: Introduce power management APIs for Redistributor
Some GICv3 implementations have provision for power management operations at Redistributor level. This patch introduces and provides place-holders for Redistributor power management. The default implementations are empty stubs, but are weakly bound so as to enable implementation-specific drivers to override them. Change-Id: I4fec1358693d3603ca5dce242a2f7f0e730516d8 Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
This commit is contained in:
parent
a4af0c2e84
commit
d780699b5e
2 changed files with 25 additions and 0 deletions
|
@ -40,6 +40,13 @@
|
||||||
static const gicv3_driver_data_t *driver_data;
|
static const gicv3_driver_data_t *driver_data;
|
||||||
static unsigned int gicv2_compat;
|
static unsigned int gicv2_compat;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Redistributor power operations are weakly bound so that they can be
|
||||||
|
* overridden
|
||||||
|
*/
|
||||||
|
#pragma weak gicv3_rdistif_off
|
||||||
|
#pragma weak gicv3_rdistif_on
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* This function initialises the ARM GICv3 driver in EL3 with provided platform
|
* This function initialises the ARM GICv3 driver in EL3 with provided platform
|
||||||
* inputs.
|
* inputs.
|
||||||
|
@ -188,6 +195,9 @@ void gicv3_rdistif_init(unsigned int proc_num)
|
||||||
|
|
||||||
assert(IS_IN_EL3());
|
assert(IS_IN_EL3());
|
||||||
|
|
||||||
|
/* Power on redistributor */
|
||||||
|
gicv3_rdistif_on(proc_num);
|
||||||
|
|
||||||
gicr_base = driver_data->rdistif_base_addrs[proc_num];
|
gicr_base = driver_data->rdistif_base_addrs[proc_num];
|
||||||
|
|
||||||
/* Set the default attribute of all SGIs and PPIs */
|
/* Set the default attribute of all SGIs and PPIs */
|
||||||
|
@ -210,6 +220,19 @@ void gicv3_rdistif_init(unsigned int proc_num)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Functions to perform power operations on GIC Redistributor
|
||||||
|
******************************************************************************/
|
||||||
|
void gicv3_rdistif_off(unsigned int proc_num)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void gicv3_rdistif_on(unsigned int proc_num)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* This function enables the GIC CPU interface of the calling CPU using only
|
* This function enables the GIC CPU interface of the calling CPU using only
|
||||||
* system register accesses.
|
* system register accesses.
|
||||||
|
|
|
@ -259,6 +259,8 @@ typedef struct gicv3_driver_data {
|
||||||
void gicv3_driver_init(const gicv3_driver_data_t *plat_driver_data);
|
void gicv3_driver_init(const gicv3_driver_data_t *plat_driver_data);
|
||||||
void gicv3_distif_init(void);
|
void gicv3_distif_init(void);
|
||||||
void gicv3_rdistif_init(unsigned int proc_num);
|
void gicv3_rdistif_init(unsigned int proc_num);
|
||||||
|
void gicv3_rdistif_on(unsigned int proc_num);
|
||||||
|
void gicv3_rdistif_off(unsigned int proc_num);
|
||||||
void gicv3_cpuif_enable(unsigned int proc_num);
|
void gicv3_cpuif_enable(unsigned int proc_num);
|
||||||
void gicv3_cpuif_disable(unsigned int proc_num);
|
void gicv3_cpuif_disable(unsigned int proc_num);
|
||||||
unsigned int gicv3_get_pending_interrupt_type(void);
|
unsigned int gicv3_get_pending_interrupt_type(void);
|
||||||
|
|
Loading…
Add table
Reference in a new issue