summaryrefslogtreecommitdiff
path: root/include/linux/irqchip/arm-gic-v3.h
diff options
context:
space:
mode:
authorMarc Zyngier <maz@kernel.org>2019-07-18 13:19:25 +0100
committerMarc Zyngier <maz@kernel.org>2019-08-20 10:23:35 +0100
commit5f51f803826e4f4aedff415ddaf14efa707be5a7 (patch)
tree0687c293d66d687124ea8c0555ccaec9e233278a /include/linux/irqchip/arm-gic-v3.h
parent4b049063e0bcbfd302f6bf867de9d55a965d622e (diff)
irqchip/gic-v3: Add EPPI range support
Expand the pre-existing PPI support to be able to deal with the Extended PPI range (EPPI). This includes obtaining the number of PPIs from each individual redistributor, and compute the minimum set (just in case someone builds something really clever...). Signed-off-by: Marc Zyngier <maz@kernel.org>
Diffstat (limited to 'include/linux/irqchip/arm-gic-v3.h')
-rw-r--r--include/linux/irqchip/arm-gic-v3.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h
index c523bf1faa55..9ec3349dee04 100644
--- a/include/linux/irqchip/arm-gic-v3.h
+++ b/include/linux/irqchip/arm-gic-v3.h
@@ -124,6 +124,18 @@
#define GICR_TYPER_CPU_NUMBER(r) (((r) >> 8) & 0xffff)
+#define EPPI_BASE_INTID 1056
+
+#define GICR_TYPER_NR_PPIS(r) \
+ ({ \
+ unsigned int __ppinum = ((r) >> 27) & 0x1f; \
+ unsigned int __nr_ppis = 16; \
+ if (__ppinum == 1 || __ppinum == 2) \
+ __nr_ppis += __ppinum * 32; \
+ \
+ __nr_ppis; \
+ })
+
#define GICR_WAKER_ProcessorSleep (1U << 1)
#define GICR_WAKER_ChildrenAsleep (1U << 2)