Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

Shawn Guo f30fb03d d8880a12

+148 -9
+45 -4
Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
··· 3 3 Required properties: 4 4 - compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx" 5 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 + 11 + Optional properties: 12 + - interrupt-names : Name of DMA channel interrupts 6 13 7 14 Supported chips: 8 15 imx23, imx28. 9 16 10 17 Examples: 11 - dma-apbh@80004000 { 18 + 19 + dma_apbh: dma-apbh@80004000 { 12 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 16 - dma-apbx@80024000 { 34 + dma_apbx: dma-apbx@80024000 { 17 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 + 49 + DMA clients connected to the MXS DMA controller must use the format 50 + described in the dma.txt file. 51 + 52 + Examples: 53 + 54 + auart0: 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 };
+40 -2
arch/arm/boot/dts/imx23.dtsi
··· 49 49 reg = <0x80000000 0x2000>; 50 50 }; 51 51 52 - dma-apbh@80004000 { 52 + dma_apbh: dma-apbh@80004000 { 53 53 compatible = "fsl,imx23-dma-apbh"; 54 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 61 clocks = <&clks 15>; 56 62 }; 57 63 ··· 76 70 interrupt-names = "gpmi-dma", "bch"; 77 71 clocks = <&clks 34>; 78 72 clock-names = "gpmi_io"; 73 + dmas = <&dma_apbh 4>; 74 + dma-names = "rx-tx"; 79 75 fsl,gpmi-dma-channel = <4>; 80 76 status = "disabled"; 81 77 }; ··· 86 78 reg = <0x80010000 0x2000>; 87 79 interrupts = <15 14>; 88 80 clocks = <&clks 33>; 81 + dmas = <&dma_apbh 1>; 82 + dma-names = "rx-tx"; 89 83 fsl,ssp-dma-channel = <1>; 90 84 status = "disabled"; 91 85 }; ··· 315 305 status = "disabled"; 316 306 }; 317 307 318 - dma-apbx@80024000 { 308 + dma_apbx: dma-apbx@80024000 { 319 309 compatible = "fsl,imx23-dma-apbx"; 320 310 reg = <0x80024000 0x2000>; 311 + interrupts = <7 5 9 26 312 + 19 0 25 23 313 + 60 58 9 0 314 + 0 0 0 0>; 315 + interrupt-names = "audio-adc", "audio-dac", "spdif-tx", "i2c", 316 + "saif0", "empty", "auart0-rx", "auart0-tx", 317 + "auart1-rx", "auart1-tx", "saif1", "empty", 318 + "empty", "empty", "empty", "empty"; 319 + #dma-cells = <1>; 320 + dma-channels = <16>; 321 321 clocks = <&clks 16>; 322 322 }; 323 323 ··· 364 344 reg = <0x80034000 0x2000>; 365 345 interrupts = <2 20>; 366 346 clocks = <&clks 33>; 347 + dmas = <&dma_apbh 2>; 348 + dma-names = "rx-tx"; 367 349 fsl,ssp-dma-channel = <2>; 368 350 status = "disabled"; 369 351 }; ··· 391 369 392 370 saif0: saif@80042000 { 393 371 reg = <0x80042000 0x2000>; 372 + dmas = <&dma_apbx 4>; 373 + dma-names = "rx-tx"; 394 374 status = "disabled"; 395 375 }; 396 376 ··· 403 379 404 380 saif1: saif@80046000 { 405 381 reg = <0x80046000 0x2000>; 382 + dmas = <&dma_apbx 10>; 383 + dma-names = "rx-tx"; 406 384 status = "disabled"; 407 385 }; 408 386 409 387 audio-out@80048000 { 410 388 reg = <0x80048000 0x2000>; 389 + dmas = <&dma_apbx 1>; 390 + dma-names = "tx"; 411 391 status = "disabled"; 412 392 }; 413 393 414 394 audio-in@8004c000 { 415 395 reg = <0x8004c000 0x2000>; 396 + dmas = <&dma_apbx 0>; 397 + dma-names = "rx"; 416 398 status = "disabled"; 417 399 }; 418 400 ··· 431 401 432 402 spdif@80054000 { 433 403 reg = <0x80054000 2000>; 404 + dmas = <&dma_apbx 2>; 405 + dma-names = "tx"; 434 406 status = "disabled"; 435 407 }; 436 408 437 409 i2c@80058000 { 438 410 reg = <0x80058000 0x2000>; 411 + dmas = <&dma_apbx 3>; 412 + dma-names = "rx-tx"; 439 413 status = "disabled"; 440 414 }; 441 415 ··· 470 436 reg = <0x8006c000 0x2000>; 471 437 interrupts = <24 25 23>; 472 438 clocks = <&clks 32>; 439 + dmas = <&dma_apbx 6>, <&dma_apbx 7>; 440 + dma-names = "rx", "tx"; 473 441 status = "disabled"; 474 442 }; 475 443 ··· 480 444 reg = <0x8006e000 0x2000>; 481 445 interrupts = <59 60 58>; 482 446 clocks = <&clks 32>; 447 + dmas = <&dma_apbx 8>, <&dma_apbx 9>; 448 + dma-names = "rx", "tx"; 483 449 status = "disabled"; 484 450 }; 485 451
+56 -2
arch/arm/boot/dts/imx28.dtsi
··· 61 61 hsadc@80002000 { 62 62 reg = <0x80002000 0x2000>; 63 63 interrupts = <13 87>; 64 + dmas = <&dma_apbh 12>; 65 + dma-names = "rx"; 64 66 status = "disabled"; 65 67 }; 66 68 67 - dma-apbh@80004000 { 69 + dma_apbh: dma-apbh@80004000 { 68 70 compatible = "fsl,imx28-dma-apbh"; 69 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 82 clocks = <&clks 25>; 71 83 }; 72 84 ··· 98 86 interrupt-names = "gpmi-dma", "bch"; 99 87 clocks = <&clks 50>; 100 88 clock-names = "gpmi_io"; 89 + dmas = <&dma_apbh 4>; 90 + dma-names = "rx-tx"; 101 91 fsl,gpmi-dma-channel = <4>; 102 92 status = "disabled"; 103 93 }; ··· 110 96 reg = <0x80010000 0x2000>; 111 97 interrupts = <96 82>; 112 98 clocks = <&clks 46>; 99 + dmas = <&dma_apbh 0>; 100 + dma-names = "rx-tx"; 113 101 fsl,ssp-dma-channel = <0>; 114 102 status = "disabled"; 115 103 }; ··· 122 106 reg = <0x80012000 0x2000>; 123 107 interrupts = <97 83>; 124 108 clocks = <&clks 47>; 109 + dmas = <&dma_apbh 1>; 110 + dma-names = "rx-tx"; 125 111 fsl,ssp-dma-channel = <1>; 126 112 status = "disabled"; 127 113 }; ··· 134 116 reg = <0x80014000 0x2000>; 135 117 interrupts = <98 84>; 136 118 clocks = <&clks 48>; 119 + dmas = <&dma_apbh 2>; 120 + dma-names = "rx-tx"; 137 121 fsl,ssp-dma-channel = <2>; 138 122 status = "disabled"; 139 123 }; ··· 146 126 reg = <0x80016000 0x2000>; 147 127 interrupts = <99 85>; 148 128 clocks = <&clks 49>; 129 + dmas = <&dma_apbh 3>; 130 + dma-names = "rx-tx"; 149 131 fsl,ssp-dma-channel = <3>; 150 132 status = "disabled"; 151 133 }; ··· 680 658 status = "disabled"; 681 659 }; 682 660 683 - dma-apbx@80024000 { 661 + dma_apbx: dma-apbx@80024000 { 684 662 compatible = "fsl,imx28-dma-apbx"; 685 663 reg = <0x80024000 0x2000>; 664 + interrupts = <78 79 66 0 665 + 80 81 68 69 666 + 70 71 72 73 667 + 74 75 76 77>; 668 + interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty", 669 + "saif0", "saif1", "i2c0", "i2c1", 670 + "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx", 671 + "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx"; 672 + #dma-cells = <1>; 673 + dma-channels = <16>; 686 674 clocks = <&clks 26>; 687 675 }; 688 676 ··· 724 692 reg = <0x80030000 0x2000>; 725 693 interrupts = <38 86>; 726 694 clocks = <&clks 55>; 695 + dmas = <&dma_apbh 13>; 696 + dma-names = "rx"; 727 697 status = "disabled"; 728 698 }; 729 699 ··· 801 767 reg = <0x80042000 0x2000>; 802 768 interrupts = <59 80>; 803 769 clocks = <&clks 53>; 770 + dmas = <&dma_apbx 4>; 771 + dma-names = "rx-tx"; 804 772 fsl,saif-dma-channel = <4>; 805 773 status = "disabled"; 806 774 }; ··· 817 781 reg = <0x80046000 0x2000>; 818 782 interrupts = <58 81>; 819 783 clocks = <&clks 54>; 784 + dmas = <&dma_apbx 5>; 785 + dma-names = "rx-tx"; 820 786 fsl,saif-dma-channel = <5>; 821 787 status = "disabled"; 822 788 }; ··· 834 796 spdif@80054000 { 835 797 reg = <0x80054000 0x2000>; 836 798 interrupts = <45 66>; 799 + dmas = <&dma_apbx 2>; 800 + dma-names = "tx"; 837 801 status = "disabled"; 838 802 }; 839 803 ··· 852 812 reg = <0x80058000 0x2000>; 853 813 interrupts = <111 68>; 854 814 clock-frequency = <100000>; 815 + dmas = <&dma_apbx 6>; 816 + dma-names = "rx-tx"; 855 817 fsl,i2c-dma-channel = <6>; 856 818 status = "disabled"; 857 819 }; ··· 865 823 reg = <0x8005a000 0x2000>; 866 824 interrupts = <110 69>; 867 825 clock-frequency = <100000>; 826 + dmas = <&dma_apbx 7>; 827 + dma-names = "rx-tx"; 868 828 fsl,i2c-dma-channel = <7>; 869 829 status = "disabled"; 870 830 }; ··· 891 847 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 892 848 reg = <0x8006a000 0x2000>; 893 849 interrupts = <112 70 71>; 850 + dmas = <&dma_apbx 8>, <&dma_apbx 9>; 851 + dma-names = "rx", "tx"; 894 852 fsl,auart-dma-channel = <8 9>; 895 853 clocks = <&clks 45>; 896 854 status = "disabled"; ··· 902 856 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 903 857 reg = <0x8006c000 0x2000>; 904 858 interrupts = <113 72 73>; 859 + dmas = <&dma_apbx 10>, <&dma_apbx 11>; 860 + dma-names = "rx", "tx"; 905 861 clocks = <&clks 45>; 906 862 status = "disabled"; 907 863 }; ··· 912 864 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 913 865 reg = <0x8006e000 0x2000>; 914 866 interrupts = <114 74 75>; 867 + dmas = <&dma_apbx 12>, <&dma_apbx 13>; 868 + dma-names = "rx", "tx"; 915 869 clocks = <&clks 45>; 916 870 status = "disabled"; 917 871 }; ··· 922 872 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 923 873 reg = <0x80070000 0x2000>; 924 874 interrupts = <115 76 77>; 875 + dmas = <&dma_apbx 14>, <&dma_apbx 15>; 876 + dma-names = "rx", "tx"; 925 877 clocks = <&clks 45>; 926 878 status = "disabled"; 927 879 }; ··· 932 880 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 933 881 reg = <0x80072000 0x2000>; 934 882 interrupts = <116 78 79>; 883 + dmas = <&dma_apbx 0>, <&dma_apbx 1>; 884 + dma-names = "rx", "tx"; 935 885 clocks = <&clks 45>; 936 886 status = "disabled"; 937 887 };
+7 -1
arch/arm/boot/dts/imx6qdl.dtsi
··· 65 65 interrupt-parent = <&intc>; 66 66 ranges; 67 67 68 - dma-apbh@00110000 { 68 + dma_apbh: dma-apbh@00110000 { 69 69 compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh"; 70 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 75 clocks = <&clks 106>; 72 76 }; 73 77 ··· 87 83 <&clks 150>, <&clks 149>; 88 84 clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch", 89 85 "gpmi_bch_apb", "per1_bch"; 86 + dmas = <&dma_apbh 0>; 87 + dma-names = "rx-tx"; 90 88 fsl,gpmi-dma-channel = <0>; 91 89 status = "disabled"; 92 90 };