100cc96f0SAndrew Jones /* 200cc96f0SAndrew Jones * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com> 300cc96f0SAndrew Jones * 400cc96f0SAndrew Jones * This work is licensed under the terms of the GNU LGPL, version 2. 500cc96f0SAndrew Jones */ 600cc96f0SAndrew Jones #ifndef _ASMARM_GIC_H_ 700cc96f0SAndrew Jones #define _ASMARM_GIC_H_ 800cc96f0SAndrew Jones 900cc96f0SAndrew Jones #include <asm/gic-v2.h> 1000cc96f0SAndrew Jones 1100cc96f0SAndrew Jones /* Distributor registers */ 1200cc96f0SAndrew Jones #define GICD_CTLR 0x0000 1300cc96f0SAndrew Jones #define GICD_TYPER 0x0004 1400cc96f0SAndrew Jones #define GICD_ISENABLER 0x0100 1500cc96f0SAndrew Jones #define GICD_IPRIORITYR 0x0400 16*ac4a67b6SAndrew Jones #define GICD_SGIR 0x0f00 1700cc96f0SAndrew Jones 1800cc96f0SAndrew Jones #define GICD_TYPER_IRQS(typer) ((((typer) & 0x1f) + 1) * 32) 1900cc96f0SAndrew Jones #define GICD_INT_EN_SET_SGI 0x0000ffff 2000cc96f0SAndrew Jones #define GICD_INT_DEF_PRI_X4 0xa0a0a0a0 2100cc96f0SAndrew Jones 2200cc96f0SAndrew Jones /* CPU interface registers */ 2300cc96f0SAndrew Jones #define GICC_CTLR 0x0000 2400cc96f0SAndrew Jones #define GICC_PMR 0x0004 25*ac4a67b6SAndrew Jones #define GICC_IAR 0x000c 26*ac4a67b6SAndrew Jones #define GICC_EOIR 0x0010 2700cc96f0SAndrew Jones 2800cc96f0SAndrew Jones #define GICC_INT_PRI_THRESHOLD 0xf0 29*ac4a67b6SAndrew Jones #define GICC_INT_SPURIOUS 0x3ff 3000cc96f0SAndrew Jones 3100cc96f0SAndrew Jones #ifndef __ASSEMBLY__ 3200cc96f0SAndrew Jones 3300cc96f0SAndrew Jones /* 3400cc96f0SAndrew Jones * gic_init will try to find all known gics, and then 3500cc96f0SAndrew Jones * initialize the gic data for the one found. 3600cc96f0SAndrew Jones * returns 3700cc96f0SAndrew Jones * 0 : no gic was found 3800cc96f0SAndrew Jones * > 0 : the gic version of the gic found 3900cc96f0SAndrew Jones */ 4000cc96f0SAndrew Jones extern int gic_init(void); 4100cc96f0SAndrew Jones 4200cc96f0SAndrew Jones #endif /* !__ASSEMBLY__ */ 4300cc96f0SAndrew Jones #endif /* _ASMARM_GIC_H_ */ 44