100cc96f0SAndrew Jones /* 200cc96f0SAndrew Jones * All GIC* defines are lifted from include/linux/irqchip/arm-gic.h 300cc96f0SAndrew Jones * 400cc96f0SAndrew Jones * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com> 500cc96f0SAndrew Jones * 600cc96f0SAndrew Jones * This work is licensed under the terms of the GNU LGPL, version 2. 700cc96f0SAndrew Jones */ 800cc96f0SAndrew Jones #ifndef _ASMARM_GIC_V2_H_ 900cc96f0SAndrew Jones #define _ASMARM_GIC_V2_H_ 1000cc96f0SAndrew Jones 1100cc96f0SAndrew Jones #ifndef _ASMARM_GIC_H_ 1200cc96f0SAndrew Jones #error Do not directly include <asm/gic-v2.h>. Include <asm/gic.h> 1300cc96f0SAndrew Jones #endif 1400cc96f0SAndrew Jones 1500cc96f0SAndrew Jones #define GICD_ENABLE 0x1 16ac4a67b6SAndrew Jones 1700cc96f0SAndrew Jones #define GICC_ENABLE 0x1 18ac4a67b6SAndrew Jones #define GICC_IAR_INT_ID_MASK 0x3ff 1900cc96f0SAndrew Jones 20*0cc3a351SSean Christopherson #ifndef __ASSEMBLER__ 21dfc1fec2SAndrew Jones #include <cpumask.h> 2200cc96f0SAndrew Jones 2300cc96f0SAndrew Jones struct gicv2_data { 2400cc96f0SAndrew Jones void *dist_base; 2500cc96f0SAndrew Jones void *cpu_base; 2600cc96f0SAndrew Jones unsigned int irq_nr; 2700cc96f0SAndrew Jones }; 2800cc96f0SAndrew Jones extern struct gicv2_data gicv2_data; 2900cc96f0SAndrew Jones 3000cc96f0SAndrew Jones #define gicv2_dist_base() (gicv2_data.dist_base) 3100cc96f0SAndrew Jones #define gicv2_cpu_base() (gicv2_data.cpu_base) 3200cc96f0SAndrew Jones 3300cc96f0SAndrew Jones extern int gicv2_init(void); 3400cc96f0SAndrew Jones extern void gicv2_enable_defaults(void); 352e2d471dSAndrew Jones extern u32 gicv2_read_iar(void); 362e2d471dSAndrew Jones extern u32 gicv2_iar_irqnr(u32 iar); 372e2d471dSAndrew Jones extern void gicv2_write_eoir(u32 irqstat); 382e2d471dSAndrew Jones extern void gicv2_ipi_send_single(int irq, int cpu); 392e2d471dSAndrew Jones extern void gicv2_ipi_send_mask(int irq, const cpumask_t *dest); 4000cc96f0SAndrew Jones 41*0cc3a351SSean Christopherson #endif /* !__ASSEMBLER__ */ 4200cc96f0SAndrew Jones #endif /* _ASMARM_GIC_V2_H_ */ 43