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