Skip to content

Commit 43ee744

Browse files
committed
Merge tag 'irqchip-5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/core
Pull irqchip updates from Marc Zyngier: - Conversion of the SiFive PLIC to hierarchical domains - New SiFive GPIO irqchip driver - New Aspeed SCI irqchip driver - New NXP INTMUX irqchip driver - Additional support for the Meson A1 GPIO irqchip - First part of the GICv4.1 support - Assorted fixes
2 parents 11ea68f + f4a81f5 commit 43ee744

File tree

26 files changed

+1930
-104
lines changed

26 files changed

+1930
-104
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/gpio/sifive,gpio.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: SiFive GPIO controller
8+
9+
maintainers:
10+
- Yash Shah <[email protected]>
11+
- Paul Walmsley <[email protected]>
12+
13+
properties:
14+
compatible:
15+
items:
16+
- const: sifive,fu540-c000-gpio
17+
- const: sifive,gpio0
18+
19+
reg:
20+
maxItems: 1
21+
22+
interrupts:
23+
description:
24+
interrupt mapping one per GPIO. Maximum 16 GPIOs.
25+
minItems: 1
26+
maxItems: 16
27+
28+
interrupt-controller: true
29+
30+
"#interrupt-cells":
31+
const: 2
32+
33+
clocks:
34+
maxItems: 1
35+
36+
"#gpio-cells":
37+
const: 2
38+
39+
gpio-controller: true
40+
41+
required:
42+
- compatible
43+
- reg
44+
- interrupts
45+
- interrupt-controller
46+
- "#interrupt-cells"
47+
- clocks
48+
- "#gpio-cells"
49+
- gpio-controller
50+
51+
additionalProperties: false
52+
53+
examples:
54+
- |
55+
#include <dt-bindings/clock/sifive-fu540-prci.h>
56+
gpio@10060000 {
57+
compatible = "sifive,fu540-c000-gpio", "sifive,gpio0";
58+
interrupt-parent = <&plic>;
59+
interrupts = <7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22>;
60+
reg = <0x0 0x10060000 0x0 0x1000>;
61+
clocks = <&tlclk PRCI_CLK_TLCLK>;
62+
gpio-controller;
63+
#gpio-cells = <2>;
64+
interrupt-controller;
65+
#interrupt-cells = <2>;
66+
};
67+
68+
...

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Required properties:
1717
"amlogic,meson-axg-gpio-intc" for AXG SoCs (A113D, A113X)
1818
"amlogic,meson-g12a-gpio-intc" for G12A SoCs (S905D2, S905X2, S905Y2)
1919
"amlogic,meson-sm1-gpio-intc" for SM1 SoCs (S905D3, S905X3, S905Y3)
20+
"amlogic,meson-a1-gpio-intc" for A1 SoCs (A113L)
2021
- reg : Specifies base physical address and size of the registers.
2122
- interrupt-controller : Identifies the node as an interrupt controller.
2223
- #interrupt-cells : Specifies the number of cells needed to encode an
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
Aspeed AST25XX and AST26XX SCU Interrupt Controller
2+
3+
Required Properties:
4+
- #interrupt-cells : must be 1
5+
- compatible : must be "aspeed,ast2500-scu-ic",
6+
"aspeed,ast2600-scu-ic0" or
7+
"aspeed,ast2600-scu-ic1"
8+
- interrupts : interrupt from the parent controller
9+
- interrupt-controller : indicates that the controller receives and
10+
fires new interrupts for child busses
11+
12+
Example:
13+
14+
syscon@1e6e2000 {
15+
ranges = <0 0x1e6e2000 0x1a8>;
16+
17+
scu_ic: interrupt-controller@18 {
18+
#interrupt-cells = <1>;
19+
compatible = "aspeed,ast2500-scu-ic";
20+
interrupts = <21>;
21+
interrupt-controller;
22+
};
23+
};
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/interrupt-controller/fsl,intmux.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Freescale INTMUX interrupt multiplexer
8+
9+
maintainers:
10+
- Joakim Zhang <[email protected]>
11+
12+
properties:
13+
compatible:
14+
const: fsl,imx-intmux
15+
16+
reg:
17+
maxItems: 1
18+
19+
interrupts:
20+
minItems: 1
21+
maxItems: 8
22+
description: |
23+
Should contain the parent interrupt lines (up to 8) used to multiplex
24+
the input interrupts.
25+
26+
interrupt-controller: true
27+
28+
'#interrupt-cells':
29+
const: 2
30+
description: |
31+
The 1st cell is hw interrupt number, the 2nd cell is channel index.
32+
33+
clocks:
34+
description: ipg clock.
35+
36+
clock-names:
37+
const: ipg
38+
39+
required:
40+
- compatible
41+
- reg
42+
- interrupts
43+
- interrupt-controller
44+
- '#interrupt-cells'
45+
- clocks
46+
- clock-names
47+
48+
additionalProperties: false
49+
50+
examples:
51+
- |
52+
interrupt-controller@37400000 {
53+
compatible = "fsl,imx-intmux";
54+
reg = <0x37400000 0x1000>;
55+
interrupts = <0 16 4>,
56+
<0 17 4>,
57+
<0 18 4>,
58+
<0 19 4>,
59+
<0 20 4>,
60+
<0 21 4>,
61+
<0 22 4>,
62+
<0 23 4>;
63+
interrupt-controller;
64+
interrupt-parent = <&gic>;
65+
#interrupt-cells = <2>;
66+
clocks = <&clk>;
67+
clock-names = "ipg";
68+
};

MAINTAINERS

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2694,6 +2694,14 @@ S: Maintained
26942694
F: drivers/pinctrl/aspeed/
26952695
F: Documentation/devicetree/bindings/pinctrl/aspeed,*
26962696

2697+
ASPEED SCU INTERRUPT CONTROLLER DRIVER
2698+
M: Eddie James <[email protected]>
2699+
L: [email protected] (moderated for non-subscribers)
2700+
S: Maintained
2701+
F: Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2xxx-scu-ic.txt
2702+
F: drivers/irqchip/irq-aspeed-scu-ic.c
2703+
F: include/dt-bindings/interrupt-controller/aspeed-scu-ic.h
2704+
26972705
ASPEED VIDEO ENGINE DRIVER
26982706
M: Eddie James <[email protected]>
26992707

arch/arm/include/asm/arch_gicv3.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#ifndef __ASSEMBLY__
1111

1212
#include <linux/io.h>
13+
#include <linux/io-64-nonatomic-lo-hi.h>
1314
#include <asm/barrier.h>
1415
#include <asm/cacheflush.h>
1516
#include <asm/cp15.h>
@@ -327,6 +328,7 @@ static inline u64 __gic_readq_nonatomic(const volatile void __iomem *addr)
327328
/*
328329
* GITS_VPROPBASER - hi and lo bits may be accessed independently.
329330
*/
331+
#define gits_read_vpropbaser(c) __gic_readq_nonatomic(c)
330332
#define gits_write_vpropbaser(v, c) __gic_writeq_nonatomic(v, c)
331333

332334
/*

arch/arm/mach-exynos/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ menuconfig ARCH_EXYNOS
1212
select ARCH_SUPPORTS_BIG_ENDIAN
1313
select ARM_AMBA
1414
select ARM_GIC
15+
select EXYNOS_IRQ_COMBINER
1516
select COMMON_CLK_SAMSUNG
1617
select EXYNOS_ASV
1718
select EXYNOS_CHIPID

arch/arm64/include/asm/arch_gicv3.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ static inline u32 gic_read_rpr(void)
141141
#define gicr_read_pendbaser(c) readq_relaxed(c)
142142

143143
#define gits_write_vpropbaser(v, c) writeq_relaxed(v, c)
144+
#define gits_read_vpropbaser(c) readq_relaxed(c)
144145

145146
#define gits_write_vpendbaser(v, c) writeq_relaxed(v, c)
146147
#define gits_read_vpendbaser(c) readq_relaxed(c)

drivers/gpio/Kconfig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,15 @@ config GPIO_SAMA5D2_PIOBU
479479
The difference from regular GPIOs is that they
480480
maintain their value during backup/self-refresh.
481481

482+
config GPIO_SIFIVE
483+
bool "SiFive GPIO support"
484+
depends on OF_GPIO && IRQ_DOMAIN_HIERARCHY
485+
select GPIO_GENERIC
486+
select GPIOLIB_IRQCHIP
487+
select REGMAP_MMIO
488+
help
489+
Say yes here to support the GPIO device on SiFive SoCs.
490+
482491
config GPIO_SIOX
483492
tristate "SIOX GPIO support"
484493
depends on SIOX

drivers/gpio/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ obj-$(CONFIG_ARCH_SA1100) += gpio-sa1100.o
124124
obj-$(CONFIG_GPIO_SAMA5D2_PIOBU) += gpio-sama5d2-piobu.o
125125
obj-$(CONFIG_GPIO_SCH311X) += gpio-sch311x.o
126126
obj-$(CONFIG_GPIO_SCH) += gpio-sch.o
127+
obj-$(CONFIG_GPIO_SIFIVE) += gpio-sifive.o
127128
obj-$(CONFIG_GPIO_SIOX) += gpio-siox.o
128129
obj-$(CONFIG_GPIO_SODAVILLE) += gpio-sodaville.o
129130
obj-$(CONFIG_GPIO_SPEAR_SPICS) += gpio-spear-spics.o

0 commit comments

Comments
 (0)