aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2013-02-25 08:56:56 -0500
committerShawn Guo <shawn.guo@linaro.org>2013-04-04 09:22:43 -0400
commitf30fb03d4d3abe2da86918a92df0964cdf933e82 (patch)
tree48455ddf715e6f56afdaaee42c58a6f6a1a87a90
parentd8880a126d96ba0f9e0191826431650c24711d47 (diff)
ARM: dts: add generic DMA device tree binding for mxs-dma
Add generic DMA device tree binding for mxs-dma. The changes include: * Add channel interrupts into DMA controller nodes * Add properties '#dma-cells' and 'dma-channels' for DMA controller nodes * And properties 'dmas' and 'dma-names' for DMA client nodes * Update mxs-dma device tree binding doc Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r--Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt49
-rw-r--r--arch/arm/boot/dts/imx23.dtsi42
-rw-r--r--arch/arm/boot/dts/imx28.dtsi58
-rw-r--r--arch/arm/boot/dts/imx6qdl.dtsi8
4 files changed, 148 insertions, 9 deletions
diff --git a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
index ded0398d3bdc..a4873e5e3e36 100644
--- a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
+++ b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
@@ -3,17 +3,58 @@
3Required properties: 3Required properties:
4- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx" 4- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx"
5- reg : Should contain registers location and length 5- reg : Should contain registers location and length
6- interrupts : Should contain the interrupt numbers of DMA channels.
7 If a channel is empty/reserved, 0 should be filled in place.
8- #dma-cells : Must be <1>. The number cell specifies the channel ID.
9- dma-channels : Number of channels supported by the DMA controller
10
11Optional properties:
12- interrupt-names : Name of DMA channel interrupts
6 13
7Supported chips: 14Supported chips:
8imx23, imx28. 15imx23, imx28.
9 16
10Examples: 17Examples:
11dma-apbh@80004000 { 18
19dma_apbh: dma-apbh@80004000 {
12 compatible = "fsl,imx28-dma-apbh"; 20 compatible = "fsl,imx28-dma-apbh";
13 reg = <0x80004000 2000>; 21 reg = <0x80004000 0x2000>;
22 interrupts = <82 83 84 85
23 88 88 88 88
24 88 88 88 88
25 87 86 0 0>;
26 interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3",
27 "gpmi0", "gmpi1", "gpmi2", "gmpi3",
28 "gpmi4", "gmpi5", "gpmi6", "gmpi7",
29 "hsadc", "lcdif", "empty", "empty";
30 #dma-cells = <1>;
31 dma-channels = <16>;
14}; 32};
15 33
16dma-apbx@80024000 { 34dma_apbx: dma-apbx@80024000 {
17 compatible = "fsl,imx28-dma-apbx"; 35 compatible = "fsl,imx28-dma-apbx";
18 reg = <0x80024000 2000>; 36 reg = <0x80024000 0x2000>;
37 interrupts = <78 79 66 0
38 80 81 68 69
39 70 71 72 73
40 74 75 76 77>;
41 interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
42 "saif0", "saif1", "i2c0", "i2c1",
43 "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
44 "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
45 #dma-cells = <1>;
46 dma-channels = <16>;
47};
48
49DMA clients connected to the MXS DMA controller must use the format
50described in the dma.txt file.
51
52Examples:
53
54auart0: serial@8006a000 {
55 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
56 reg = <0x8006a000 0x2000>;
57 interrupts = <112>;
58 dmas = <&dma_apbx 8>, <&dma_apbx 9>;
59 dma-names = "rx", "tx";
19}; 60};
diff --git a/arch/arm/boot/dts/imx23.dtsi b/arch/arm/boot/dts/imx23.dtsi
index ad2d79324cd3..73fd7d0887b5 100644
--- a/arch/arm/boot/dts/imx23.dtsi
+++ b/arch/arm/boot/dts/imx23.dtsi
@@ -49,9 +49,15 @@
49 reg = <0x80000000 0x2000>; 49 reg = <0x80000000 0x2000>;
50 }; 50 };
51 51
52 dma-apbh@80004000 { 52 dma_apbh: dma-apbh@80004000 {
53 compatible = "fsl,imx23-dma-apbh"; 53 compatible = "fsl,imx23-dma-apbh";
54 reg = <0x80004000 0x2000>; 54 reg = <0x80004000 0x2000>;
55 interrupts = <0 14 20 0
56 13 13 13 13>;
57 interrupt-names = "empty", "ssp0", "ssp1", "empty",
58 "gpmi0", "gpmi1", "gpmi2", "gpmi3";
59 #dma-cells = <1>;
60 dma-channels = <8>;
55 clocks = <&clks 15>; 61 clocks = <&clks 15>;
56 }; 62 };
57 63
@@ -70,6 +76,8 @@
70 interrupt-names = "gpmi-dma", "bch"; 76 interrupt-names = "gpmi-dma", "bch";
71 clocks = <&clks 34>; 77 clocks = <&clks 34>;
72 clock-names = "gpmi_io"; 78 clock-names = "gpmi_io";
79 dmas = <&dma_apbh 4>;
80 dma-names = "rx-tx";
73 fsl,gpmi-dma-channel = <4>; 81 fsl,gpmi-dma-channel = <4>;
74 status = "disabled"; 82 status = "disabled";
75 }; 83 };
@@ -78,6 +86,8 @@
78 reg = <0x80010000 0x2000>; 86 reg = <0x80010000 0x2000>;
79 interrupts = <15 14>; 87 interrupts = <15 14>;
80 clocks = <&clks 33>; 88 clocks = <&clks 33>;
89 dmas = <&dma_apbh 1>;
90 dma-names = "rx-tx";
81 fsl,ssp-dma-channel = <1>; 91 fsl,ssp-dma-channel = <1>;
82 status = "disabled"; 92 status = "disabled";
83 }; 93 };
@@ -305,9 +315,19 @@
305 status = "disabled"; 315 status = "disabled";
306 }; 316 };
307 317
308 dma-apbx@80024000 { 318 dma_apbx: dma-apbx@80024000 {
309 compatible = "fsl,imx23-dma-apbx"; 319 compatible = "fsl,imx23-dma-apbx";
310 reg = <0x80024000 0x2000>; 320 reg = <0x80024000 0x2000>;
321 interrupts = <7 5 9 26
322 19 0 25 23
323 60 58 9 0
324 0 0 0 0>;
325 interrupt-names = "audio-adc", "audio-dac", "spdif-tx", "i2c",
326 "saif0", "empty", "auart0-rx", "auart0-tx",
327 "auart1-rx", "auart1-tx", "saif1", "empty",
328 "empty", "empty", "empty", "empty";
329 #dma-cells = <1>;
330 dma-channels = <16>;
311 clocks = <&clks 16>; 331 clocks = <&clks 16>;
312 }; 332 };
313 333
@@ -344,6 +364,8 @@
344 reg = <0x80034000 0x2000>; 364 reg = <0x80034000 0x2000>;
345 interrupts = <2 20>; 365 interrupts = <2 20>;
346 clocks = <&clks 33>; 366 clocks = <&clks 33>;
367 dmas = <&dma_apbh 2>;
368 dma-names = "rx-tx";
347 fsl,ssp-dma-channel = <2>; 369 fsl,ssp-dma-channel = <2>;
348 status = "disabled"; 370 status = "disabled";
349 }; 371 };
@@ -369,6 +391,8 @@
369 391
370 saif0: saif@80042000 { 392 saif0: saif@80042000 {
371 reg = <0x80042000 0x2000>; 393 reg = <0x80042000 0x2000>;
394 dmas = <&dma_apbx 4>;
395 dma-names = "rx-tx";
372 status = "disabled"; 396 status = "disabled";
373 }; 397 };
374 398
@@ -379,16 +403,22 @@
379 403
380 saif1: saif@80046000 { 404 saif1: saif@80046000 {
381 reg = <0x80046000 0x2000>; 405 reg = <0x80046000 0x2000>;
406 dmas = <&dma_apbx 10>;
407 dma-names = "rx-tx";
382 status = "disabled"; 408 status = "disabled";
383 }; 409 };
384 410
385 audio-out@80048000 { 411 audio-out@80048000 {
386 reg = <0x80048000 0x2000>; 412 reg = <0x80048000 0x2000>;
413 dmas = <&dma_apbx 1>;
414 dma-names = "tx";
387 status = "disabled"; 415 status = "disabled";
388 }; 416 };
389 417
390 audio-in@8004c000 { 418 audio-in@8004c000 {
391 reg = <0x8004c000 0x2000>; 419 reg = <0x8004c000 0x2000>;
420 dmas = <&dma_apbx 0>;
421 dma-names = "rx";
392 status = "disabled"; 422 status = "disabled";
393 }; 423 };
394 424
@@ -401,11 +431,15 @@
401 431
402 spdif@80054000 { 432 spdif@80054000 {
403 reg = <0x80054000 2000>; 433 reg = <0x80054000 2000>;
434 dmas = <&dma_apbx 2>;
435 dma-names = "tx";
404 status = "disabled"; 436 status = "disabled";
405 }; 437 };
406 438
407 i2c@80058000 { 439 i2c@80058000 {
408 reg = <0x80058000 0x2000>; 440 reg = <0x80058000 0x2000>;
441 dmas = <&dma_apbx 3>;
442 dma-names = "rx-tx";
409 status = "disabled"; 443 status = "disabled";
410 }; 444 };
411 445
@@ -436,6 +470,8 @@
436 reg = <0x8006c000 0x2000>; 470 reg = <0x8006c000 0x2000>;
437 interrupts = <24 25 23>; 471 interrupts = <24 25 23>;
438 clocks = <&clks 32>; 472 clocks = <&clks 32>;
473 dmas = <&dma_apbx 6>, <&dma_apbx 7>;
474 dma-names = "rx", "tx";
439 status = "disabled"; 475 status = "disabled";
440 }; 476 };
441 477
@@ -444,6 +480,8 @@
444 reg = <0x8006e000 0x2000>; 480 reg = <0x8006e000 0x2000>;
445 interrupts = <59 60 58>; 481 interrupts = <59 60 58>;
446 clocks = <&clks 32>; 482 clocks = <&clks 32>;
483 dmas = <&dma_apbx 8>, <&dma_apbx 9>;
484 dma-names = "rx", "tx";
447 status = "disabled"; 485 status = "disabled";
448 }; 486 };
449 487
diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi
index 9a7adaa4e4fb..600f7cb51f3e 100644
--- a/arch/arm/boot/dts/imx28.dtsi
+++ b/arch/arm/boot/dts/imx28.dtsi
@@ -61,12 +61,24 @@
61 hsadc@80002000 { 61 hsadc@80002000 {
62 reg = <0x80002000 0x2000>; 62 reg = <0x80002000 0x2000>;
63 interrupts = <13 87>; 63 interrupts = <13 87>;
64 dmas = <&dma_apbh 12>;
65 dma-names = "rx";
64 status = "disabled"; 66 status = "disabled";
65 }; 67 };
66 68
67 dma-apbh@80004000 { 69 dma_apbh: dma-apbh@80004000 {
68 compatible = "fsl,imx28-dma-apbh"; 70 compatible = "fsl,imx28-dma-apbh";
69 reg = <0x80004000 0x2000>; 71 reg = <0x80004000 0x2000>;
72 interrupts = <82 83 84 85
73 88 88 88 88
74 88 88 88 88
75 87 86 0 0>;
76 interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3",
77 "gpmi0", "gmpi1", "gpmi2", "gmpi3",
78 "gpmi4", "gmpi5", "gpmi6", "gmpi7",
79 "hsadc", "lcdif", "empty", "empty";
80 #dma-cells = <1>;
81 dma-channels = <16>;
70 clocks = <&clks 25>; 82 clocks = <&clks 25>;
71 }; 83 };
72 84
@@ -86,6 +98,8 @@
86 interrupt-names = "gpmi-dma", "bch"; 98 interrupt-names = "gpmi-dma", "bch";
87 clocks = <&clks 50>; 99 clocks = <&clks 50>;
88 clock-names = "gpmi_io"; 100 clock-names = "gpmi_io";
101 dmas = <&dma_apbh 4>;
102 dma-names = "rx-tx";
89 fsl,gpmi-dma-channel = <4>; 103 fsl,gpmi-dma-channel = <4>;
90 status = "disabled"; 104 status = "disabled";
91 }; 105 };
@@ -96,6 +110,8 @@
96 reg = <0x80010000 0x2000>; 110 reg = <0x80010000 0x2000>;
97 interrupts = <96 82>; 111 interrupts = <96 82>;
98 clocks = <&clks 46>; 112 clocks = <&clks 46>;
113 dmas = <&dma_apbh 0>;
114 dma-names = "rx-tx";
99 fsl,ssp-dma-channel = <0>; 115 fsl,ssp-dma-channel = <0>;
100 status = "disabled"; 116 status = "disabled";
101 }; 117 };
@@ -106,6 +122,8 @@
106 reg = <0x80012000 0x2000>; 122 reg = <0x80012000 0x2000>;
107 interrupts = <97 83>; 123 interrupts = <97 83>;
108 clocks = <&clks 47>; 124 clocks = <&clks 47>;
125 dmas = <&dma_apbh 1>;
126 dma-names = "rx-tx";
109 fsl,ssp-dma-channel = <1>; 127 fsl,ssp-dma-channel = <1>;
110 status = "disabled"; 128 status = "disabled";
111 }; 129 };
@@ -116,6 +134,8 @@
116 reg = <0x80014000 0x2000>; 134 reg = <0x80014000 0x2000>;
117 interrupts = <98 84>; 135 interrupts = <98 84>;
118 clocks = <&clks 48>; 136 clocks = <&clks 48>;
137 dmas = <&dma_apbh 2>;
138 dma-names = "rx-tx";
119 fsl,ssp-dma-channel = <2>; 139 fsl,ssp-dma-channel = <2>;
120 status = "disabled"; 140 status = "disabled";
121 }; 141 };
@@ -126,6 +146,8 @@
126 reg = <0x80016000 0x2000>; 146 reg = <0x80016000 0x2000>;
127 interrupts = <99 85>; 147 interrupts = <99 85>;
128 clocks = <&clks 49>; 148 clocks = <&clks 49>;
149 dmas = <&dma_apbh 3>;
150 dma-names = "rx-tx";
129 fsl,ssp-dma-channel = <3>; 151 fsl,ssp-dma-channel = <3>;
130 status = "disabled"; 152 status = "disabled";
131 }; 153 };
@@ -658,9 +680,19 @@
658 status = "disabled"; 680 status = "disabled";
659 }; 681 };
660 682
661 dma-apbx@80024000 { 683 dma_apbx: dma-apbx@80024000 {
662 compatible = "fsl,imx28-dma-apbx"; 684 compatible = "fsl,imx28-dma-apbx";
663 reg = <0x80024000 0x2000>; 685 reg = <0x80024000 0x2000>;
686 interrupts = <78 79 66 0
687 80 81 68 69
688 70 71 72 73
689 74 75 76 77>;
690 interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
691 "saif0", "saif1", "i2c0", "i2c1",
692 "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
693 "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
694 #dma-cells = <1>;
695 dma-channels = <16>;
664 clocks = <&clks 26>; 696 clocks = <&clks 26>;
665 }; 697 };
666 698
@@ -692,6 +724,8 @@
692 reg = <0x80030000 0x2000>; 724 reg = <0x80030000 0x2000>;
693 interrupts = <38 86>; 725 interrupts = <38 86>;
694 clocks = <&clks 55>; 726 clocks = <&clks 55>;
727 dmas = <&dma_apbh 13>;
728 dma-names = "rx";
695 status = "disabled"; 729 status = "disabled";
696 }; 730 };
697 731
@@ -767,6 +801,8 @@
767 reg = <0x80042000 0x2000>; 801 reg = <0x80042000 0x2000>;
768 interrupts = <59 80>; 802 interrupts = <59 80>;
769 clocks = <&clks 53>; 803 clocks = <&clks 53>;
804 dmas = <&dma_apbx 4>;
805 dma-names = "rx-tx";
770 fsl,saif-dma-channel = <4>; 806 fsl,saif-dma-channel = <4>;
771 status = "disabled"; 807 status = "disabled";
772 }; 808 };
@@ -781,6 +817,8 @@
781 reg = <0x80046000 0x2000>; 817 reg = <0x80046000 0x2000>;
782 interrupts = <58 81>; 818 interrupts = <58 81>;
783 clocks = <&clks 54>; 819 clocks = <&clks 54>;
820 dmas = <&dma_apbx 5>;
821 dma-names = "rx-tx";
784 fsl,saif-dma-channel = <5>; 822 fsl,saif-dma-channel = <5>;
785 status = "disabled"; 823 status = "disabled";
786 }; 824 };
@@ -796,6 +834,8 @@
796 spdif@80054000 { 834 spdif@80054000 {
797 reg = <0x80054000 0x2000>; 835 reg = <0x80054000 0x2000>;
798 interrupts = <45 66>; 836 interrupts = <45 66>;
837 dmas = <&dma_apbx 2>;
838 dma-names = "tx";
799 status = "disabled"; 839 status = "disabled";
800 }; 840 };
801 841
@@ -812,6 +852,8 @@
812 reg = <0x80058000 0x2000>; 852 reg = <0x80058000 0x2000>;
813 interrupts = <111 68>; 853 interrupts = <111 68>;
814 clock-frequency = <100000>; 854 clock-frequency = <100000>;
855 dmas = <&dma_apbx 6>;
856 dma-names = "rx-tx";
815 fsl,i2c-dma-channel = <6>; 857 fsl,i2c-dma-channel = <6>;
816 status = "disabled"; 858 status = "disabled";
817 }; 859 };
@@ -823,6 +865,8 @@
823 reg = <0x8005a000 0x2000>; 865 reg = <0x8005a000 0x2000>;
824 interrupts = <110 69>; 866 interrupts = <110 69>;
825 clock-frequency = <100000>; 867 clock-frequency = <100000>;
868 dmas = <&dma_apbx 7>;
869 dma-names = "rx-tx";
826 fsl,i2c-dma-channel = <7>; 870 fsl,i2c-dma-channel = <7>;
827 status = "disabled"; 871 status = "disabled";
828 }; 872 };
@@ -847,6 +891,8 @@
847 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 891 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
848 reg = <0x8006a000 0x2000>; 892 reg = <0x8006a000 0x2000>;
849 interrupts = <112 70 71>; 893 interrupts = <112 70 71>;
894 dmas = <&dma_apbx 8>, <&dma_apbx 9>;
895 dma-names = "rx", "tx";
850 fsl,auart-dma-channel = <8 9>; 896 fsl,auart-dma-channel = <8 9>;
851 clocks = <&clks 45>; 897 clocks = <&clks 45>;
852 status = "disabled"; 898 status = "disabled";
@@ -856,6 +902,8 @@
856 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 902 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
857 reg = <0x8006c000 0x2000>; 903 reg = <0x8006c000 0x2000>;
858 interrupts = <113 72 73>; 904 interrupts = <113 72 73>;
905 dmas = <&dma_apbx 10>, <&dma_apbx 11>;
906 dma-names = "rx", "tx";
859 clocks = <&clks 45>; 907 clocks = <&clks 45>;
860 status = "disabled"; 908 status = "disabled";
861 }; 909 };
@@ -864,6 +912,8 @@
864 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 912 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
865 reg = <0x8006e000 0x2000>; 913 reg = <0x8006e000 0x2000>;
866 interrupts = <114 74 75>; 914 interrupts = <114 74 75>;
915 dmas = <&dma_apbx 12>, <&dma_apbx 13>;
916 dma-names = "rx", "tx";
867 clocks = <&clks 45>; 917 clocks = <&clks 45>;
868 status = "disabled"; 918 status = "disabled";
869 }; 919 };
@@ -872,6 +922,8 @@
872 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 922 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
873 reg = <0x80070000 0x2000>; 923 reg = <0x80070000 0x2000>;
874 interrupts = <115 76 77>; 924 interrupts = <115 76 77>;
925 dmas = <&dma_apbx 14>, <&dma_apbx 15>;
926 dma-names = "rx", "tx";
875 clocks = <&clks 45>; 927 clocks = <&clks 45>;
876 status = "disabled"; 928 status = "disabled";
877 }; 929 };
@@ -880,6 +932,8 @@
880 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 932 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
881 reg = <0x80072000 0x2000>; 933 reg = <0x80072000 0x2000>;
882 interrupts = <116 78 79>; 934 interrupts = <116 78 79>;
935 dmas = <&dma_apbx 0>, <&dma_apbx 1>;
936 dma-names = "rx", "tx";
883 clocks = <&clks 45>; 937 clocks = <&clks 45>;
884 status = "disabled"; 938 status = "disabled";
885 }; 939 };
diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
index 06ec460b4581..59e970f74e8f 100644
--- a/arch/arm/boot/dts/imx6qdl.dtsi
+++ b/arch/arm/boot/dts/imx6qdl.dtsi
@@ -65,9 +65,13 @@
65 interrupt-parent = <&intc>; 65 interrupt-parent = <&intc>;
66 ranges; 66 ranges;
67 67
68 dma-apbh@00110000 { 68 dma_apbh: dma-apbh@00110000 {
69 compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh"; 69 compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh";
70 reg = <0x00110000 0x2000>; 70 reg = <0x00110000 0x2000>;
71 interrupts = <0 13 0x04>, <0 13 0x04>, <0 13 0x04>, <0 13 0x04>;
72 interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3";
73 #dma-cells = <1>;
74 dma-channels = <4>;
71 clocks = <&clks 106>; 75 clocks = <&clks 106>;
72 }; 76 };
73 77
@@ -83,6 +87,8 @@
83 <&clks 150>, <&clks 149>; 87 <&clks 150>, <&clks 149>;
84 clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch", 88 clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch",
85 "gpmi_bch_apb", "per1_bch"; 89 "gpmi_bch_apb", "per1_bch";
90 dmas = <&dma_apbh 0>;
91 dma-names = "rx-tx";
86 fsl,gpmi-dma-channel = <0>; 92 fsl,gpmi-dma-channel = <0>;
87 status = "disabled"; 93 status = "disabled";
88 }; 94 };