Skip to content

Commit 4dc5af1

Browse files
committed
Merge tag 'irqchip-fixes-6.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/urgent
Pull irqchip fixes from Marc Zyngier: - DT binding updates for Renesas r8a779f0 and rzg2l - Let GICv3 honor the "dma-non-coherent" attribute for systems that rely on SW guessing what the HW supports - Fix the RISC-V INTC probing by marking all devices as initialised at once - Properly translate interrupt numbers from DT on stm32-exti - Use irq_data_get_irq_chip_data() in the rzg2l driver instead of blindly dereferencing the irq_data structure - Add a MAINTAINERS entry for the various ARM GIC irqchip drivers - Remove myself as the top-level irqchip/irqdomain maintainer Link: https://lore.kernel.org/all/[email protected]
2 parents 9cd847e + b673fe1 commit 4dc5af1

File tree

10 files changed

+329
-123
lines changed

10 files changed

+329
-123
lines changed

Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,12 @@ properties:
106106
$ref: /schemas/types.yaml#/definitions/uint32
107107
maximum: 4096
108108

109+
dma-noncoherent:
110+
description:
111+
Present if the GIC redistributors permit programming shareability
112+
and cacheability attributes but are connected to a non-coherent
113+
downstream interconnect.
114+
109115
msi-controller:
110116
description:
111117
Only present if the Message Based Interrupt functionality is
@@ -193,6 +199,12 @@ patternProperties:
193199
compatible:
194200
const: arm,gic-v3-its
195201

202+
dma-noncoherent:
203+
description:
204+
Present if the GIC ITS permits programming shareability and
205+
cacheability attributes but is connected to a non-coherent
206+
downstream interconnect.
207+
196208
msi-controller: true
197209

198210
"#msi-cells":

Documentation/devicetree/bindings/interrupt-controller/renesas,irqc.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ properties:
3737
- renesas,intc-ex-r8a77990 # R-Car E3
3838
- renesas,intc-ex-r8a77995 # R-Car D3
3939
- renesas,intc-ex-r8a779a0 # R-Car V3U
40+
- renesas,intc-ex-r8a779f0 # R-Car S4-8
4041
- renesas,intc-ex-r8a779g0 # R-Car V4H
4142
- const: renesas,irqc
4243

Documentation/devicetree/bindings/interrupt-controller/renesas,rzg2l-irqc.yaml

Lines changed: 170 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,11 @@ description: |
1919
- NMI edge select (NMI is not treated as NMI exception and supports fall edge and
2020
stand-up edge detection interrupts)
2121
22-
allOf:
23-
- $ref: /schemas/interrupt-controller.yaml#
24-
2522
properties:
2623
compatible:
2724
items:
2825
- enum:
26+
- renesas,r9a07g043u-irqc # RZ/G2UL
2927
- renesas,r9a07g044-irqc # RZ/G2{L,LC}
3028
- renesas,r9a07g054-irqc # RZ/V2L
3129
- const: renesas,rzg2l-irqc
@@ -45,7 +43,96 @@ properties:
4543
maxItems: 1
4644

4745
interrupts:
48-
maxItems: 41
46+
minItems: 41
47+
items:
48+
- description: NMI interrupt
49+
- description: IRQ0 interrupt
50+
- description: IRQ1 interrupt
51+
- description: IRQ2 interrupt
52+
- description: IRQ3 interrupt
53+
- description: IRQ4 interrupt
54+
- description: IRQ5 interrupt
55+
- description: IRQ6 interrupt
56+
- description: IRQ7 interrupt
57+
- description: GPIO interrupt, TINT0
58+
- description: GPIO interrupt, TINT1
59+
- description: GPIO interrupt, TINT2
60+
- description: GPIO interrupt, TINT3
61+
- description: GPIO interrupt, TINT4
62+
- description: GPIO interrupt, TINT5
63+
- description: GPIO interrupt, TINT6
64+
- description: GPIO interrupt, TINT7
65+
- description: GPIO interrupt, TINT8
66+
- description: GPIO interrupt, TINT9
67+
- description: GPIO interrupt, TINT10
68+
- description: GPIO interrupt, TINT11
69+
- description: GPIO interrupt, TINT12
70+
- description: GPIO interrupt, TINT13
71+
- description: GPIO interrupt, TINT14
72+
- description: GPIO interrupt, TINT15
73+
- description: GPIO interrupt, TINT16
74+
- description: GPIO interrupt, TINT17
75+
- description: GPIO interrupt, TINT18
76+
- description: GPIO interrupt, TINT19
77+
- description: GPIO interrupt, TINT20
78+
- description: GPIO interrupt, TINT21
79+
- description: GPIO interrupt, TINT22
80+
- description: GPIO interrupt, TINT23
81+
- description: GPIO interrupt, TINT24
82+
- description: GPIO interrupt, TINT25
83+
- description: GPIO interrupt, TINT26
84+
- description: GPIO interrupt, TINT27
85+
- description: GPIO interrupt, TINT28
86+
- description: GPIO interrupt, TINT29
87+
- description: GPIO interrupt, TINT30
88+
- description: GPIO interrupt, TINT31
89+
- description: Bus error interrupt
90+
91+
interrupt-names:
92+
minItems: 41
93+
items:
94+
- const: nmi
95+
- const: irq0
96+
- const: irq1
97+
- const: irq2
98+
- const: irq3
99+
- const: irq4
100+
- const: irq5
101+
- const: irq6
102+
- const: irq7
103+
- const: tint0
104+
- const: tint1
105+
- const: tint2
106+
- const: tint3
107+
- const: tint4
108+
- const: tint5
109+
- const: tint6
110+
- const: tint7
111+
- const: tint8
112+
- const: tint9
113+
- const: tint10
114+
- const: tint11
115+
- const: tint12
116+
- const: tint13
117+
- const: tint14
118+
- const: tint15
119+
- const: tint16
120+
- const: tint17
121+
- const: tint18
122+
- const: tint19
123+
- const: tint20
124+
- const: tint21
125+
- const: tint22
126+
- const: tint23
127+
- const: tint24
128+
- const: tint25
129+
- const: tint26
130+
- const: tint27
131+
- const: tint28
132+
- const: tint29
133+
- const: tint30
134+
- const: tint31
135+
- const: bus-err
49136

50137
clocks:
51138
maxItems: 2
@@ -73,6 +160,23 @@ required:
73160
- power-domains
74161
- resets
75162

163+
allOf:
164+
- $ref: /schemas/interrupt-controller.yaml#
165+
166+
- if:
167+
properties:
168+
compatible:
169+
contains:
170+
const: renesas,r9a07g043u-irqc
171+
then:
172+
properties:
173+
interrupts:
174+
minItems: 42
175+
interrupt-names:
176+
minItems: 42
177+
required:
178+
- interrupt-names
179+
76180
unevaluatedProperties: false
77181

78182
examples:
@@ -81,55 +185,66 @@ examples:
81185
#include <dt-bindings/clock/r9a07g044-cpg.h>
82186
83187
irqc: interrupt-controller@110a0000 {
84-
compatible = "renesas,r9a07g044-irqc", "renesas,rzg2l-irqc";
85-
reg = <0x110a0000 0x10000>;
86-
#interrupt-cells = <2>;
87-
#address-cells = <0>;
88-
interrupt-controller;
89-
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
90-
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
91-
<GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
92-
<GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
93-
<GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
94-
<GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
95-
<GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
96-
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
97-
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
98-
<GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>,
99-
<GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>,
100-
<GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>,
101-
<GIC_SPI 447 IRQ_TYPE_LEVEL_HIGH>,
102-
<GIC_SPI 448 IRQ_TYPE_LEVEL_HIGH>,
103-
<GIC_SPI 449 IRQ_TYPE_LEVEL_HIGH>,
104-
<GIC_SPI 450 IRQ_TYPE_LEVEL_HIGH>,
105-
<GIC_SPI 451 IRQ_TYPE_LEVEL_HIGH>,
106-
<GIC_SPI 452 IRQ_TYPE_LEVEL_HIGH>,
107-
<GIC_SPI 453 IRQ_TYPE_LEVEL_HIGH>,
108-
<GIC_SPI 454 IRQ_TYPE_LEVEL_HIGH>,
109-
<GIC_SPI 455 IRQ_TYPE_LEVEL_HIGH>,
110-
<GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>,
111-
<GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>,
112-
<GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>,
113-
<GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>,
114-
<GIC_SPI 460 IRQ_TYPE_LEVEL_HIGH>,
115-
<GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>,
116-
<GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>,
117-
<GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>,
118-
<GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>,
119-
<GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>,
120-
<GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>,
121-
<GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>,
122-
<GIC_SPI 468 IRQ_TYPE_LEVEL_HIGH>,
123-
<GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>,
124-
<GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>,
125-
<GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>,
126-
<GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>,
127-
<GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>,
128-
<GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>,
129-
<GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>;
130-
clocks = <&cpg CPG_MOD R9A07G044_IA55_CLK>,
131-
<&cpg CPG_MOD R9A07G044_IA55_PCLK>;
132-
clock-names = "clk", "pclk";
133-
power-domains = <&cpg>;
134-
resets = <&cpg R9A07G044_IA55_RESETN>;
188+
compatible = "renesas,r9a07g044-irqc", "renesas,rzg2l-irqc";
189+
reg = <0x110a0000 0x10000>;
190+
#interrupt-cells = <2>;
191+
#address-cells = <0>;
192+
interrupt-controller;
193+
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
194+
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
195+
<GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
196+
<GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
197+
<GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
198+
<GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
199+
<GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
200+
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
201+
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
202+
<GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>,
203+
<GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>,
204+
<GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>,
205+
<GIC_SPI 447 IRQ_TYPE_LEVEL_HIGH>,
206+
<GIC_SPI 448 IRQ_TYPE_LEVEL_HIGH>,
207+
<GIC_SPI 449 IRQ_TYPE_LEVEL_HIGH>,
208+
<GIC_SPI 450 IRQ_TYPE_LEVEL_HIGH>,
209+
<GIC_SPI 451 IRQ_TYPE_LEVEL_HIGH>,
210+
<GIC_SPI 452 IRQ_TYPE_LEVEL_HIGH>,
211+
<GIC_SPI 453 IRQ_TYPE_LEVEL_HIGH>,
212+
<GIC_SPI 454 IRQ_TYPE_LEVEL_HIGH>,
213+
<GIC_SPI 455 IRQ_TYPE_LEVEL_HIGH>,
214+
<GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>,
215+
<GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>,
216+
<GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>,
217+
<GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>,
218+
<GIC_SPI 460 IRQ_TYPE_LEVEL_HIGH>,
219+
<GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>,
220+
<GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>,
221+
<GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>,
222+
<GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>,
223+
<GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>,
224+
<GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>,
225+
<GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>,
226+
<GIC_SPI 468 IRQ_TYPE_LEVEL_HIGH>,
227+
<GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>,
228+
<GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>,
229+
<GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>,
230+
<GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>,
231+
<GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>,
232+
<GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>,
233+
<GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>;
234+
interrupt-names = "nmi",
235+
"irq0", "irq1", "irq2", "irq3",
236+
"irq4", "irq5", "irq6", "irq7",
237+
"tint0", "tint1", "tint2", "tint3",
238+
"tint4", "tint5", "tint6", "tint7",
239+
"tint8", "tint9", "tint10", "tint11",
240+
"tint12", "tint13", "tint14", "tint15",
241+
"tint16", "tint17", "tint18", "tint19",
242+
"tint20", "tint21", "tint22", "tint23",
243+
"tint24", "tint25", "tint26", "tint27",
244+
"tint28", "tint29", "tint30", "tint31";
245+
clocks = <&cpg CPG_MOD R9A07G044_IA55_CLK>,
246+
<&cpg CPG_MOD R9A07G044_IA55_PCLK>;
247+
clock-names = "clk", "pclk";
248+
power-domains = <&cpg>;
249+
resets = <&cpg R9A07G044_IA55_RESETN>;
135250
};

MAINTAINERS

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1585,6 +1585,17 @@ F: arch/arm/include/asm/arch_timer.h
15851585
F: arch/arm64/include/asm/arch_timer.h
15861586
F: drivers/clocksource/arm_arch_timer.c
15871587

1588+
ARM GENERIC INTERRUPT CONTROLLER DRIVERS
1589+
M: Marc Zyngier <[email protected]>
1590+
L: [email protected] (moderated for non-subscribers)
1591+
S: Maintained
1592+
F: Documentation/devicetree/bindings/interrupt-controller/arm,gic*
1593+
F: arch/arm/include/asm/arch_gicv3.h
1594+
F: arch/arm64/include/asm/arch_gicv3.h
1595+
F: drivers/irqchip/irq-gic*.[ch]
1596+
F: include/linux/irqchip/arm-gic*.h
1597+
F: include/linux/irqchip/arm-vgic-info.h
1598+
15881599
ARM HDLCD DRM DRIVER
15891600
M: Liviu Dudau <[email protected]>
15901601
S: Supported
@@ -11064,7 +11075,7 @@ F: Documentation/devicetree/bindings/sound/irondevice,*
1106411075
F: sound/soc/codecs/sma*
1106511076

1106611077
IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
11067-
M: Marc Zyngier <[email protected]>
11078+
M: Thomas Gleixner <[email protected]>
1106811079
S: Maintained
1106911080
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
1107011081
F: Documentation/core-api/irq/irq-domain.rst
@@ -11083,7 +11094,6 @@ F: lib/group_cpus.c
1108311094

1108411095
IRQCHIP DRIVERS
1108511096
M: Thomas Gleixner <[email protected]>
11086-
M: Marc Zyngier <[email protected]>
1108711097
1108811098
S: Maintained
1108911099
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core

drivers/irqchip/irq-gic-common.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,8 @@ void gic_enable_quirks(u32 iidr, const struct gic_quirk *quirks,
2929
void gic_enable_of_quirks(const struct device_node *np,
3030
const struct gic_quirk *quirks, void *data);
3131

32+
#define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING (1 << 0)
33+
#define RDIST_FLAGS_RD_TABLES_PREALLOCATED (1 << 1)
34+
#define RDIST_FLAGS_FORCE_NON_SHAREABLE (1 << 2)
35+
3236
#endif /* _IRQ_GIC_COMMON_H */

0 commit comments

Comments
 (0)