]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64: dts: allwinner: a523: Add DMA controller device nodes
authorChen-Yu Tsai <wens@kernel.org>
Mon, 27 Oct 2025 12:56:46 +0000 (20:56 +0800)
committerChen-Yu Tsai <wens@kernel.org>
Tue, 28 Oct 2025 17:07:33 +0000 (01:07 +0800)
The A523 has two DMA controllers. Add device nodes for both. Also hook
up DMA for existing devices.

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://patch.msgid.link/20251027125655.793277-6-wens@kernel.org
Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi

index a9e051a8bea3fd8271c8ed4d8c01e78f1f2e1b39..8edbd38731997b8d4415dfda6c95720859aec74a 100644 (file)
                        reg-io-width = <4>;
                        clocks = <&ccu CLK_BUS_UART0>;
                        resets = <&ccu RST_BUS_UART0>;
+                       dmas = <&dma 14>, <&dma 14>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&ccu CLK_BUS_UART1>;
                        resets = <&ccu RST_BUS_UART1>;
+                       dmas = <&dma 15>, <&dma 15>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&ccu CLK_BUS_UART2>;
                        resets = <&ccu RST_BUS_UART2>;
+                       dmas = <&dma 16>, <&dma 16>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&ccu CLK_BUS_UART3>;
                        resets = <&ccu RST_BUS_UART3>;
+                       dmas = <&dma 17>, <&dma 17>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&ccu CLK_BUS_UART4>;
                        resets = <&ccu RST_BUS_UART4>;
+                       dmas = <&dma 18>, <&dma 18>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&ccu CLK_BUS_UART5>;
                        resets = <&ccu RST_BUS_UART5>;
+                       dmas = <&dma 19>, <&dma 19>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&ccu CLK_BUS_UART6>;
                        resets = <&ccu RST_BUS_UART6>;
+                       dmas = <&dma 20>, <&dma 20>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&ccu CLK_BUS_UART7>;
                        resets = <&ccu RST_BUS_UART7>;
+                       dmas = <&dma 21>, <&dma 21>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ccu CLK_BUS_I2C0>;
                        resets = <&ccu RST_BUS_I2C0>;
+                       dmas = <&dma 43>, <&dma 43>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ccu CLK_BUS_I2C1>;
                        resets = <&ccu RST_BUS_I2C1>;
+                       dmas = <&dma 44>, <&dma 44>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ccu CLK_BUS_I2C2>;
                        resets = <&ccu RST_BUS_I2C2>;
+                       dmas = <&dma 45>, <&dma 45>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ccu CLK_BUS_I2C3>;
                        resets = <&ccu RST_BUS_I2C3>;
+                       dmas = <&dma 46>, <&dma 46>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ccu CLK_BUS_I2C4>;
                        resets = <&ccu RST_BUS_I2C4>;
+                       dmas = <&dma 47>, <&dma 47>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ccu CLK_BUS_I2C5>;
                        resets = <&ccu RST_BUS_I2C5>;
+                       dmas = <&dma 48>, <&dma 48>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        ranges;
                };
 
+               dma: dma-controller@3002000 {
+                       compatible = "allwinner,sun55i-a523-dma",
+                                    "allwinner,sun50i-a100-dma";
+                       reg = <0x03002000 0x1000>;
+                       interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
+                       clock-names = "bus", "mbus";
+                       dma-channels = <16>;
+                       dma-requests = <54>;
+                       resets = <&ccu RST_BUS_DMA>;
+                       #dma-cells = <1>;
+               };
+
                sid: efuse@3006000 {
                        compatible = "allwinner,sun55i-a523-sid",
                                     "allwinner,sun50i-a64-sid";
                        reg = <0x07081400 0x400>;
                        interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&r_ccu CLK_BUS_R_I2C0>;
+                       dmas = <&dma 49>, <&dma 49>;
+                       dma-names = "rx", "tx";
                        resets = <&r_ccu RST_BUS_R_I2C0>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&r_i2c_pins>;
                        #reset-cells = <1>;
                };
 
+               mcu_dma: dma-controller@7121000 {
+                       compatible = "allwinner,sun55i-a523-mcu-dma",
+                                    "allwinner,sun50i-a100-dma";
+                       reg = <0x07121000 0x1000>;
+                       interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&mcu_ccu CLK_BUS_MCU_DMA>, <&mcu_ccu CLK_MCU_MBUS_DMA>;
+                       clock-names = "bus", "mbus";
+                       dma-channels = <16>;
+                       dma-requests = <15>;
+                       resets = <&mcu_ccu RST_BUS_MCU_DMA>;
+                       #dma-cells = <1>;
+               };
+
                npu: npu@7122000 {
                        compatible = "vivante,gc";
                        reg = <0x07122000 0x1000>;