Skip to content

Commit 15b87be

Browse files
committed
Merge tag 'irq-drivers-2025-11-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq driver updates from Thomas Gleixner: "Boring updates for interrupt drivers: - Support for a couple of new ARM64 and RISCV SoC variants and their magic interrupt controllers which either can reuse existing code or require quirks due to a botched hardware implementation - More section mismatch fixes - The usual cleanups and fixes all over the place" * tag 'irq-drivers-2025-11-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (32 commits) irqchip/meson-gpio: Add support for Amlogic S6 S7 and S7D SoCs dt-bindings: interrupt-controller: Add support for Amlogic S6 S7 and S7D SoCs dt-bindings: interrupt-controller: aspeed,ast2700: Correct #interrupt-cells and interrupts count irqchip/aclint-sswi: Add Nuclei UX900 support dt-bindings: interrupt-controller: Add Anlogic DR1V90 ACLINT SSWI dt-bindings: interrupt-controller: Add Anlogic DR1V90 ACLINT MSWI dt-bindings: interrupt-controller: Add Anlogic DR1V90 PLIC irqchip/irq-bcm7038-l1: Remove unused reg_mask_status() irqchip/sifive-plic: Fix call to __plic_toggle() in M-Mode code path irqchip/sifive-plic: Add support for UltraRISC DP1000 PLIC irqchip/sifive-plic: Cache the interrupt enable state dt-bindings: interrupt-controller: Add UltraRISC DP1000 PLIC dt-bindings: vendor-prefixes: Add UltraRISC irqchip/qcom-irq-combiner: Rename driver structure irqchip/riscv-imsic: Inline imsic_vector_from_local_id() irqchip/riscv-imsic: Embed the vector array in lpriv irqchip/riscv-imsic: Remove redundant irq_data lookups irqchip/ts4800: Drop unused module alias irqchip/mvebu-pic: Drop unused module alias irqchip/meson-gpio: Drop unused module alias ...
2 parents 6863c83 + fc584d8 commit 15b87be

30 files changed

Lines changed: 264 additions & 223 deletions

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ properties:
3939
- amlogic,a4-gpio-ao-intc
4040
- amlogic,a5-gpio-intc
4141
- amlogic,c3-gpio-intc
42+
- amlogic,s6-gpio-intc
43+
- amlogic,s7-gpio-intc
44+
- amlogic,s7d-gpio-intc
4245
- amlogic,t7-gpio-intc
4346
- const: amlogic,meson-gpio-intc
4447

Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2700-intc.yaml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@ properties:
2525
interrupt-controller: true
2626

2727
'#interrupt-cells':
28-
const: 2
28+
const: 1
2929
description:
3030
The first cell is the IRQ number, the second cell is the trigger
3131
type as defined in interrupt.txt in this directory.
3232

3333
interrupts:
34-
maxItems: 6
34+
minItems: 1
35+
maxItems: 10
3536
description: |
3637
Depend to which INTC0 or INTC1 used.
3738
INTC0 and INTC1 are two kinds of interrupt controller with enable and raw
@@ -74,13 +75,17 @@ examples:
7475
interrupt-controller@12101b00 {
7576
compatible = "aspeed,ast2700-intc-ic";
7677
reg = <0 0x12101b00 0 0x10>;
77-
#interrupt-cells = <2>;
78+
#interrupt-cells = <1>;
7879
interrupt-controller;
7980
interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>,
8081
<GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>,
8182
<GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>,
8283
<GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>,
8384
<GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
84-
<GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
85+
<GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
86+
<GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
87+
<GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>,
88+
<GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>,
89+
<GIC_SPI 201 IRQ_TYPE_LEVEL_HIGH>;
8590
};
8691
};

Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ properties:
5858
- const: andestech,nceplic100
5959
- items:
6060
- enum:
61+
- anlogic,dr1v90-plic
6162
- canaan,k210-plic
6263
- eswin,eic7700-plic
6364
- sifive,fu540-c000-plic
@@ -75,6 +76,9 @@ properties:
7576
- sophgo,sg2044-plic
7677
- thead,th1520-plic
7778
- const: thead,c900-plic
79+
- items:
80+
- const: ultrarisc,dp1000-plic
81+
- const: ultrarisc,cp100-plic
7882
- items:
7983
- const: sifive,plic-1.0.0
8084
- const: riscv,plic0

Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-mswi.yaml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,23 @@
44
$id: http://devicetree.org/schemas/interrupt-controller/thead,c900-aclint-mswi.yaml#
55
$schema: http://devicetree.org/meta-schemas/core.yaml#
66

7-
title: Sophgo sg2042 CLINT Machine-level Software Interrupt Device
7+
title: ACLINT Machine-level Software Interrupt Device
88

99
maintainers:
1010
- Inochi Amaoto <inochiama@outlook.com>
1111

1212
properties:
1313
compatible:
14-
items:
15-
- enum:
16-
- sophgo,sg2042-aclint-mswi
17-
- sophgo,sg2044-aclint-mswi
18-
- const: thead,c900-aclint-mswi
14+
oneOf:
15+
- items:
16+
- enum:
17+
- sophgo,sg2042-aclint-mswi
18+
- sophgo,sg2044-aclint-mswi
19+
- const: thead,c900-aclint-mswi
20+
- items:
21+
- enum:
22+
- anlogic,dr1v90-aclint-mswi
23+
- const: nuclei,ux900-aclint-mswi
1924

2025
reg:
2126
maxItems: 1

Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-sswi.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ properties:
3030
- const: thead,c900-aclint-sswi
3131
- items:
3232
- const: mips,p8700-aclint-sswi
33+
- items:
34+
- enum:
35+
- anlogic,dr1v90-aclint-sswi
36+
- const: nuclei,ux900-aclint-sswi
3337

3438
reg:
3539
maxItems: 1

Documentation/devicetree/bindings/vendor-prefixes.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1705,6 +1705,8 @@ patternProperties:
17051705
description: Universal Scientific Industrial Co., Ltd.
17061706
"^usr,.*":
17071707
description: U.S. Robotics Corporation
1708+
"^ultrarisc,.*":
1709+
description: UltraRISC Technology Co., Ltd.
17081710
"^ultratronik,.*":
17091711
description: Ultratronik GmbH
17101712
"^utoo,.*":

drivers/irqchip/Kconfig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,22 +150,22 @@ config BCM6345_L1_IRQ
150150

151151
config BCM7038_L1_IRQ
152152
tristate "Broadcom STB 7038-style L1/L2 interrupt controller driver"
153-
depends on ARCH_BRCMSTB || BMIPS_GENERIC
153+
depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
154154
default ARCH_BRCMSTB || BMIPS_GENERIC
155155
select GENERIC_IRQ_CHIP
156156
select IRQ_DOMAIN
157157
select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
158158

159159
config BCM7120_L2_IRQ
160160
tristate "Broadcom STB 7120-style L2 interrupt controller driver"
161-
depends on ARCH_BRCMSTB || BMIPS_GENERIC
161+
depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
162162
default ARCH_BRCMSTB || BMIPS_GENERIC
163163
select GENERIC_IRQ_CHIP
164164
select IRQ_DOMAIN
165165

166166
config BRCMSTB_L2_IRQ
167167
tristate "Broadcom STB generic L2 interrupt controller driver"
168-
depends on ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC
168+
depends on ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
169169
default ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC
170170
select GENERIC_IRQ_CHIP
171171
select IRQ_DOMAIN

drivers/irqchip/irq-aclint-sswi.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ static int __init generic_aclint_sswi_early_probe(struct device_node *node,
175175
{
176176
return generic_aclint_sswi_probe(&node->fwnode);
177177
}
178-
IRQCHIP_DECLARE(generic_aclint_sswi, "mips,p8700-aclint-sswi", generic_aclint_sswi_early_probe);
178+
IRQCHIP_DECLARE(mips_p8700_sswi, "mips,p8700-aclint-sswi", generic_aclint_sswi_early_probe);
179+
IRQCHIP_DECLARE(nuclei_ux900_sswi, "nuclei,ux900-aclint-sswi", generic_aclint_sswi_early_probe);
179180

180181
/* THEAD variant */
181182
#define THEAD_C9XX_CSR_SXSTATUS 0x5c0

drivers/irqchip/irq-bcm2712-mip.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -232,17 +232,12 @@ static int mip_parse_dt(struct mip_priv *mip, struct device_node *np)
232232
return ret;
233233
}
234234

235-
static int __init mip_of_msi_init(struct device_node *node, struct device_node *parent)
235+
static int mip_msi_probe(struct platform_device *pdev, struct device_node *parent)
236236
{
237-
struct platform_device *pdev;
237+
struct device_node *node = pdev->dev.of_node;
238238
struct mip_priv *mip;
239239
int ret;
240240

241-
pdev = of_find_device_by_node(node);
242-
of_node_put(node);
243-
if (!pdev)
244-
return -EPROBE_DEFER;
245-
246241
mip = kzalloc(sizeof(*mip), GFP_KERNEL);
247242
if (!mip)
248243
return -ENOMEM;
@@ -285,7 +280,7 @@ static int __init mip_of_msi_init(struct device_node *node, struct device_node *
285280
}
286281

287282
IRQCHIP_PLATFORM_DRIVER_BEGIN(mip_msi)
288-
IRQCHIP_MATCH("brcm,bcm2712-mip", mip_of_msi_init)
283+
IRQCHIP_MATCH("brcm,bcm2712-mip", mip_msi_probe)
289284
IRQCHIP_PLATFORM_DRIVER_END(mip_msi)
290285
MODULE_DESCRIPTION("Broadcom BCM2712 MSI-X interrupt controller");
291286
MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.com>");

drivers/irqchip/irq-bcm7038-l1.c

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,6 @@ static inline unsigned int reg_status(struct bcm7038_l1_chip *intc,
8282
return (0 * intc->n_words + word) * sizeof(u32);
8383
}
8484

85-
static inline unsigned int reg_mask_status(struct bcm7038_l1_chip *intc,
86-
unsigned int word)
87-
{
88-
return (1 * intc->n_words + word) * sizeof(u32);
89-
}
90-
9185
static inline unsigned int reg_mask_set(struct bcm7038_l1_chip *intc,
9286
unsigned int word)
9387
{
@@ -219,9 +213,8 @@ static int bcm7038_l1_set_affinity(struct irq_data *d,
219213
}
220214
#endif
221215

222-
static int __init bcm7038_l1_init_one(struct device_node *dn,
223-
unsigned int idx,
224-
struct bcm7038_l1_chip *intc)
216+
static int bcm7038_l1_init_one(struct device_node *dn, unsigned int idx,
217+
struct bcm7038_l1_chip *intc)
225218
{
226219
struct resource res;
227220
resource_size_t sz;
@@ -395,9 +388,9 @@ static const struct irq_domain_ops bcm7038_l1_domain_ops = {
395388
.map = bcm7038_l1_map,
396389
};
397390

398-
static int __init bcm7038_l1_of_init(struct device_node *dn,
399-
struct device_node *parent)
391+
static int bcm7038_l1_probe(struct platform_device *pdev, struct device_node *parent)
400392
{
393+
struct device_node *dn = pdev->dev.of_node;
401394
struct bcm7038_l1_chip *intc;
402395
int idx, ret;
403396

@@ -455,7 +448,7 @@ static int __init bcm7038_l1_of_init(struct device_node *dn,
455448
}
456449

457450
IRQCHIP_PLATFORM_DRIVER_BEGIN(bcm7038_l1)
458-
IRQCHIP_MATCH("brcm,bcm7038-l1-intc", bcm7038_l1_of_init)
451+
IRQCHIP_MATCH("brcm,bcm7038-l1-intc", bcm7038_l1_probe)
459452
IRQCHIP_PLATFORM_DRIVER_END(bcm7038_l1)
460453
MODULE_DESCRIPTION("Broadcom STB 7038-style L1/L2 interrupt controller");
461454
MODULE_LICENSE("GPL v2");

0 commit comments

Comments
 (0)