aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/irqchip
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/irqchip')
-rw-r--r--include/linux/irqchip/arm-gic-v3.h13
-rw-r--r--include/linux/irqchip/arm-gic.h11
2 files changed, 23 insertions, 1 deletions
diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h
index cbb872c1b607..8bdbb5f29494 100644
--- a/include/linux/irqchip/arm-gic-v3.h
+++ b/include/linux/irqchip/arm-gic-v3.h
@@ -61,6 +61,16 @@
61#define GICD_CTLR_ENABLE_G1A (1U << 1) 61#define GICD_CTLR_ENABLE_G1A (1U << 1)
62#define GICD_CTLR_ENABLE_G1 (1U << 0) 62#define GICD_CTLR_ENABLE_G1 (1U << 0)
63 63
64#define GICD_IIDR_IMPLEMENTER_SHIFT 0
65#define GICD_IIDR_IMPLEMENTER_MASK (0xfff << GICD_IIDR_IMPLEMENTER_SHIFT)
66#define GICD_IIDR_REVISION_SHIFT 12
67#define GICD_IIDR_REVISION_MASK (0xf << GICD_IIDR_REVISION_SHIFT)
68#define GICD_IIDR_VARIANT_SHIFT 16
69#define GICD_IIDR_VARIANT_MASK (0xf << GICD_IIDR_VARIANT_SHIFT)
70#define GICD_IIDR_PRODUCT_ID_SHIFT 24
71#define GICD_IIDR_PRODUCT_ID_MASK (0xff << GICD_IIDR_PRODUCT_ID_SHIFT)
72
73
64/* 74/*
65 * In systems with a single security state (what we emulate in KVM) 75 * In systems with a single security state (what we emulate in KVM)
66 * the meaning of the interrupt group enable bits is slightly different 76 * the meaning of the interrupt group enable bits is slightly different
@@ -73,6 +83,7 @@
73#define GICD_TYPER_MBIS (1U << 16) 83#define GICD_TYPER_MBIS (1U << 16)
74 84
75#define GICD_TYPER_ID_BITS(typer) ((((typer) >> 19) & 0x1f) + 1) 85#define GICD_TYPER_ID_BITS(typer) ((((typer) >> 19) & 0x1f) + 1)
86#define GICD_TYPER_NUM_LPIS(typer) ((((typer) >> 11) & 0x1f) + 1)
76#define GICD_TYPER_IRQS(typer) ((((typer) & 0x1f) + 1) * 32) 87#define GICD_TYPER_IRQS(typer) ((((typer) & 0x1f) + 1) * 32)
77 88
78#define GICD_IROUTER_SPI_MODE_ONE (0U << 31) 89#define GICD_IROUTER_SPI_MODE_ONE (0U << 31)
@@ -576,8 +587,8 @@ struct rdists {
576 phys_addr_t phys_base; 587 phys_addr_t phys_base;
577 } __percpu *rdist; 588 } __percpu *rdist;
578 struct page *prop_page; 589 struct page *prop_page;
579 int id_bits;
580 u64 flags; 590 u64 flags;
591 u32 gicd_typer;
581 bool has_vlpis; 592 bool has_vlpis;
582 bool has_direct_lpi; 593 bool has_direct_lpi;
583}; 594};
diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h
index 68d8b1f73682..6c4aaf04046c 100644
--- a/include/linux/irqchip/arm-gic.h
+++ b/include/linux/irqchip/arm-gic.h
@@ -71,6 +71,16 @@
71 (GICD_INT_DEF_PRI << 8) |\ 71 (GICD_INT_DEF_PRI << 8) |\
72 GICD_INT_DEF_PRI) 72 GICD_INT_DEF_PRI)
73 73
74#define GICD_IIDR_IMPLEMENTER_SHIFT 0
75#define GICD_IIDR_IMPLEMENTER_MASK (0xfff << GICD_IIDR_IMPLEMENTER_SHIFT)
76#define GICD_IIDR_REVISION_SHIFT 12
77#define GICD_IIDR_REVISION_MASK (0xf << GICD_IIDR_REVISION_SHIFT)
78#define GICD_IIDR_VARIANT_SHIFT 16
79#define GICD_IIDR_VARIANT_MASK (0xf << GICD_IIDR_VARIANT_SHIFT)
80#define GICD_IIDR_PRODUCT_ID_SHIFT 24
81#define GICD_IIDR_PRODUCT_ID_MASK (0xff << GICD_IIDR_PRODUCT_ID_SHIFT)
82
83
74#define GICH_HCR 0x0 84#define GICH_HCR 0x0
75#define GICH_VTR 0x4 85#define GICH_VTR 0x4
76#define GICH_VMCR 0x8 86#define GICH_VMCR 0x8
@@ -94,6 +104,7 @@
94#define GICH_LR_PENDING_BIT (1 << 28) 104#define GICH_LR_PENDING_BIT (1 << 28)
95#define GICH_LR_ACTIVE_BIT (1 << 29) 105#define GICH_LR_ACTIVE_BIT (1 << 29)
96#define GICH_LR_EOI (1 << 19) 106#define GICH_LR_EOI (1 << 19)
107#define GICH_LR_GROUP1 (1 << 30)
97#define GICH_LR_HW (1 << 31) 108#define GICH_LR_HW (1 << 31)
98 109
99#define GICH_VMCR_ENABLE_GRP0_SHIFT 0 110#define GICH_VMCR_ENABLE_GRP0_SHIFT 0