mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-18 10:34:19 +00:00
feat(gic): allow overriding GICD_PIDR2_GICV2 address
Older Qualcomm SoCs seem to have a custom Qualcomm implementation of the GICv2 specification. It's mostly compliant but unfortunately it looks like a mistake was made with the GICD_PIDR registers. PIDR2 is defined to be at offset 0xFE8, but the Qualcomm implementation has it at 0xFD8. It looks like the entire PIDR0-3/4-7 block is swapped compared to the ARM implementation: PIDR0 starts at 0xFD0 (instead of 0xFE0) and PIDR4 starts at 0xFE0 (instead of 0xFD0). Actually this only breaks a single assert in gicv2_main.c that checks the GIC version: assert((gic_version == ARCH_REV_GICV2) ... In release mode everything seems to work correctly. To keep the code generic, allow affected platforms to override the GICD_PIDR2_GICV2 register address in platform_def.h. Since this header is typically included very early (e.g. from assert.h), add an #ifndef so the definitions from platform_def.h takes priority. Change-Id: I2929a8c1726f8d751bc28796567eb30b81eca2fe Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
This commit is contained in:
parent
dddba19a6a
commit
a7521bd5d8
1 changed files with 8 additions and 0 deletions
|
@ -8,6 +8,7 @@
|
|||
#define GICV2_H
|
||||
|
||||
#include <drivers/arm/gic_common.h>
|
||||
#include <platform_def.h>
|
||||
|
||||
/*******************************************************************************
|
||||
* GICv2 miscellaneous definitions
|
||||
|
@ -30,7 +31,14 @@
|
|||
#define GICD_SGIR U(0xF00)
|
||||
#define GICD_CPENDSGIR U(0xF10)
|
||||
#define GICD_SPENDSGIR U(0xF20)
|
||||
|
||||
/*
|
||||
* Some GICv2 implementations violate the specification and have this register
|
||||
* at a different address. Allow overriding it in platform_def.h as workaround.
|
||||
*/
|
||||
#ifndef GICD_PIDR2_GICV2
|
||||
#define GICD_PIDR2_GICV2 U(0xFE8)
|
||||
#endif
|
||||
|
||||
#define ITARGETSR_SHIFT 2
|
||||
#define GIC_TARGET_CPU_MASK U(0xff)
|
||||
|
|
Loading…
Add table
Reference in a new issue