[PATCH 4/4] ARM: nomadik: add DMA support

Linus Walleij linus.walleij at linaro.org
Fri Sep 12 00:37:52 PDT 2014


This adds DMA controller entries for the two PL08x blocks on the
Nomadik, assigns the fixed signal names, and defines channels
for UART and MMC/SD. Tested on the S8815 USB dongle.

Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
 arch/arm/boot/dts/ste-nomadik-stn8815.dtsi | 296 +++++++++++++++++++++++++++++
 1 file changed, 296 insertions(+)

diff --git a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
index dbcf521b017f..8ffe68d9f670 100644
--- a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
+++ b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
@@ -794,6 +794,10 @@
 			clock-names = "uartclk", "apb_pclk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&uart0_default_mux>;
+			dmas = <&dmac0 14>,
+			       <&dmac0 15>;
+			dma-names = "rx", "tx";
+
 		};
 
 		uart1: uart at 101fb000 {
@@ -805,6 +809,9 @@
 			clock-names = "uartclk", "apb_pclk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&uart1_default_mux>;
+			dmas = <&dmac1 22>,
+			       <&dmac1 23>;
+			dma-names = "rx", "tx";
 		};
 
 		uart2: uart at 101f2000 {
@@ -848,6 +855,295 @@
 			pinctrl-names = "default";
 			pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
 			vmmc-supply = <&vmmc_regulator>;
+			dmas = <&dmac1 21>;
+			dma-names = "rx";
+		};
+
+		dmac0: dma-controller at 10130000 {
+			compatible = "arm,pl080", "arm,primecell";
+			reg = <0x10130000 0x1000>;
+			interrupt-parent = <&vica>;
+			interrupts = <15>;
+			clocks = <&hclkdma0>;
+			clock-names = "apb_pclk";
+			lli-bus-interface-ahb1;
+			lli-bus-interface-ahb2;
+			mem-bus-interface-ahb2;
+			memcpy-burst-size = <256>;
+			memcpy-bus-width = <32>;
+			#dma-cells = <1>;
+			/* Assignments for the 32 channels */
+			saa0 at dmac0 {
+				signal = "saa0";
+				bus-interface-ahb1;
+			};
+			saa1 at dmac0 {
+				signal = "saa1";
+				bus-interface-ahb1;
+			};
+			saa2 at dmac0 {
+				signal = "saa2";
+				bus-interface-ahb1;
+			};
+			saa3 at dmac0 {
+				signal = "saa3";
+				bus-interface-ahb1;
+			};
+			saa4 at dmac0 {
+				signal = "saa4";
+				bus-interface-ahb1;
+			};
+			saa5 at dmac0 {
+				signal = "saa5";
+				bus-interface-ahb1;
+			};
+			saa6 at dmac0 {
+				signal = "saa6";
+				bus-interface-ahb1;
+			};
+			saa7 at dmac0 {
+				signal = "saa7";
+				bus-interface-ahb1;
+			};
+			unused at dmac0 {
+				signal = "unused";
+				bus-interface-ahb1;
+			};
+			fir at dmac0 {
+				signal = "firdatxrx";
+				bus-interface-ahb1;
+			};
+			msp0rx at dmac0 {
+				signal = "msp0rx";
+				bus-interface-ahb1;
+			};
+			msp0tx at dmac0 {
+				signal = "msp0tx";
+				bus-interface-ahb1;
+			};
+			ssprx at dmac0 {
+				signal = "ssprx";
+				bus-interface-ahb1;
+			};
+			ssptx at dmac0 {
+				signal = "ssptx";
+				bus-interface-ahb1;
+			};
+			uart0rx at dmac0 {
+				signal = "uart0rx";
+				bus-interface-ahb1;
+			};
+			uart0tx at dmac0 {
+				signal = "uart0tx";
+				bus-interface-ahb1;
+			};
+			hsirxch0 at dmac0 {
+				signal = "hsirxch0";
+				bus-interface-ahb1;
+			};
+			hsirxch1 at dmac0 {
+				signal = "hsirxch1";
+				bus-interface-ahb1;
+			};
+			hsirxch2 at dmac0 {
+				signal = "hsirxch2";
+				bus-interface-ahb1;
+			};
+			hsirxch3 at dmac0 {
+				signal = "hsirxch3";
+				bus-interface-ahb1;
+			};
+			hsirxch4 at dmac0 {
+				signal = "hsirxch4";
+				bus-interface-ahb1;
+			};
+			hsirxch5 at dmac0 {
+				signal = "hsirxch5";
+				bus-interface-ahb1;
+			};
+			hsirxch6 at dmac0 {
+				signal = "hsirxch6";
+				bus-interface-ahb1;
+			};
+			hsirxch7 at dmac0 {
+				signal = "hsirxch7";
+				bus-interface-ahb1;
+			};
+			hsitxch0 at dmac0 {
+				signal = "hsitxch0";
+				bus-interface-ahb1;
+			};
+			hsitxch1 at dmac0 {
+				signal = "hsitxch1";
+				bus-interface-ahb1;
+			};
+			hsitxch2 at dmac0 {
+				signal = "hsitxch2";
+				bus-interface-ahb1;
+			};
+			hsitxch3 at dmac0 {
+				signal = "hsitxch3";
+				bus-interface-ahb1;
+			};
+			hsitxch4 at dmac0 {
+				signal = "hsitxch4";
+				bus-interface-ahb1;
+			};
+			hsitxch5 at dmac0 {
+				signal = "hsitxch5";
+				bus-interface-ahb1;
+			};
+			hsitxch6 at dmac0 {
+				signal = "hsitxch6";
+				bus-interface-ahb1;
+			};
+			hsitxch7 at dmac0 {
+				signal = "hsitxch7";
+				bus-interface-ahb1;
+			};
+		};
+		dmac1: dma-controller at 10150000 {
+			compatible = "arm,pl080", "arm,primecell";
+			reg = <0x10150000 0x1000>;
+			interrupt-parent = <&vica>;
+			interrupts = <13>;
+			clocks = <&hclkdma1>;
+			clock-names = "apb_pclk";
+			lli-bus-interface-ahb1;
+			lli-bus-interface-ahb2;
+			mem-bus-interface-ahb2;
+			memcpy-burst-size = <256>;
+			memcpy-bus-width = <32>;
+			#dma-cells = <1>;
+			/* Assignments for the 32 channels */
+			saa0 at dmac1 {
+				signal = "saa0";
+				bus-interface-ahb1;
+			};
+			saa1 at dmac1 {
+				signal = "saa1";
+				bus-interface-ahb1;
+			};
+			saa2 at dmac1 {
+				signal = "saa2";
+				bus-interface-ahb1;
+			};
+			saa3 at dmac1 {
+				signal = "saa3";
+				bus-interface-ahb1;
+			};
+			saa4 at dmac1 {
+				signal = "saa4";
+				bus-interface-ahb1;
+			};
+			saa5 at dmac1 {
+				signal = "saa5";
+				bus-interface-ahb1;
+			};
+			saa6 at dmac1 {
+				signal = "saa6";
+				bus-interface-ahb1;
+			};
+			saa7 at dmac1 {
+				signal = "saa7";
+				bus-interface-ahb1;
+			};
+			unused at dmac1 {
+				signal = "unused";
+				bus-interface-ahb1;
+			};
+			fir at dmac1 {
+				signal = "firdatxrx";
+				bus-interface-ahb1;
+			};
+			msp0rx at dmac1 {
+				signal = "msp0rx";
+				bus-interface-ahb1;
+			};
+			msp0tx at dmac1 {
+				signal = "msp0tx";
+				bus-interface-ahb1;
+			};
+			ssprx at dmac1 {
+				signal = "ssprx";
+				bus-interface-ahb1;
+			};
+			ssptx at dmac1 {
+				signal = "ssptx";
+				bus-interface-ahb1;
+			};
+			uart0rx at dmac1 {
+				signal = "uart0rx";
+				bus-interface-ahb1;
+			};
+			uart0tx at dmac1 {
+				signal = "uart0tx";
+				bus-interface-ahb1;
+			};
+			tdesin at dmac1 {
+				signal = "tdesin";
+				bus-interface-ahb1;
+			};
+			tdesout at dmac1 {
+				signal = "tdesout";
+				bus-interface-ahb1;
+			};
+			i2c1rxtx at dmac1 {
+				signal = "i2c1rxtx";
+				bus-interface-ahb1;
+			};
+			i2c0rxtx at dmac1 {
+				signal = "i2c0rxtx";
+				bus-interface-ahb1;
+			};
+			sha1 at dmac1 {
+				signal = "sha1";
+				bus-interface-ahb1;
+			};
+			sdirxtx at dmac1 {
+				signal = "sdirxtx";
+				bus-interface-ahb1;
+			};
+			uart1rxdmac1 {
+				signal = "uart1rx";
+				bus-interface-ahb1;
+			};
+			uart1tx at dmac1 {
+				signal = "uart1tx";
+				bus-interface-ahb1;
+			};
+			usbotg0 at dmac1 {
+				signal = "usbotg0";
+				bus-interface-ahb1;
+			};
+			usbotg1 at dmac1 {
+				signal = "usbotg1";
+				bus-interface-ahb1;
+			};
+			usbotg2 at dmac1 {
+				signal = "usbotg2";
+				bus-interface-ahb1;
+			};
+			usbotg3 at dmac1 {
+				signal = "usbotg3";
+				bus-interface-ahb1;
+			};
+			usbotg4 at dmac1 {
+				signal = "usbotg4";
+				bus-interface-ahb1;
+			};
+			usbotg5 at dmac1 {
+				signal = "usbotg5";
+				bus-interface-ahb1;
+			};
+			usbotg6 at dmac1 {
+				signal = "usbotg6";
+				bus-interface-ahb1;
+			};
+			usbotg7 at dmac1 {
+				signal = "usbotg7";
+				bus-interface-ahb1;
+			};
 		};
 	};
 };
-- 
1.9.3




More information about the linux-arm-kernel mailing list