* [PATCH v7 1/2] dmaengine: arm-dma350: enable ANYCH interrupt for shared IRQ wiring
2026-05-21 7:29 [PATCH v7 0/2] dmaengine: arm-dma350: handle shared channel IRQ wiring on sky1 Jun Guo
@ 2026-05-21 7:29 ` Jun Guo
2026-07-15 12:31 ` Robin Murphy
2026-05-21 7:29 ` [PATCH v7 2/2] arm64: dts: cix: add sky1 DMA-350 node with channel IRQ entries Jun Guo
` (2 subsequent siblings)
3 siblings, 1 reply; 6+ messages in thread
From: Jun Guo @ 2026-05-21 7:29 UTC (permalink / raw)
To: peter.chen, fugang.duan, robh, krzk+dt, conor+dt, vkoul,
ychuang3, schung, robin.murphy, Frank.Li
Cc: dmaengine, devicetree, linux-kernel, cix-kernel-upstream,
linux-arm-kernel, Jun Guo
Enable DMANSECCTRL.INTREN_ANYCHINTR during probe so channel
interrupts are propagated when integrators wire DMA-350 channels
onto a shared IRQ line.
Signed-off-by: Jun Guo <jun.guo@cixtech.com>
---
drivers/dma/arm-dma350.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/dma/arm-dma350.c b/drivers/dma/arm-dma350.c
index 84220fa83029..09403aca8bb0 100644
--- a/drivers/dma/arm-dma350.c
+++ b/drivers/dma/arm-dma350.c
@@ -13,6 +13,11 @@
#include "dmaengine.h"
#include "virt-dma.h"
+#define DMANSECCTRL 0x200
+
+#define NSEC_CTRL 0x0c
+#define INTREN_ANYCHINTR_EN BIT(0)
+
#define DMAINFO 0x0f00
#define DMA_BUILDCFG0 0xb0
@@ -582,6 +587,10 @@ static int d350_probe(struct platform_device *pdev)
dmac->dma.device_issue_pending = d350_issue_pending;
INIT_LIST_HEAD(&dmac->dma.channels);
+ reg = readl_relaxed(base + DMANSECCTRL + NSEC_CTRL);
+ writel_relaxed(reg | INTREN_ANYCHINTR_EN,
+ base + DMANSECCTRL + NSEC_CTRL);
+
/* Would be nice to have per-channel caps for this... */
memset = true;
for (int i = 0; i < nchan; i++) {
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH v7 1/2] dmaengine: arm-dma350: enable ANYCH interrupt for shared IRQ wiring
2026-05-21 7:29 ` [PATCH v7 1/2] dmaengine: arm-dma350: enable ANYCH interrupt for shared IRQ wiring Jun Guo
@ 2026-07-15 12:31 ` Robin Murphy
0 siblings, 0 replies; 6+ messages in thread
From: Robin Murphy @ 2026-07-15 12:31 UTC (permalink / raw)
To: Jun Guo, peter.chen, fugang.duan, robh, krzk+dt, conor+dt, vkoul,
ychuang3, schung, Frank.Li
Cc: dmaengine, devicetree, linux-kernel, cix-kernel-upstream,
linux-arm-kernel
On 21/05/2026 8:29 am, Jun Guo wrote:
> Enable DMANSECCTRL.INTREN_ANYCHINTR during probe so channel
> interrupts are propagated when integrators wire DMA-350 channels
> onto a shared IRQ line.
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Jun Guo <jun.guo@cixtech.com>
> ---
> drivers/dma/arm-dma350.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/dma/arm-dma350.c b/drivers/dma/arm-dma350.c
> index 84220fa83029..09403aca8bb0 100644
> --- a/drivers/dma/arm-dma350.c
> +++ b/drivers/dma/arm-dma350.c
> @@ -13,6 +13,11 @@
> #include "dmaengine.h"
> #include "virt-dma.h"
>
> +#define DMANSECCTRL 0x200
> +
> +#define NSEC_CTRL 0x0c
> +#define INTREN_ANYCHINTR_EN BIT(0)
> +
> #define DMAINFO 0x0f00
>
> #define DMA_BUILDCFG0 0xb0
> @@ -582,6 +587,10 @@ static int d350_probe(struct platform_device *pdev)
> dmac->dma.device_issue_pending = d350_issue_pending;
> INIT_LIST_HEAD(&dmac->dma.channels);
>
> + reg = readl_relaxed(base + DMANSECCTRL + NSEC_CTRL);
> + writel_relaxed(reg | INTREN_ANYCHINTR_EN,
> + base + DMANSECCTRL + NSEC_CTRL);
> +
> /* Would be nice to have per-channel caps for this... */
> memset = true;
> for (int i = 0; i < nchan; i++) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v7 2/2] arm64: dts: cix: add sky1 DMA-350 node with channel IRQ entries
2026-05-21 7:29 [PATCH v7 0/2] dmaengine: arm-dma350: handle shared channel IRQ wiring on sky1 Jun Guo
2026-05-21 7:29 ` [PATCH v7 1/2] dmaengine: arm-dma350: enable ANYCH interrupt for shared IRQ wiring Jun Guo
@ 2026-05-21 7:29 ` Jun Guo
2026-07-15 7:42 ` [PATCH v7 0/2] dmaengine: arm-dma350: handle shared channel IRQ wiring on sky1 Jun Guo
2026-07-17 12:35 ` (subset) " Vinod Koul
3 siblings, 0 replies; 6+ messages in thread
From: Jun Guo @ 2026-05-21 7:29 UTC (permalink / raw)
To: peter.chen, fugang.duan, robh, krzk+dt, conor+dt, vkoul,
ychuang3, schung, robin.murphy, Frank.Li
Cc: dmaengine, devicetree, linux-kernel, cix-kernel-upstream,
linux-arm-kernel, Jun Guo
Describe the DMA-350 channel interrupt sources in DT using 8
interrupt entries, while all entries map to the same GIC SPI
as wired on this platform.
Signed-off-by: Jun Guo <jun.guo@cixtech.com>
---
arch/arm64/boot/dts/cix/sky1.dtsi | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
index bb5cfb1f2113..823adeef51f1 100644
--- a/arch/arm64/boot/dts/cix/sky1.dtsi
+++ b/arch/arm64/boot/dts/cix/sky1.dtsi
@@ -444,6 +444,20 @@ iomuxc: pinctrl@4170000 {
reg = <0x0 0x04170000 0x0 0x1000>;
};
+ fch_dmac: dma-controller@4190000 {
+ compatible = "arm,dma-350";
+ reg = <0x0 0x4190000 0x0 0x10000>;
+ interrupts = <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH 0>;
+ #dma-cells = <1>;
+ };
+
mbox_ap2se: mailbox@5060000 {
compatible = "cix,sky1-mbox";
reg = <0x0 0x05060000 0x0 0x10000>;
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH v7 0/2] dmaengine: arm-dma350: handle shared channel IRQ wiring on sky1
2026-05-21 7:29 [PATCH v7 0/2] dmaengine: arm-dma350: handle shared channel IRQ wiring on sky1 Jun Guo
2026-05-21 7:29 ` [PATCH v7 1/2] dmaengine: arm-dma350: enable ANYCH interrupt for shared IRQ wiring Jun Guo
2026-05-21 7:29 ` [PATCH v7 2/2] arm64: dts: cix: add sky1 DMA-350 node with channel IRQ entries Jun Guo
@ 2026-07-15 7:42 ` Jun Guo
2026-07-17 12:35 ` (subset) " Vinod Koul
3 siblings, 0 replies; 6+ messages in thread
From: Jun Guo @ 2026-07-15 7:42 UTC (permalink / raw)
To: fugang.duan, robh, krzk+dt, conor+dt, vkoul, ychuang3, schung,
robin.murphy, Frank.Li
Cc: dmaengine, devicetree, linux-kernel, cix-kernel-upstream,
linux-arm-kernel
Hi all,
Gentle ping on this patch series.
I understand everyone is busy, but would appreciate any feedback or
review comments when you have a moment.
On 5/21/2026 3:29 PM, Jun Guo wrote:
> This series updates DMA-350 support for the SKY1 integration where all
> DMA
> channel interrupt outputs are wired to the same GIC SPI.
>
> Patch 1 enables DMANSECCTRL.INTREN_ANYCHINTR in the driver so
> per-channel
> interrupt status is propagated even when channels share one parent IRQ
> line.
>
> Patch 2 adds the SKY1 DMA-350 DT node and describes the channel
> interrupt
> sources using 8 channel entries, while all entries map to the same SPI.
>
> Tested on CIX SKY1 with dmatest:
> % echo 2000 > /sys/module/dmatest/parameters/timeout
> % echo 1 > /sys/module/dmatest/parameters/iterations
> % echo "" > /sys/module/dmatest/parameters/channel
> % echo 1 > /sys/module/dmatest/parameters/run
>
> Changes in v7:
> - Modify the commit log format for the driver patch.
>
> Changes in v6:
> - Drop the dt-binding update and keep the existing 8-channel interrupt
> schema.
> - Simplify driver change to a minimal fix:
> enable DMANSECCTRL.INTREN_ANYCHINTR.
> - Update SKY1 DT node to describe 8 channel interrupt entries mapped
> to one SPI.
>
> Changes in v5:
> - Fix the formatting issue in the AI tag.
> - Remove the unnecessary "cix,sky1-dma-350".
>
> Changes in v4:
> - Reword binding text to align with kernel style.
> - Revise the AI attribution to the standard format.
> - Remove redundant links from the commit log.
>
> Changes in v3:
> - Rework binding compatible description to match generic-first model.
> - Keep interrupts schema support for both 1-IRQ and 8-IRQ topologies.
> - Drop SoC match-data dependency for IRQ mode selection.
> - Detect IRQ topology via platform_irq_count() in probe path.
> - Refactor IRQ handling into a shared channel handler.
> - Enable DMANSECCTRL.INTREN_ANYCHINTR only in combined IRQ mode.
>
> Changes in v2:
> - Update to kernel standards, enhance patch description, and refactor
> driver to use match data for hardware differentiation instead of
> compatible strings.
>
> Jun Guo (2):
> dmaengine: arm-dma350: enable ANYCH interrupt for shared IRQ wiring
> arm64: dts: cix: add sky1 DMA-350 node with channel IRQ entries
>
> arch/arm64/boot/dts/cix/sky1.dtsi | 14 ++++++++++++++
> drivers/dma/arm-dma350.c | 9 +++++++++
> 2 files changed, 23 insertions(+)
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: (subset) [PATCH v7 0/2] dmaengine: arm-dma350: handle shared channel IRQ wiring on sky1
2026-05-21 7:29 [PATCH v7 0/2] dmaengine: arm-dma350: handle shared channel IRQ wiring on sky1 Jun Guo
` (2 preceding siblings ...)
2026-07-15 7:42 ` [PATCH v7 0/2] dmaengine: arm-dma350: handle shared channel IRQ wiring on sky1 Jun Guo
@ 2026-07-17 12:35 ` Vinod Koul
3 siblings, 0 replies; 6+ messages in thread
From: Vinod Koul @ 2026-07-17 12:35 UTC (permalink / raw)
To: peter.chen, fugang.duan, robh, krzk+dt, conor+dt, ychuang3,
schung, robin.murphy, Frank.Li, Jun Guo
Cc: dmaengine, devicetree, linux-kernel, cix-kernel-upstream,
linux-arm-kernel
On Thu, 21 May 2026 15:29:22 +0800, Jun Guo wrote:
> This series updates DMA-350 support for the SKY1 integration where all
> DMA
> channel interrupt outputs are wired to the same GIC SPI.
>
> Patch 1 enables DMANSECCTRL.INTREN_ANYCHINTR in the driver so
> per-channel
> interrupt status is propagated even when channels share one parent IRQ
> line.
>
> [...]
Applied, thanks!
[1/2] dmaengine: arm-dma350: enable ANYCH interrupt for shared IRQ wiring
commit: 643c1e1ae3eb3cd9be31e83c2240e41849a6cb56
Best regards,
--
~Vinod
^ permalink raw reply [flat|nested] 6+ messages in thread