riscv: interrupt-controller: Add T-HEAD C900 ACLINT SSWI
Subsystems (4)
v5 cover riscv: interrupt-controller: Add T-HEAD C900 ACLINT SSWI
New version of T-HEAD C920[1] implement a fully featured ACLINT device (This core is used by Sophgo SG2044). This ACLINT device provides a SSWI field to support fast S-mode IPI. This SSWI device is like the MSWI device in CLINT/ACLINT, but for S-mode.
Add full support for T-HEAD C900 SSWI device.
[1] https://www.xrvm.com/product/xuantie/C920
Changed from v1:
1. patch 2: use computed reg offset to avoid uncessary reg additions when setting/clearing irq.
2. patch 2: fix mulitple format issues and improve some comments.
3. patch 2: disable cpu irq when CPU is stopped.
Changed from v2:
1. patch 2: add SXSTATUS.CLINTEE check for T-HEAD cores.
2. patch 2: add select GENERIC_IRQ_IPI_MUX in Kconfig
Changed from v3:
1. patch 2: add SMP depends in Kconfig
Changed from v4:
1. patch 1/2: update the description to mark the device is T-HEAD specific
Inochi Amaoto (3):
dt-bindings: interrupt-controller: Add Sophgo SG2044 ACLINT SSWI
irqchip: add T-HEAD C900 ACLINT SSWI driver
riscv: defconfig: Enable T-HEAD C900 ACLINT SSWI drivers
.../thead,c900-aclint-sswi.yaml | 58 ++++++ arch/riscv/configs/defconfig | 1 + drivers/irqchip/Kconfig | 12 ++ drivers/irqchip/Makefile | 1 + drivers/irqchip/irq-thead-c900-aclint-sswi.c | 176 ++++++++++++++++++ include/linux/cpuhotplug.h | 1 + 6 files changed, 249 insertions(+) create mode 100644 Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-sswi.yaml create mode 100644 drivers/irqchip/irq-thead-c900-aclint-sswi.c
--
2.47.0
PATCH v5 1/3 dt-bindings: interrupt-controller: Add Sophgo SG2044 ACLINT SSWI
Sophgo SG2044 has a new version of T-HEAD C920, which implement a fully featured T-HEAD ACLINT device. This ACLINT device contains a SSWI device to support fast S-mode IPI.
Add necessary compatible string for the T-HEAD ACLINT sswi device.
--- .../thead,c900-aclint-sswi.yaml | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-sswi.yaml
Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-sswi.yaml new file +58 -0
@@ -0,0 +1,58 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/interrupt-controller/thead,c900-aclint-sswi.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sophgo sg2044 ACLINT Supervisor-level Software Interrupt Device + +maintainers: + - Inochi Amaoto <[email protected]> + +description: + The SSWI device is a part of the THEAD ACLINT device. It provides + supervisor-level IPI functionality for a set of HARTs on a THEAD + platform. It provides a register to set an IPI (SETSSIP) for each + HART connected to the SSWI device. + +properties: + compatible: + items: + - enum: + - sophgo,sg2044-aclint-sswi + - const: thead,c900-aclint-sswi + + reg: + maxItems: 1 + + "#interrupt-cells": + const: 0 + + interrupt-controller: true + + interrupts-extended: + minItems: 1 + maxItems: 4095 + +additionalProperties: false + +required: + - compatible + - reg + - "#interrupt-cells" + - interrupt-controller + - interrupts-extended + +examples: + - | + interrupt-controller@94000000 { + compatible = "sophgo,sg2044-aclint-sswi", "thead,c900-aclint-sswi"; + reg = <0x94000000 0x00004000>; + #interrupt-cells = <0>; + interrupt-controller; + interrupts-extended = <&cpu1intc 1>, + <&cpu2intc 1>, + <&cpu3intc 1>, + <&cpu4intc 1>; + }; +...
Signature · 1 line
2.47.0
Re: [PATCH v5 1/3] dt-bindings: interrupt-controller: Add Sophgo SG2044 ACLINT SSWI
Quoted 8 lines · Inochi Amaoto
Sophgo SG2044 has a new version of T-HEAD C920, which implement a fully featured T-HEAD ACLINT device. This ACLINT device contains a SSWI device to support fast S-mode IPI.
Add necessary compatible string for the T-HEAD ACLINT sswi device.
Signed-off-by Inochi Amaoto <[email protected]>
Hi, Conor,
Could you review it again? I have updated the description of the binding and mark the device is T-HEAD specific.
Regards,
Inochi
Conor Dooley
Reviewed-byRe: [PATCH v5 1/3] dt-bindings: interrupt-controller: Add Sophgo SG2044 ACLINT SSWI
Quoted 7 lines · Inochi Amaoto
Quoted 6 lines · Inochi Amaoto
Sophgo SG2044 has a new version of T-HEAD C920, which implement a fully featured T-HEAD ACLINT device. This ACLINT device contains a SSWI device to support fast S-mode IPI.
Add necessary compatible string for the T-HEAD ACLINT sswi device.
Quoted 7 lines
Quoted 2 lines
Signed-off-by Inochi Amaoto <[email protected]>Hi, Conor,
Could you review it again? I have updated the description of the binding and mark the device is T-HEAD specific.
Only thing I would say is that
title: Sophgo sg2044 ACLINT Supervisor-level Software Interrupt Device should probably be
title: T-Head c900 ACLINT Supervisor-level Software Interrupt Device or similar, since this isn't Sophgo's IP.
w/ that,
(dunno if Thomas is willing to change that on application)
Re: [PATCH v5 1/3] dt-bindings: interrupt-controller: Add Sophgo SG2044 ACLINT SSWI
Quoted 22 lines · Conor Dooley
Quoted 7 lines · Inochi Amaoto
Quoted 6 lines · Inochi Amaoto
Sophgo SG2044 has a new version of T-HEAD C920, which implement a fully featured T-HEAD ACLINT device. This ACLINT device contains a SSWI device to support fast S-mode IPI.
Add necessary compatible string for the T-HEAD ACLINT sswi device.
Quoted 7 lines
Quoted 2 lines
Signed-off-by Inochi Amaoto <[email protected]>Hi, Conor,
Could you review it again? I have updated the description of the binding and mark the device is T-HEAD specific.
Only thing I would say is that
title: Sophgo sg2044 ACLINT Supervisor-level Software Interrupt Device should probably be
title: T-Head c900 ACLINT Supervisor-level Software Interrupt Device or similar, since this isn't Sophgo's IP.
Quoted 3 lines
w/ that,
Reviewed-by Conor Dooley <[email protected]>(dunno if Thomas is willing to change that on application)
Yes
Re: [PATCH v5 1/3] dt-bindings: interrupt-controller: Add Sophgo SG2044 ACLINT SSWI
Quoted 23 lines · Thomas Gleixner
Quoted 22 lines · Conor Dooley
Quoted 7 lines · Inochi Amaoto
Quoted 6 lines · Inochi Amaoto
Sophgo SG2044 has a new version of T-HEAD C920, which implement a fully featured T-HEAD ACLINT device. This ACLINT device contains a SSWI device to support fast S-mode IPI.
Add necessary compatible string for the T-HEAD ACLINT sswi device.
Quoted 7 lines
Quoted 2 lines
Signed-off-by Inochi Amaoto <[email protected]>Hi, Conor,
Could you review it again? I have updated the description of the binding and mark the device is T-HEAD specific.
Only thing I would say is that
title: Sophgo sg2044 ACLINT Supervisor-level Software Interrupt Device should probably be
title: T-Head c900 ACLINT Supervisor-level Software Interrupt Device or similar, since this isn't Sophgo's IP.
Quoted 5 lines
Quoted 3 lines
w/ that,
Reviewed-by Conor Dooley <[email protected]>(dunno if Thomas is willing to change that on application)
Yes
Thanks.
[tip: irq/core] dt-bindings: interrupt-controller: Add T-HEAD C900 ACLINT SSWI device
In reply to Inochi AmaotoThe following commit has been merged into the irq/core branch of tip:
The following commit has been merged into the irq/core branch of tip:
Commit-ID: 2631c2b8e5c3406af62b60413ea04e155be9ebcc Gitweb: https://git.kernel.org/tip/2631c2b8e5c3406af62b60413ea04e155be9ebcc Author: Inochi Amaoto <[email protected]> AuthorDate: Thu, 31 Oct 2024 14:08:57 +08:00 Committer: Thomas Gleixner <[email protected]> CommitterDate: Thu, 07 Nov 2024 00:28:27 +01:00
dt-bindings: interrupt-controller: Add T-HEAD C900 ACLINT SSWI device
Sophgo SG2044 has a new version of T-HEAD C920, which implement a fully featured T-HEAD ACLINT device. This ACLINT device contains a SSWI device to support fast S-mode IPI.
Add necessary compatible string for the T-HEAD ACLINT SSWI device.
--- Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-sswi.yaml | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-sswi.yaml
Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-sswi.yaml new file +58 -0
@@ -0,0 +1,58 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/interrupt-controller/thead,c900-aclint-sswi.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: T-HEAD C900 ACLINT Supervisor-level Software Interrupt Device + +maintainers: + - Inochi Amaoto <[email protected]> + +description: + The SSWI device is a part of the THEAD ACLINT device. It provides + supervisor-level IPI functionality for a set of HARTs on a THEAD + platform. It provides a register to set an IPI (SETSSIP) for each + HART connected to the SSWI device. + +properties: + compatible: + items: + - enum: + - sophgo,sg2044-aclint-sswi + - const: thead,c900-aclint-sswi + + reg: + maxItems: 1 + + "#interrupt-cells": + const: 0 + + interrupt-controller: true + + interrupts-extended: + minItems: 1 + maxItems: 4095 + +additionalProperties: false + +required: + - compatible + - reg + - "#interrupt-cells" + - interrupt-controller + - interrupts-extended + +examples: + - | + interrupt-controller@94000000 { + compatible = "sophgo,sg2044-aclint-sswi", "thead,c900-aclint-sswi"; + reg = <0x94000000 0x00004000>; + #interrupt-cells = <0>; + interrupt-controller; + interrupts-extended = <&cpu1intc 1>, + <&cpu2intc 1>, + <&cpu3intc 1>, + <&cpu4intc 1>; + }; +...
PATCH v5 2/3 irqchip: add T-HEAD C900 ACLINT SSWI driver
In reply to Inochi AmaotoAdd a driver for the T-HEAD C900 ACLINT SSWI device. This device allows the system with T-HEAD cpus to send ipi via fast device interface.
--- drivers/irqchip/Kconfig | 12 ++ drivers/irqchip/Makefile | 1 + drivers/irqchip/irq-thead-c900-aclint-sswi.c | 176 +++++++++++++++++++ include/linux/cpuhotplug.h | 1 + 4 files changed, 190 insertions(+) create mode 100644 drivers/irqchip/irq-thead-c900-aclint-sswi.c
drivers/irqchip/Kconfig +12 -0
@@ -604,6 +604,18 @@ config STARFIVE_JH8100_INTC If you don't know what to do here, say Y. +config THEAD_C900_ACLINT_SSWI + bool "THEAD C9XX ACLINT S-mode IPI Interrupt Controller" + depends on RISCV + depends on SMP + select IRQ_DOMAIN_HIERARCHY + select GENERIC_IRQ_IPI_MUX + help + This enables support for T-HEAD specific ACLINT SSWI device + support. + + If you don't know what to do here, say Y. + config EXYNOS_IRQ_COMBINER bool "Samsung Exynos IRQ combiner support" if COMPILE_TEST depends on (ARCH_EXYNOS && ARM) || COMPILE_TEST
drivers/irqchip/Makefile +1 -0
@@ -101,6 +101,7 @@ obj-$(CONFIG_RISCV_APLIC_MSI) += irq-riscv-aplic-msi.o obj-$(CONFIG_RISCV_IMSIC) += irq-riscv-imsic-state.o irq-riscv-imsic-early.o irq-riscv-imsic-platform.o obj-$(CONFIG_SIFIVE_PLIC) += irq-sifive-plic.o obj-$(CONFIG_STARFIVE_JH8100_INTC) += irq-starfive-jh8100-intc.o +obj-$(CONFIG_THEAD_C900_ACLINT_SSWI) += irq-thead-c900-aclint-sswi.o obj-$(CONFIG_IMX_IRQSTEER) += irq-imx-irqsteer.o obj-$(CONFIG_IMX_INTMUX) += irq-imx-intmux.o obj-$(CONFIG_IMX_MU_MSI) += irq-imx-mu-msi.o
drivers/irqchip/irq-thead-c900-aclint-sswi.c new file +176 -0
176 lines not on this page · raw message
include/linux/cpuhotplug.h +1 -0
@@ -147,6 +147,7 @@ enum cpuhp_state {CPUHP_AP_IRQ_EIOINTC_STARTING ,CPUHP_AP_IRQ_AVECINTC_STARTING ,CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING , +CPUHP_AP_IRQ_THEAD_ACLINT_SSWI_STARTING ,CPUHP_AP_IRQ_RISCV_IMSIC_STARTING ,CPUHP_AP_IRQ_RISCV_SBI_IPI_STARTING , CPUHP_AP_ARM_MVEBU_COHERENCY,
Signature · 1 line
2.47.0
[tip: irq/core] irqchip: Add T-HEAD C900 ACLINT SSWI driver
The following commit has been merged into the irq/core branch of tip:
The following commit has been merged into the irq/core branch of tip:
Commit-ID: 25caea955cc950507d179f3ef456404b475e8c23 Gitweb: https://git.kernel.org/tip/25caea955cc950507d179f3ef456404b475e8c23 Author: Inochi Amaoto <[email protected]> AuthorDate: Thu, 31 Oct 2024 14:08:58 +08:00 Committer: Thomas Gleixner <[email protected]> CommitterDate: Thu, 07 Nov 2024 00:28:27 +01:00
irqchip: Add T-HEAD C900 ACLINT SSWI driver
Add a driver for the T-HEAD C900 ACLINT SSWI device. This device allows the system with T-HEAD cpus to send ipi via fast device interface.
--- drivers/irqchip/Kconfig | 12 +- drivers/irqchip/Makefile | 1 +- drivers/irqchip/irq-thead-c900-aclint-sswi.c | 176 ++++++++++++++++++- include/linux/cpuhotplug.h | 1 +- 4 files changed, 190 insertions(+) create mode 100644 drivers/irqchip/irq-thead-c900-aclint-sswi.c
drivers/irqchip/Kconfig +12 -0
@@ -619,6 +619,18 @@ config STARFIVE_JH8100_INTC If you don't know what to do here, say Y. +config THEAD_C900_ACLINT_SSWI + bool "THEAD C9XX ACLINT S-mode IPI Interrupt Controller" + depends on RISCV + depends on SMP + select IRQ_DOMAIN_HIERARCHY + select GENERIC_IRQ_IPI_MUX + help + This enables support for T-HEAD specific ACLINT SSWI device + support. + + If you don't know what to do here, say Y. + config EXYNOS_IRQ_COMBINER bool "Samsung Exynos IRQ combiner support" if COMPILE_TEST depends on (ARCH_EXYNOS && ARM) || COMPILE_TEST
drivers/irqchip/Makefile +1 -0
@@ -103,6 +103,7 @@ obj-$(CONFIG_RISCV_APLIC_MSI) += irq-riscv-aplic-msi.o obj-$(CONFIG_RISCV_IMSIC) += irq-riscv-imsic-state.o irq-riscv-imsic-early.o irq-riscv-imsic-platform.o obj-$(CONFIG_SIFIVE_PLIC) += irq-sifive-plic.o obj-$(CONFIG_STARFIVE_JH8100_INTC) += irq-starfive-jh8100-intc.o +obj-$(CONFIG_THEAD_C900_ACLINT_SSWI) += irq-thead-c900-aclint-sswi.o obj-$(CONFIG_IMX_IRQSTEER) += irq-imx-irqsteer.o obj-$(CONFIG_IMX_INTMUX) += irq-imx-intmux.o obj-$(CONFIG_IMX_MU_MSI) += irq-imx-mu-msi.o
drivers/irqchip/irq-thead-c900-aclint-sswi.c new file +176 -0
176 lines not on this page · raw message
include/linux/cpuhotplug.h +1 -0
@@ -147,6 +147,7 @@ enum cpuhp_state {CPUHP_AP_IRQ_EIOINTC_STARTING ,CPUHP_AP_IRQ_AVECINTC_STARTING ,CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING , +CPUHP_AP_IRQ_THEAD_ACLINT_SSWI_STARTING ,CPUHP_AP_IRQ_RISCV_IMSIC_STARTING ,CPUHP_AP_IRQ_RISCV_SBI_IPI_STARTING , CPUHP_AP_ARM_MVEBU_COHERENCY,
PATCH v5 3/3 riscv: defconfig: Enable T-HEAD C900 ACLINT SSWI drivers
In reply to Inochi AmaotoAdd support for T-HEAD C900 ACLINT SSWI irqchip.
--- arch/riscv/configs/defconfig | 1 + 1 file changed, 1 insertion(+)
arch/riscv/configs/defconfig +1 -0
@@ -256,6 +256,7 @@ CONFIG_RPMSG_CTRL=y CONFIG_RPMSG_VIRTIO=y CONFIG_PM_DEVFREQ=y CONFIG_IIO=y +CONFIG_THEAD_C900_ACLINT_SSWI=y CONFIG_PHY_SUN4I_USB=m CONFIG_PHY_STARFIVE_JH7110_DPHY_RX=m CONFIG_PHY_STARFIVE_JH7110_PCIE=m
Signature · 1 line
2.47.0
[tip: irq/core] riscv: defconfig: Enable T-HEAD C900 ACLINT SSWI drivers
The following commit has been merged into the irq/core branch of tip:
The following commit has been merged into the irq/core branch of tip:
Commit-ID: 6da33567c0bf24b642f69b029a2e9ea51fa75472 Gitweb: https://git.kernel.org/tip/6da33567c0bf24b642f69b029a2e9ea51fa75472 Author: Inochi Amaoto <[email protected]> AuthorDate: Thu, 31 Oct 2024 14:08:59 +08:00 Committer: Thomas Gleixner <[email protected]> CommitterDate: Thu, 07 Nov 2024 00:28:27 +01:00
riscv: defconfig: Enable T-HEAD C900 ACLINT SSWI drivers
Add support for T-HEAD C900 ACLINT SSWI irqchip.
--- arch/riscv/configs/defconfig | 1 + 1 file changed, 1 insertion(+)
arch/riscv/configs/defconfig +1 -0
@@ -256,6 +256,7 @@ CONFIG_RPMSG_CTRL=y CONFIG_RPMSG_VIRTIO=y CONFIG_PM_DEVFREQ=y CONFIG_IIO=y +CONFIG_THEAD_C900_ACLINT_SSWI=y CONFIG_PHY_SUN4I_USB=m CONFIG_PHY_STARFIVE_JH7110_DPHY_RX=m CONFIG_PHY_STARFIVE_JH7110_PCIE=m
This series was applied to riscv/linux.git (fixes) by Thomas Gleixner <[email protected]>:
Hello:
This series was applied to riscv/linux.git (fixes) by Thomas Gleixner <[email protected]>:
Quoted 8 lines · On Thu, 31 Oct 2024 14:08:56 +0800 you wrote:
New version of T-HEAD C920[1] implement a fully featured ACLINT device (This core is used by Sophgo SG2044). This ACLINT device provides a SSWI field to support fast S-mode IPI. This SSWI device is like the MSWI device in CLINT/ACLINT, but for S-mode.
Add full support for T-HEAD C900 SSWI device.
[...]
Here is the summary with links:
- [v5,1/3] dt-bindings: interrupt-controller: Add Sophgo SG2044 ACLINT SSWI (no matching commit)
- [v5,2/3] irqchip: add T-HEAD C900 ACLINT SSWI driver
(no matching commit)
- [v5,3/3] riscv: defconfig: Enable T-HEAD C900 ACLINT SSWI drivers
https://git.kernel.org/riscv/c/6da33567c0bf
You are awesome, thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html