1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * include/linux/irqchip/arm-gic-common.h 4 * 5 * Copyright (C) 2016 ARM Limited, All Rights Reserved. 6 */ 7 #ifndef __LINUX_IRQCHIP_ARM_GIC_COMMON_H 8 #define __LINUX_IRQCHIP_ARM_GIC_COMMON_H 9 10 #include <linux/types.h> 11 #include <linux/ioport.h> 12 13 #define GICD_INT_DEF_PRI 0xa0 14 #define GICD_INT_DEF_PRI_X4 ((GICD_INT_DEF_PRI << 24) |\ 15 (GICD_INT_DEF_PRI << 16) |\ 16 (GICD_INT_DEF_PRI << 8) |\ 17 GICD_INT_DEF_PRI) 18 19 enum gic_type { 20 GIC_V2, 21 GIC_V3, 22 }; 23 24 struct gic_kvm_info { 25 /* GIC type */ 26 enum gic_type type; 27 /* Virtual CPU interface */ 28 struct resource vcpu; 29 /* Interrupt number */ 30 unsigned int maint_irq; 31 /* Virtual control interface */ 32 struct resource vctrl; 33 /* vlpi support */ 34 bool has_v4; 35 /* rvpeid support */ 36 bool has_v4_1; 37 }; 38 39 const struct gic_kvm_info *gic_get_kvm_info(void); 40 41 struct irq_domain; 42 struct fwnode_handle; 43 int gicv2m_init(struct fwnode_handle *parent_handle, 44 struct irq_domain *parent); 45 46 #endif /* __LINUX_IRQCHIP_ARM_GIC_COMMON_H */ 47