Commit f30fb03d authored by Shawn Guo's avatar Shawn Guo

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: default avatarShawn Guo <shawn.guo@linaro.org>
Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
parent d8880a12
...@@ -3,17 +3,58 @@ ...@@ -3,17 +3,58 @@
Required properties: Required properties:
- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx" - compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx"
- reg : Should contain registers location and length - reg : Should contain registers location and length
- interrupts : Should contain the interrupt numbers of DMA channels.
If a channel is empty/reserved, 0 should be filled in place.
- #dma-cells : Must be <1>. The number cell specifies the channel ID.
- dma-channels : Number of channels supported by the DMA controller
Optional properties:
- interrupt-names : Name of DMA channel interrupts
Supported chips: Supported chips:
imx23, imx28. imx23, imx28.
Examples: Examples:
dma-apbh@80004000 {
dma_apbh: dma-apbh@80004000 {
compatible = "fsl,imx28-dma-apbh"; compatible = "fsl,imx28-dma-apbh";
reg = <0x80004000 2000>; reg = <0x80004000 0x2000>;
interrupts = <82 83 84 85
88 88 88 88
88 88 88 88
87 86 0 0>;
interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3",
"gpmi0", "gmpi1", "gpmi2", "gmpi3",
"gpmi4", "gmpi5", "gpmi6", "gmpi7",
"hsadc", "lcdif", "empty", "empty";
#dma-cells = <1>;
dma-channels = <16>;
}; };
dma-apbx@80024000 { dma_apbx: dma-apbx@80024000 {
compatible = "fsl,imx28-dma-apbx"; compatible = "fsl,imx28-dma-apbx";
reg = <0x80024000 2000>; reg = <0x80024000 0x2000>;
interrupts = <78 79 66 0
80 81 68 69
70 71 72 73
74 75 76 77>;
interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
"saif0", "saif1", "i2c0", "i2c1",
"auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
"auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
#dma-cells = <1>;
dma-channels = <16>;
};
DMA clients connected to the MXS DMA controller must use the format
described in the dma.txt file.
Examples:
auart0: serial@8006a000 {
compatible = "fsl,imx28-auart", "fsl,imx23-auart";
reg = <0x8006a000 0x2000>;
interrupts = <112>;
dmas = <&dma_apbx 8>, <&dma_apbx 9>;
dma-names = "rx", "tx";
}; };
...@@ -49,9 +49,15 @@ icoll: interrupt-controller@80000000 { ...@@ -49,9 +49,15 @@ icoll: interrupt-controller@80000000 {
reg = <0x80000000 0x2000>; reg = <0x80000000 0x2000>;
}; };
dma-apbh@80004000 { dma_apbh: dma-apbh@80004000 {
compatible = "fsl,imx23-dma-apbh"; compatible = "fsl,imx23-dma-apbh";
reg = <0x80004000 0x2000>; reg = <0x80004000 0x2000>;
interrupts = <0 14 20 0
13 13 13 13>;
interrupt-names = "empty", "ssp0", "ssp1", "empty",
"gpmi0", "gpmi1", "gpmi2", "gpmi3";
#dma-cells = <1>;
dma-channels = <8>;
clocks = <&clks 15>; clocks = <&clks 15>;
}; };
...@@ -70,6 +76,8 @@ gpmi-nand@8000c000 { ...@@ -70,6 +76,8 @@ gpmi-nand@8000c000 {
interrupt-names = "gpmi-dma", "bch"; interrupt-names = "gpmi-dma", "bch";
clocks = <&clks 34>; clocks = <&clks 34>;
clock-names = "gpmi_io"; clock-names = "gpmi_io";
dmas = <&dma_apbh 4>;
dma-names = "rx-tx";
fsl,gpmi-dma-channel = <4>; fsl,gpmi-dma-channel = <4>;
status = "disabled"; status = "disabled";
}; };
...@@ -78,6 +86,8 @@ ssp0: ssp@80010000 { ...@@ -78,6 +86,8 @@ ssp0: ssp@80010000 {
reg = <0x80010000 0x2000>; reg = <0x80010000 0x2000>;
interrupts = <15 14>; interrupts = <15 14>;
clocks = <&clks 33>; clocks = <&clks 33>;
dmas = <&dma_apbh 1>;
dma-names = "rx-tx";
fsl,ssp-dma-channel = <1>; fsl,ssp-dma-channel = <1>;
status = "disabled"; status = "disabled";
}; };
...@@ -305,9 +315,19 @@ emi@80020000 { ...@@ -305,9 +315,19 @@ emi@80020000 {
status = "disabled"; status = "disabled";
}; };
dma-apbx@80024000 { dma_apbx: dma-apbx@80024000 {
compatible = "fsl,imx23-dma-apbx"; compatible = "fsl,imx23-dma-apbx";
reg = <0x80024000 0x2000>; reg = <0x80024000 0x2000>;
interrupts = <7 5 9 26
19 0 25 23
60 58 9 0
0 0 0 0>;
interrupt-names = "audio-adc", "audio-dac", "spdif-tx", "i2c",
"saif0", "empty", "auart0-rx", "auart0-tx",
"auart1-rx", "auart1-tx", "saif1", "empty",
"empty", "empty", "empty", "empty";
#dma-cells = <1>;
dma-channels = <16>;
clocks = <&clks 16>; clocks = <&clks 16>;
}; };
...@@ -344,6 +364,8 @@ ssp1: ssp@80034000 { ...@@ -344,6 +364,8 @@ ssp1: ssp@80034000 {
reg = <0x80034000 0x2000>; reg = <0x80034000 0x2000>;
interrupts = <2 20>; interrupts = <2 20>;
clocks = <&clks 33>; clocks = <&clks 33>;
dmas = <&dma_apbh 2>;
dma-names = "rx-tx";
fsl,ssp-dma-channel = <2>; fsl,ssp-dma-channel = <2>;
status = "disabled"; status = "disabled";
}; };
...@@ -369,6 +391,8 @@ clks: clkctrl@80040000 { ...@@ -369,6 +391,8 @@ clks: clkctrl@80040000 {
saif0: saif@80042000 { saif0: saif@80042000 {
reg = <0x80042000 0x2000>; reg = <0x80042000 0x2000>;
dmas = <&dma_apbx 4>;
dma-names = "rx-tx";
status = "disabled"; status = "disabled";
}; };
...@@ -379,16 +403,22 @@ power@80044000 { ...@@ -379,16 +403,22 @@ power@80044000 {
saif1: saif@80046000 { saif1: saif@80046000 {
reg = <0x80046000 0x2000>; reg = <0x80046000 0x2000>;
dmas = <&dma_apbx 10>;
dma-names = "rx-tx";
status = "disabled"; status = "disabled";
}; };
audio-out@80048000 { audio-out@80048000 {
reg = <0x80048000 0x2000>; reg = <0x80048000 0x2000>;
dmas = <&dma_apbx 1>;
dma-names = "tx";
status = "disabled"; status = "disabled";
}; };
audio-in@8004c000 { audio-in@8004c000 {
reg = <0x8004c000 0x2000>; reg = <0x8004c000 0x2000>;
dmas = <&dma_apbx 0>;
dma-names = "rx";
status = "disabled"; status = "disabled";
}; };
...@@ -401,11 +431,15 @@ lradc@80050000 { ...@@ -401,11 +431,15 @@ lradc@80050000 {
spdif@80054000 { spdif@80054000 {
reg = <0x80054000 2000>; reg = <0x80054000 2000>;
dmas = <&dma_apbx 2>;
dma-names = "tx";
status = "disabled"; status = "disabled";
}; };
i2c@80058000 { i2c@80058000 {
reg = <0x80058000 0x2000>; reg = <0x80058000 0x2000>;
dmas = <&dma_apbx 3>;
dma-names = "rx-tx";
status = "disabled"; status = "disabled";
}; };
...@@ -436,6 +470,8 @@ auart0: serial@8006c000 { ...@@ -436,6 +470,8 @@ auart0: serial@8006c000 {
reg = <0x8006c000 0x2000>; reg = <0x8006c000 0x2000>;
interrupts = <24 25 23>; interrupts = <24 25 23>;
clocks = <&clks 32>; clocks = <&clks 32>;
dmas = <&dma_apbx 6>, <&dma_apbx 7>;
dma-names = "rx", "tx";
status = "disabled"; status = "disabled";
}; };
...@@ -444,6 +480,8 @@ auart1: serial@8006e000 { ...@@ -444,6 +480,8 @@ auart1: serial@8006e000 {
reg = <0x8006e000 0x2000>; reg = <0x8006e000 0x2000>;
interrupts = <59 60 58>; interrupts = <59 60 58>;
clocks = <&clks 32>; clocks = <&clks 32>;
dmas = <&dma_apbx 8>, <&dma_apbx 9>;
dma-names = "rx", "tx";
status = "disabled"; status = "disabled";
}; };
......
...@@ -61,12 +61,24 @@ icoll: interrupt-controller@80000000 { ...@@ -61,12 +61,24 @@ icoll: interrupt-controller@80000000 {
hsadc@80002000 { hsadc@80002000 {
reg = <0x80002000 0x2000>; reg = <0x80002000 0x2000>;
interrupts = <13 87>; interrupts = <13 87>;
dmas = <&dma_apbh 12>;
dma-names = "rx";
status = "disabled"; status = "disabled";
}; };
dma-apbh@80004000 { dma_apbh: dma-apbh@80004000 {
compatible = "fsl,imx28-dma-apbh"; compatible = "fsl,imx28-dma-apbh";
reg = <0x80004000 0x2000>; reg = <0x80004000 0x2000>;
interrupts = <82 83 84 85
88 88 88 88
88 88 88 88
87 86 0 0>;
interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3",
"gpmi0", "gmpi1", "gpmi2", "gmpi3",
"gpmi4", "gmpi5", "gpmi6", "gmpi7",
"hsadc", "lcdif", "empty", "empty";
#dma-cells = <1>;
dma-channels = <16>;
clocks = <&clks 25>; clocks = <&clks 25>;
}; };
...@@ -86,6 +98,8 @@ gpmi-nand@8000c000 { ...@@ -86,6 +98,8 @@ gpmi-nand@8000c000 {
interrupt-names = "gpmi-dma", "bch"; interrupt-names = "gpmi-dma", "bch";
clocks = <&clks 50>; clocks = <&clks 50>;
clock-names = "gpmi_io"; clock-names = "gpmi_io";
dmas = <&dma_apbh 4>;
dma-names = "rx-tx";
fsl,gpmi-dma-channel = <4>; fsl,gpmi-dma-channel = <4>;
status = "disabled"; status = "disabled";
}; };
...@@ -96,6 +110,8 @@ ssp0: ssp@80010000 { ...@@ -96,6 +110,8 @@ ssp0: ssp@80010000 {
reg = <0x80010000 0x2000>; reg = <0x80010000 0x2000>;
interrupts = <96 82>; interrupts = <96 82>;
clocks = <&clks 46>; clocks = <&clks 46>;
dmas = <&dma_apbh 0>;
dma-names = "rx-tx";
fsl,ssp-dma-channel = <0>; fsl,ssp-dma-channel = <0>;
status = "disabled"; status = "disabled";
}; };
...@@ -106,6 +122,8 @@ ssp1: ssp@80012000 { ...@@ -106,6 +122,8 @@ ssp1: ssp@80012000 {
reg = <0x80012000 0x2000>; reg = <0x80012000 0x2000>;
interrupts = <97 83>; interrupts = <97 83>;
clocks = <&clks 47>; clocks = <&clks 47>;
dmas = <&dma_apbh 1>;
dma-names = "rx-tx";
fsl,ssp-dma-channel = <1>; fsl,ssp-dma-channel = <1>;
status = "disabled"; status = "disabled";
}; };
...@@ -116,6 +134,8 @@ ssp2: ssp@80014000 { ...@@ -116,6 +134,8 @@ ssp2: ssp@80014000 {
reg = <0x80014000 0x2000>; reg = <0x80014000 0x2000>;
interrupts = <98 84>; interrupts = <98 84>;
clocks = <&clks 48>; clocks = <&clks 48>;
dmas = <&dma_apbh 2>;
dma-names = "rx-tx";
fsl,ssp-dma-channel = <2>; fsl,ssp-dma-channel = <2>;
status = "disabled"; status = "disabled";
}; };
...@@ -126,6 +146,8 @@ ssp3: ssp@80016000 { ...@@ -126,6 +146,8 @@ ssp3: ssp@80016000 {
reg = <0x80016000 0x2000>; reg = <0x80016000 0x2000>;
interrupts = <99 85>; interrupts = <99 85>;
clocks = <&clks 49>; clocks = <&clks 49>;
dmas = <&dma_apbh 3>;
dma-names = "rx-tx";
fsl,ssp-dma-channel = <3>; fsl,ssp-dma-channel = <3>;
status = "disabled"; status = "disabled";
}; };
...@@ -658,9 +680,19 @@ etm@80022000 { ...@@ -658,9 +680,19 @@ etm@80022000 {
status = "disabled"; status = "disabled";
}; };
dma-apbx@80024000 { dma_apbx: dma-apbx@80024000 {
compatible = "fsl,imx28-dma-apbx"; compatible = "fsl,imx28-dma-apbx";
reg = <0x80024000 0x2000>; reg = <0x80024000 0x2000>;
interrupts = <78 79 66 0
80 81 68 69
70 71 72 73
74 75 76 77>;
interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
"saif0", "saif1", "i2c0", "i2c1",
"auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
"auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
#dma-cells = <1>;
dma-channels = <16>;
clocks = <&clks 26>; clocks = <&clks 26>;
}; };
...@@ -692,6 +724,8 @@ lcdif@80030000 { ...@@ -692,6 +724,8 @@ lcdif@80030000 {
reg = <0x80030000 0x2000>; reg = <0x80030000 0x2000>;
interrupts = <38 86>; interrupts = <38 86>;
clocks = <&clks 55>; clocks = <&clks 55>;
dmas = <&dma_apbh 13>;
dma-names = "rx";
status = "disabled"; status = "disabled";
}; };
...@@ -767,6 +801,8 @@ saif0: saif@80042000 { ...@@ -767,6 +801,8 @@ saif0: saif@80042000 {
reg = <0x80042000 0x2000>; reg = <0x80042000 0x2000>;
interrupts = <59 80>; interrupts = <59 80>;
clocks = <&clks 53>; clocks = <&clks 53>;
dmas = <&dma_apbx 4>;
dma-names = "rx-tx";
fsl,saif-dma-channel = <4>; fsl,saif-dma-channel = <4>;
status = "disabled"; status = "disabled";
}; };
...@@ -781,6 +817,8 @@ saif1: saif@80046000 { ...@@ -781,6 +817,8 @@ saif1: saif@80046000 {
reg = <0x80046000 0x2000>; reg = <0x80046000 0x2000>;
interrupts = <58 81>; interrupts = <58 81>;
clocks = <&clks 54>; clocks = <&clks 54>;
dmas = <&dma_apbx 5>;
dma-names = "rx-tx";
fsl,saif-dma-channel = <5>; fsl,saif-dma-channel = <5>;
status = "disabled"; status = "disabled";
}; };
...@@ -796,6 +834,8 @@ lradc@80050000 { ...@@ -796,6 +834,8 @@ lradc@80050000 {
spdif@80054000 { spdif@80054000 {
reg = <0x80054000 0x2000>; reg = <0x80054000 0x2000>;
interrupts = <45 66>; interrupts = <45 66>;
dmas = <&dma_apbx 2>;
dma-names = "tx";
status = "disabled"; status = "disabled";
}; };
...@@ -812,6 +852,8 @@ i2c0: i2c@80058000 { ...@@ -812,6 +852,8 @@ i2c0: i2c@80058000 {
reg = <0x80058000 0x2000>; reg = <0x80058000 0x2000>;
interrupts = <111 68>; interrupts = <111 68>;
clock-frequency = <100000>; clock-frequency = <100000>;
dmas = <&dma_apbx 6>;
dma-names = "rx-tx";
fsl,i2c-dma-channel = <6>; fsl,i2c-dma-channel = <6>;
status = "disabled"; status = "disabled";
}; };
...@@ -823,6 +865,8 @@ i2c1: i2c@8005a000 { ...@@ -823,6 +865,8 @@ i2c1: i2c@8005a000 {
reg = <0x8005a000 0x2000>; reg = <0x8005a000 0x2000>;
interrupts = <110 69>; interrupts = <110 69>;
clock-frequency = <100000>; clock-frequency = <100000>;
dmas = <&dma_apbx 7>;
dma-names = "rx-tx";
fsl,i2c-dma-channel = <7>; fsl,i2c-dma-channel = <7>;
status = "disabled"; status = "disabled";
}; };
...@@ -847,6 +891,8 @@ auart0: serial@8006a000 { ...@@ -847,6 +891,8 @@ auart0: serial@8006a000 {
compatible = "fsl,imx28-auart", "fsl,imx23-auart"; compatible = "fsl,imx28-auart", "fsl,imx23-auart";
reg = <0x8006a000 0x2000>; reg = <0x8006a000 0x2000>;
interrupts = <112 70 71>; interrupts = <112 70 71>;
dmas = <&dma_apbx 8>, <&dma_apbx 9>;
dma-names = "rx", "tx";
fsl,auart-dma-channel = <8 9>; fsl,auart-dma-channel = <8 9>;
clocks = <&clks 45>; clocks = <&clks 45>;
status = "disabled"; status = "disabled";
...@@ -856,6 +902,8 @@ auart1: serial@8006c000 { ...@@ -856,6 +902,8 @@ auart1: serial@8006c000 {
compatible = "fsl,imx28-auart", "fsl,imx23-auart"; compatible = "fsl,imx28-auart", "fsl,imx23-auart";
reg = <0x8006c000 0x2000>; reg = <0x8006c000 0x2000>;
interrupts = <113 72 73>; interrupts = <113 72 73>;
dmas = <&dma_apbx 10>, <&dma_apbx 11>;
dma-names = "rx", "tx";
clocks = <&clks 45>; clocks = <&clks 45>;
status = "disabled"; status = "disabled";
}; };
...@@ -864,6 +912,8 @@ auart2: serial@8006e000 { ...@@ -864,6 +912,8 @@ auart2: serial@8006e000 {
compatible = "fsl,imx28-auart", "fsl,imx23-auart"; compatible = "fsl,imx28-auart", "fsl,imx23-auart";
reg = <0x8006e000 0x2000>; reg = <0x8006e000 0x2000>;
interrupts = <114 74 75>; interrupts = <114 74 75>;
dmas = <&dma_apbx 12>, <&dma_apbx 13>;
dma-names = "rx", "tx";
clocks = <&clks 45>; clocks = <&clks 45>;
status = "disabled"; status = "disabled";
}; };
...@@ -872,6 +922,8 @@ auart3: serial@80070000 { ...@@ -872,6 +922,8 @@ auart3: serial@80070000 {
compatible = "fsl,imx28-auart", "fsl,imx23-auart"; compatible = "fsl,imx28-auart", "fsl,imx23-auart";
reg = <0x80070000 0x2000>; reg = <0x80070000 0x2000>;
interrupts = <115 76 77>; interrupts = <115 76 77>;
dmas = <&dma_apbx 14>, <&dma_apbx 15>;
dma-names = "rx", "tx";
clocks = <&clks 45>; clocks = <&clks 45>;
status = "disabled"; status = "disabled";
}; };
...@@ -880,6 +932,8 @@ auart4: serial@80072000 { ...@@ -880,6 +932,8 @@ auart4: serial@80072000 {
compatible = "fsl,imx28-auart", "fsl,imx23-auart"; compatible = "fsl,imx28-auart", "fsl,imx23-auart";
reg = <0x80072000 0x2000>; reg = <0x80072000 0x2000>;
interrupts = <116 78 79>; interrupts = <116 78 79>;
dmas = <&dma_apbx 0>, <&dma_apbx 1>;
dma-names = "rx", "tx";
clocks = <&clks 45>; clocks = <&clks 45>;
status = "disabled"; status = "disabled";
}; };
......
...@@ -65,9 +65,13 @@ soc { ...@@ -65,9 +65,13 @@ soc {
interrupt-parent = <&intc>; interrupt-parent = <&intc>;
ranges; ranges;
dma-apbh@00110000 { dma_apbh: dma-apbh@00110000 {
compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh"; compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh";
reg = <0x00110000 0x2000>; reg = <0x00110000 0x2000>;
interrupts = <0 13 0x04>, <0 13 0x04>, <0 13 0x04>, <0 13 0x04>;
interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3";
#dma-cells = <1>;
dma-channels = <4>;
clocks = <&clks 106>; clocks = <&clks 106>;
}; };
...@@ -83,6 +87,8 @@ gpmi: gpmi-nand@00112000 { ...@@ -83,6 +87,8 @@ gpmi: gpmi-nand@00112000 {
<&clks 150>, <&clks 149>; <&clks 150>, <&clks 149>;
clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch", clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch",
"gpmi_bch_apb", "per1_bch"; "gpmi_bch_apb", "per1_bch";
dmas = <&dma_apbh 0>;
dma-names = "rx-tx";
fsl,gpmi-dma-channel = <0>; fsl,gpmi-dma-channel = <0>;
status = "disabled"; status = "disabled";
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment