mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 10:04:26 +00:00
refactor(gicv3): add helper function to get the limit of SPI INTID
Add helper function gicv3_get_spi_limit() to get the value of (maximum SPI INTID + 1), so that some duplicated code can be removed later. Signed-off-by: Heyi Guo <guoheyi@linux.alibaba.com> Change-Id: I160c8a88fbb71d22790b8999a84afbfba766f5e7
This commit is contained in:
parent
b39a1308ab
commit
1e9428ea96
2 changed files with 20 additions and 0 deletions
|
@ -91,6 +91,25 @@ void gicv3_rdistif_base_addrs_probe(uintptr_t *rdistif_base_addrs,
|
||||||
} while ((typer_val & TYPER_LAST_BIT) == 0U);
|
} while ((typer_val & TYPER_LAST_BIT) == 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Helper function to get the maximum SPI INTID + 1.
|
||||||
|
******************************************************************************/
|
||||||
|
unsigned int gicv3_get_spi_limit(uintptr_t gicd_base)
|
||||||
|
{
|
||||||
|
unsigned int spi_limit;
|
||||||
|
unsigned int typer_reg = gicd_read_typer(gicd_base);
|
||||||
|
|
||||||
|
/* (maximum SPI INTID + 1) is equal to 32 * (GICD_TYPER.ITLinesNumber+1) */
|
||||||
|
spi_limit = ((typer_reg & TYPER_IT_LINES_NO_MASK) + 1U) << 5;
|
||||||
|
|
||||||
|
/* Filter out special INTIDs 1020-1023 */
|
||||||
|
if (spi_limit > (MAX_SPI_ID + 1U)) {
|
||||||
|
return MAX_SPI_ID + 1U;
|
||||||
|
}
|
||||||
|
|
||||||
|
return spi_limit;
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Helper function to configure the default attributes of (E)SPIs.
|
* Helper function to configure the default attributes of (E)SPIs.
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
|
@ -233,6 +233,7 @@ void gicr_set_icfgr(uintptr_t base, unsigned int id, unsigned int cfg);
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Private GICv3 helper function prototypes
|
* Private GICv3 helper function prototypes
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
unsigned int gicv3_get_spi_limit(uintptr_t gicd_base);
|
||||||
void gicv3_spis_config_defaults(uintptr_t gicd_base);
|
void gicv3_spis_config_defaults(uintptr_t gicd_base);
|
||||||
void gicv3_ppi_sgi_config_defaults(uintptr_t gicr_base);
|
void gicv3_ppi_sgi_config_defaults(uintptr_t gicr_base);
|
||||||
unsigned int gicv3_secure_ppi_sgi_config_props(uintptr_t gicr_base,
|
unsigned int gicv3_secure_ppi_sgi_config_props(uintptr_t gicr_base,
|
||||||
|
|
Loading…
Add table
Reference in a new issue