Skip to content

Commit 87813e1

Browse files
committed
Merge tag 'irq-urgent-2023-10-10-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fixes from Thomas Gleixner: "A set of updates for interrupt chip drivers: - Fix the fail of the Qualcomm PDC driver on v3.2 hardware which is caused by a control bit being moved to a different location - Update the SM8150 device tree PDC resource so the version register can be read - Make the Renesas RZG2L driver correct for interrupts which are outside of the LSB in the TSSR register by using the proper macro for calculating the mask - Document the Renesas RZ2GL device tree binding correctly and update them for a few devices which faul to boot otherwise - Use the proper accessor in the RZ2GL driver instead of blindly dereferencing an unchecked pointer - Make GICv3 handle the dma-non-coherent attribute correctly - Ensure that all interrupt controller nodes on RISCV are marked as initialized correctly Maintainer changes: - Add a new entry for GIC interrupt controllers and assign Marc Zyngier as the maintainer - Remove Marc Zyngier from the core and driver maintainer entries as he is burried in work and short of time to handle that. Thanks to Marc for all the great work he has done in the past couple of years! Also note that commit 5873d38 ("irqchip/qcom-pdc: Add support for v3.2 HW") has a incorrect SOB chain. The real author is Neil. His patch was posted by Dmitry once and Neil picked it up from the list and reposted it with the bogus SOB chain. Not a big deal, but worth to mention. I wanted to fix that up, but then got distracted and Marc piled more changes on top. So I decided to leave it as is instead of rebasing world" * tag 'irq-urgent-2023-10-10-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: MAINTAINERS: Remove myself from the general IRQ subsystem maintenance MAINTAINERS: Add myself as the ARM GIC maintainer irqchip/renesas-rzg2l: Convert to irq_data_get_irq_chip_data() irqchip/stm32-exti: add missing DT IRQ flag translation irqchip/riscv-intc: Mark all INTC nodes as initialized irqchip/gic-v3: Enable non-coherent redistributors/ITSes DT probing irqchip/gic-v3-its: Split allocation from initialisation of its_node dt-bindings: interrupt-controller: arm,gic-v3: Add dma-noncoherent property dt-bindings: interrupt-controller: renesas,irqc: Add r8a779f0 support dt-bindings: interrupt-controller: renesas,rzg2l-irqc: Document RZ/G2UL SoC irqchip: renesas-rzg2l: Fix logic to clear TINT interrupt source dt-bindings: interrupt-controller: renesas,rzg2l-irqc: Update description for '#interrupt-cells' property arm64: dts: qcom: sm8150: extend the size of the PDC resource irqchip/qcom-pdc: Add support for v3.2 HW
2 parents b711538 + 4dc5af1 commit 87813e1

File tree

12 files changed

+385
-145
lines changed

12 files changed

+385
-145
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: 173 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,19 @@ 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
3230

3331
'#interrupt-cells':
34-
description: The first cell should contain external interrupt number (IRQ0-7) and the
35-
second cell is used to specify the flag.
32+
description: The first cell should contain a macro RZG2L_{NMI,IRQX} included in the
33+
include/dt-bindings/interrupt-controller/irqc-rzg2l.h and the second
34+
cell is used to specify the flag.
3635
const: 2
3736

3837
'#address-cells':
@@ -44,7 +43,96 @@ properties:
4443
maxItems: 1
4544

4645
interrupts:
47-
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
48136

49137
clocks:
50138
maxItems: 2
@@ -72,6 +160,23 @@ required:
72160
- power-domains
73161
- resets
74162

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+
75180
unevaluatedProperties: false
76181

77182
examples:
@@ -80,55 +185,66 @@ examples:
80185
#include <dt-bindings/clock/r9a07g044-cpg.h>
81186
82187
irqc: interrupt-controller@110a0000 {
83-
compatible = "renesas,r9a07g044-irqc", "renesas,rzg2l-irqc";
84-
reg = <0x110a0000 0x10000>;
85-
#interrupt-cells = <2>;
86-
#address-cells = <0>;
87-
interrupt-controller;
88-
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
89-
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
90-
<GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
91-
<GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
92-
<GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
93-
<GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
94-
<GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
95-
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
96-
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
97-
<GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>,
98-
<GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>,
99-
<GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>,
100-
<GIC_SPI 447 IRQ_TYPE_LEVEL_HIGH>,
101-
<GIC_SPI 448 IRQ_TYPE_LEVEL_HIGH>,
102-
<GIC_SPI 449 IRQ_TYPE_LEVEL_HIGH>,
103-
<GIC_SPI 450 IRQ_TYPE_LEVEL_HIGH>,
104-
<GIC_SPI 451 IRQ_TYPE_LEVEL_HIGH>,
105-
<GIC_SPI 452 IRQ_TYPE_LEVEL_HIGH>,
106-
<GIC_SPI 453 IRQ_TYPE_LEVEL_HIGH>,
107-
<GIC_SPI 454 IRQ_TYPE_LEVEL_HIGH>,
108-
<GIC_SPI 455 IRQ_TYPE_LEVEL_HIGH>,
109-
<GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>,
110-
<GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>,
111-
<GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>,
112-
<GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>,
113-
<GIC_SPI 460 IRQ_TYPE_LEVEL_HIGH>,
114-
<GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>,
115-
<GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>,
116-
<GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>,
117-
<GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>,
118-
<GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>,
119-
<GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>,
120-
<GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>,
121-
<GIC_SPI 468 IRQ_TYPE_LEVEL_HIGH>,
122-
<GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>,
123-
<GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>,
124-
<GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>,
125-
<GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>,
126-
<GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>,
127-
<GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>,
128-
<GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>;
129-
clocks = <&cpg CPG_MOD R9A07G044_IA55_CLK>,
130-
<&cpg CPG_MOD R9A07G044_IA55_PCLK>;
131-
clock-names = "clk", "pclk";
132-
power-domains = <&cpg>;
133-
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>;
134250
};

MAINTAINERS

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

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

1106211073
IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
11063-
M: Marc Zyngier <[email protected]>
11074+
M: Thomas Gleixner <[email protected]>
1106411075
S: Maintained
1106511076
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
1106611077
F: Documentation/core-api/irq/irq-domain.rst
@@ -11079,7 +11090,6 @@ F: lib/group_cpus.c
1107911090

1108011091
IRQCHIP DRIVERS
1108111092
M: Thomas Gleixner <[email protected]>
11082-
M: Marc Zyngier <[email protected]>
1108311093
1108411094
S: Maintained
1108511095
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core

arch/arm64/boot/dts/qcom/sm8150.dtsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3958,7 +3958,7 @@
39583958

39593959
pdc: interrupt-controller@b220000 {
39603960
compatible = "qcom,sm8150-pdc", "qcom,pdc";
3961-
reg = <0 0x0b220000 0 0x400>;
3961+
reg = <0 0x0b220000 0 0x30000>;
39623962
qcom,pdc-ranges = <0 480 94>, <94 609 31>,
39633963
<125 63 1>;
39643964
#interrupt-cells = <2>;

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)