Skip to content

Commit f0fae8a

Browse files
committed
Merge tag 'irqchip-5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/core
Pull irqchip updates from Marc Zyngier: - Add support for the STM32MP13 variant - Move parent device away from struct irq_chip - Remove all instances of non-const strings assigned to struct irq_chip::name, enabling a nice cleanup for VIC and GIC) - Simplify the Qualcomm PDC driver - A bunch of SiFive PLIC cleanups - Add support for a new variant of the Meson GPIO block - Add support for the irqchip side of the Apple M1 PMU - Add support for the Apple M1 Pro/Max AICv2 irqchip - Add support for the Qualcomm MPM wakeup gadget - Move the Xilinx driver over to the generic irqdomain handling - Tiny speedup for IPIs on GICv3 systems - The usual odd cleanups Link: https://lore.kernel.org/all/20220313105142.704579-1-maz@kernel.org
2 parents ff8dcfe + de26a74 commit f0fae8a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1618
-444
lines changed

Documentation/devicetree/bindings/arm/pmu.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ properties:
2020
items:
2121
- enum:
2222
- apm,potenza-pmu
23+
- apple,firestorm-pmu
24+
- apple,icestorm-pmu
2325
- arm,armv8-pmuv3 # Only for s/w models
2426
- arm,arm1136-pmu
2527
- arm,arm1176-pmu

Documentation/devicetree/bindings/interrupt-controller/amlogic,meson-gpio-intc.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Required properties:
1818
"amlogic,meson-g12a-gpio-intc" for G12A SoCs (S905D2, S905X2, S905Y2)
1919
"amlogic,meson-sm1-gpio-intc" for SM1 SoCs (S905D3, S905X3, S905Y3)
2020
"amlogic,meson-a1-gpio-intc" for A1 SoCs (A113L)
21+
"amlogic,meson-s4-gpio-intc" for S4 SoCs (S802X2, S905Y4, S805X2G, S905W2)
2122
- reg : Specifies base physical address and size of the registers.
2223
- interrupt-controller : Identifies the node as an interrupt controller.
2324
- #interrupt-cells : Specifies the number of cells needed to encode an

Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ properties:
5656
- 1: virtual HV timer
5757
- 2: physical guest timer
5858
- 3: virtual guest timer
59+
- 4: 'efficient' CPU PMU
60+
- 5: 'performance' CPU PMU
5961
6062
The 3rd cell contains the interrupt flags. This is normally
6163
IRQ_TYPE_LEVEL_HIGH (4).
@@ -68,6 +70,35 @@ properties:
6870
power-domains:
6971
maxItems: 1
7072

73+
affinities:
74+
type: object
75+
additionalProperties: false
76+
description:
77+
FIQ affinity can be expressed as a single "affinities" node,
78+
containing a set of sub-nodes, one per FIQ with a non-default
79+
affinity.
80+
patternProperties:
81+
"^.+-affinity$":
82+
type: object
83+
additionalProperties: false
84+
properties:
85+
apple,fiq-index:
86+
description:
87+
The interrupt number specified as a FIQ, and for which
88+
the affinity is not the default.
89+
$ref: /schemas/types.yaml#/definitions/uint32
90+
maximum: 5
91+
92+
cpus:
93+
$ref: /schemas/types.yaml#/definitions/phandle-array
94+
description:
95+
Should be a list of phandles to CPU nodes (as described in
96+
Documentation/devicetree/bindings/arm/cpus.yaml).
97+
98+
required:
99+
- fiq-index
100+
- cpus
101+
71102
required:
72103
- compatible
73104
- '#interrupt-cells'
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/interrupt-controller/apple,aic2.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Apple Interrupt Controller 2
8+
9+
maintainers:
10+
- Hector Martin <marcan@marcan.st>
11+
12+
description: |
13+
The Apple Interrupt Controller 2 is a simple interrupt controller present on
14+
Apple ARM SoC platforms starting with t600x (M1 Pro and Max).
15+
16+
It provides the following features:
17+
18+
- Level-triggered hardware IRQs wired to SoC blocks
19+
- Single mask bit per IRQ
20+
- Automatic masking on event delivery (auto-ack)
21+
- Software triggering (ORed with hw line)
22+
- Automatic prioritization (single event/ack register per CPU, lower IRQs =
23+
higher priority)
24+
- Automatic masking on ack
25+
- Support for multiple dies
26+
27+
This device also represents the FIQ interrupt sources on platforms using AIC,
28+
which do not go through a discrete interrupt controller. It also handles
29+
FIQ-based Fast IPIs.
30+
31+
properties:
32+
compatible:
33+
items:
34+
- const: apple,t6000-aic
35+
- const: apple,aic2
36+
37+
interrupt-controller: true
38+
39+
'#interrupt-cells':
40+
const: 4
41+
description: |
42+
The 1st cell contains the interrupt type:
43+
- 0: Hardware IRQ
44+
- 1: FIQ
45+
46+
The 2nd cell contains the die ID.
47+
48+
The next cell contains the interrupt number.
49+
- HW IRQs: interrupt number
50+
- FIQs:
51+
- 0: physical HV timer
52+
- 1: virtual HV timer
53+
- 2: physical guest timer
54+
- 3: virtual guest timer
55+
56+
The last cell contains the interrupt flags. This is normally
57+
IRQ_TYPE_LEVEL_HIGH (4).
58+
59+
reg:
60+
items:
61+
- description: Address and size of the main AIC2 registers.
62+
- description: Address and size of the AIC2 Event register.
63+
64+
reg-names:
65+
items:
66+
- const: core
67+
- const: event
68+
69+
power-domains:
70+
maxItems: 1
71+
72+
required:
73+
- compatible
74+
- '#interrupt-cells'
75+
- interrupt-controller
76+
- reg
77+
- reg-names
78+
79+
additionalProperties: false
80+
81+
allOf:
82+
- $ref: /schemas/interrupt-controller.yaml#
83+
84+
examples:
85+
- |
86+
soc {
87+
#address-cells = <2>;
88+
#size-cells = <2>;
89+
90+
aic: interrupt-controller@28e100000 {
91+
compatible = "apple,t6000-aic", "apple,aic2";
92+
#interrupt-cells = <4>;
93+
interrupt-controller;
94+
reg = <0x2 0x8e100000 0x0 0xc000>,
95+
<0x2 0x8e10c000 0x0 0x4>;
96+
reg-names = "core", "event";
97+
};
98+
};
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/interrupt-controller/qcom,mpm.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Qualcom MPM Interrupt Controller
8+
9+
maintainers:
10+
- Shawn Guo <shawn.guo@linaro.org>
11+
12+
description:
13+
Qualcomm Technologies Inc. SoCs based on the RPM architecture have a
14+
MSM Power Manager (MPM) that is in always-on domain. In addition to managing
15+
resources during sleep, the hardware also has an interrupt controller that
16+
monitors the interrupts when the system is asleep, wakes up the APSS when
17+
one of these interrupts occur and replays it to GIC interrupt controller
18+
after GIC becomes operational.
19+
20+
allOf:
21+
- $ref: /schemas/interrupt-controller.yaml#
22+
23+
properties:
24+
compatible:
25+
items:
26+
- const: qcom,mpm
27+
28+
reg:
29+
maxItems: 1
30+
description:
31+
Specifies the base address and size of vMPM registers in RPM MSG RAM.
32+
33+
interrupts:
34+
maxItems: 1
35+
description:
36+
Specify the IRQ used by RPM to wakeup APSS.
37+
38+
mboxes:
39+
maxItems: 1
40+
description:
41+
Specify the mailbox used to notify RPM for writing vMPM registers.
42+
43+
interrupt-controller: true
44+
45+
'#interrupt-cells':
46+
const: 2
47+
description:
48+
The first cell is the MPM pin number for the interrupt, and the second
49+
is the trigger type.
50+
51+
qcom,mpm-pin-count:
52+
description:
53+
Specify the total MPM pin count that a SoC supports.
54+
$ref: /schemas/types.yaml#/definitions/uint32
55+
56+
qcom,mpm-pin-map:
57+
description:
58+
A set of MPM pin numbers and the corresponding GIC SPIs.
59+
$ref: /schemas/types.yaml#/definitions/uint32-matrix
60+
items:
61+
items:
62+
- description: MPM pin number
63+
- description: GIC SPI number for the MPM pin
64+
65+
required:
66+
- compatible
67+
- reg
68+
- interrupts
69+
- mboxes
70+
- interrupt-controller
71+
- '#interrupt-cells'
72+
- qcom,mpm-pin-count
73+
- qcom,mpm-pin-map
74+
75+
additionalProperties: false
76+
77+
examples:
78+
- |
79+
#include <dt-bindings/interrupt-controller/arm-gic.h>
80+
mpm: interrupt-controller@45f01b8 {
81+
compatible = "qcom,mpm";
82+
interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
83+
reg = <0x45f01b8 0x1000>;
84+
mboxes = <&apcs_glb 1>;
85+
interrupt-controller;
86+
#interrupt-cells = <2>;
87+
interrupt-parent = <&intc>;
88+
qcom,mpm-pin-count = <96>;
89+
qcom,mpm-pin-map = <2 275>,
90+
<5 296>,
91+
<12 422>,
92+
<24 79>,
93+
<86 183>,
94+
<90 260>,
95+
<91 260>;
96+
};

Documentation/devicetree/bindings/interrupt-controller/st,stm32-exti.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ properties:
2020
- items:
2121
- enum:
2222
- st,stm32mp1-exti
23+
- st,stm32mp13-exti
2324
- const: syscon
2425

2526
"#interrupt-cells":

MAINTAINERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1769,7 +1769,7 @@ T: git https://github.com/AsahiLinux/linux.git
17691769
F: Documentation/devicetree/bindings/arm/apple.yaml
17701770
F: Documentation/devicetree/bindings/arm/apple/*
17711771
F: Documentation/devicetree/bindings/i2c/apple,i2c.yaml
1772-
F: Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml
1772+
F: Documentation/devicetree/bindings/interrupt-controller/apple,*
17731773
F: Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml
17741774
F: Documentation/devicetree/bindings/pci/apple,pcie.yaml
17751775
F: Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml

arch/arm64/boot/dts/apple/t8103.dtsi

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,18 @@
9797
<AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
9898
};
9999

100+
pmu-e {
101+
compatible = "apple,icestorm-pmu";
102+
interrupt-parent = <&aic>;
103+
interrupts = <AIC_FIQ AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>;
104+
};
105+
106+
pmu-p {
107+
compatible = "apple,firestorm-pmu";
108+
interrupt-parent = <&aic>;
109+
interrupts = <AIC_FIQ AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>;
110+
};
111+
100112
clkref: clock-ref {
101113
compatible = "fixed-clock";
102114
#clock-cells = <0>;
@@ -213,6 +225,18 @@
213225
interrupt-controller;
214226
reg = <0x2 0x3b100000 0x0 0x8000>;
215227
power-domains = <&ps_aic>;
228+
229+
affinities {
230+
e-core-pmu-affinity {
231+
apple,fiq-index = <AIC_CPU_PMU_E>;
232+
cpus = <&cpu0 &cpu1 &cpu2 &cpu3>;
233+
};
234+
235+
p-core-pmu-affinity {
236+
apple,fiq-index = <AIC_CPU_PMU_P>;
237+
cpus = <&cpu4 &cpu5 &cpu6 &cpu7>;
238+
};
239+
};
216240
};
217241

218242
pmgr: power-management@23b700000 {

arch/arm64/include/asm/apple_m1_pmu.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
3+
#ifndef __ASM_APPLE_M1_PMU_h
4+
#define __ASM_APPLE_M1_PMU_h
5+
6+
#include <linux/bits.h>
7+
#include <asm/sysreg.h>
8+
9+
/* Core PMC control register */
10+
#define SYS_IMP_APL_PMCR0_EL1 sys_reg(3, 1, 15, 0, 0)
11+
#define PMCR0_IMODE GENMASK(10, 8)
12+
#define PMCR0_IMODE_OFF 0
13+
#define PMCR0_IMODE_PMI 1
14+
#define PMCR0_IMODE_AIC 2
15+
#define PMCR0_IMODE_HALT 3
16+
#define PMCR0_IMODE_FIQ 4
17+
#define PMCR0_IACT BIT(11)
18+
19+
#endif /* __ASM_APPLE_M1_PMU_h */

arch/microblaze/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ config MICROBLAZE
4545
select SET_FS
4646
select ZONE_DMA
4747
select TRACE_IRQFLAGS_SUPPORT
48+
select GENERIC_IRQ_MULTI_HANDLER
49+
select HANDLE_DOMAIN_IRQ
4850

4951
# Endianness selection
5052
choice

0 commit comments

Comments
 (0)