1*4882a593Smuzhiyun* Freescale DMA Controllers 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun** Freescale Elo DMA Controller 4*4882a593Smuzhiyun This is a little-endian 4-channel DMA controller, used in Freescale mpc83xx 5*4882a593Smuzhiyun series chips such as mpc8315, mpc8349, mpc8379 etc. 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunRequired properties: 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun- compatible : must include "fsl,elo-dma" 10*4882a593Smuzhiyun- reg : DMA General Status Register, i.e. DGSR which contains 11*4882a593Smuzhiyun status for all the 4 DMA channels 12*4882a593Smuzhiyun- ranges : describes the mapping between the address space of the 13*4882a593Smuzhiyun DMA channels and the address space of the DMA controller 14*4882a593Smuzhiyun- cell-index : controller index. 0 for controller @ 0x8100 15*4882a593Smuzhiyun- interrupts : interrupt specifier for DMA IRQ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun- DMA channel nodes: 18*4882a593Smuzhiyun - compatible : must include "fsl,elo-dma-channel" 19*4882a593Smuzhiyun However, see note below. 20*4882a593Smuzhiyun - reg : DMA channel specific registers 21*4882a593Smuzhiyun - cell-index : DMA channel index starts at 0. 22*4882a593Smuzhiyun 23*4882a593SmuzhiyunOptional properties: 24*4882a593Smuzhiyun - interrupts : interrupt specifier for DMA channel IRQ 25*4882a593Smuzhiyun (on 83xx this is expected to be identical to 26*4882a593Smuzhiyun the interrupts property of the parent node) 27*4882a593Smuzhiyun 28*4882a593SmuzhiyunExample: 29*4882a593Smuzhiyun dma@82a8 { 30*4882a593Smuzhiyun #address-cells = <1>; 31*4882a593Smuzhiyun #size-cells = <1>; 32*4882a593Smuzhiyun compatible = "fsl,mpc8349-dma", "fsl,elo-dma"; 33*4882a593Smuzhiyun reg = <0x82a8 4>; 34*4882a593Smuzhiyun ranges = <0 0x8100 0x1a4>; 35*4882a593Smuzhiyun interrupt-parent = <&ipic>; 36*4882a593Smuzhiyun interrupts = <71 8>; 37*4882a593Smuzhiyun cell-index = <0>; 38*4882a593Smuzhiyun dma-channel@0 { 39*4882a593Smuzhiyun compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel"; 40*4882a593Smuzhiyun cell-index = <0>; 41*4882a593Smuzhiyun reg = <0 0x80>; 42*4882a593Smuzhiyun interrupt-parent = <&ipic>; 43*4882a593Smuzhiyun interrupts = <71 8>; 44*4882a593Smuzhiyun }; 45*4882a593Smuzhiyun dma-channel@80 { 46*4882a593Smuzhiyun compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel"; 47*4882a593Smuzhiyun cell-index = <1>; 48*4882a593Smuzhiyun reg = <0x80 0x80>; 49*4882a593Smuzhiyun interrupt-parent = <&ipic>; 50*4882a593Smuzhiyun interrupts = <71 8>; 51*4882a593Smuzhiyun }; 52*4882a593Smuzhiyun dma-channel@100 { 53*4882a593Smuzhiyun compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel"; 54*4882a593Smuzhiyun cell-index = <2>; 55*4882a593Smuzhiyun reg = <0x100 0x80>; 56*4882a593Smuzhiyun interrupt-parent = <&ipic>; 57*4882a593Smuzhiyun interrupts = <71 8>; 58*4882a593Smuzhiyun }; 59*4882a593Smuzhiyun dma-channel@180 { 60*4882a593Smuzhiyun compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel"; 61*4882a593Smuzhiyun cell-index = <3>; 62*4882a593Smuzhiyun reg = <0x180 0x80>; 63*4882a593Smuzhiyun interrupt-parent = <&ipic>; 64*4882a593Smuzhiyun interrupts = <71 8>; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun }; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun** Freescale EloPlus DMA Controller 69*4882a593Smuzhiyun This is a 4-channel DMA controller with extended addresses and chaining, 70*4882a593Smuzhiyun mainly used in Freescale mpc85xx/86xx, Pxxx and BSC series chips, such as 71*4882a593Smuzhiyun mpc8540, mpc8641 p4080, bsc9131 etc. 72*4882a593Smuzhiyun 73*4882a593SmuzhiyunRequired properties: 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun- compatible : must include "fsl,eloplus-dma" 76*4882a593Smuzhiyun- reg : DMA General Status Register, i.e. DGSR which contains 77*4882a593Smuzhiyun status for all the 4 DMA channels 78*4882a593Smuzhiyun- cell-index : controller index. 0 for controller @ 0x21000, 79*4882a593Smuzhiyun 1 for controller @ 0xc000 80*4882a593Smuzhiyun- ranges : describes the mapping between the address space of the 81*4882a593Smuzhiyun DMA channels and the address space of the DMA controller 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun- DMA channel nodes: 84*4882a593Smuzhiyun - compatible : must include "fsl,eloplus-dma-channel" 85*4882a593Smuzhiyun However, see note below. 86*4882a593Smuzhiyun - cell-index : DMA channel index starts at 0. 87*4882a593Smuzhiyun - reg : DMA channel specific registers 88*4882a593Smuzhiyun - interrupts : interrupt specifier for DMA channel IRQ 89*4882a593Smuzhiyun 90*4882a593SmuzhiyunExample: 91*4882a593Smuzhiyun dma@21300 { 92*4882a593Smuzhiyun #address-cells = <1>; 93*4882a593Smuzhiyun #size-cells = <1>; 94*4882a593Smuzhiyun compatible = "fsl,mpc8540-dma", "fsl,eloplus-dma"; 95*4882a593Smuzhiyun reg = <0x21300 4>; 96*4882a593Smuzhiyun ranges = <0 0x21100 0x200>; 97*4882a593Smuzhiyun cell-index = <0>; 98*4882a593Smuzhiyun dma-channel@0 { 99*4882a593Smuzhiyun compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel"; 100*4882a593Smuzhiyun reg = <0 0x80>; 101*4882a593Smuzhiyun cell-index = <0>; 102*4882a593Smuzhiyun interrupt-parent = <&mpic>; 103*4882a593Smuzhiyun interrupts = <20 2>; 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun dma-channel@80 { 106*4882a593Smuzhiyun compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel"; 107*4882a593Smuzhiyun reg = <0x80 0x80>; 108*4882a593Smuzhiyun cell-index = <1>; 109*4882a593Smuzhiyun interrupt-parent = <&mpic>; 110*4882a593Smuzhiyun interrupts = <21 2>; 111*4882a593Smuzhiyun }; 112*4882a593Smuzhiyun dma-channel@100 { 113*4882a593Smuzhiyun compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel"; 114*4882a593Smuzhiyun reg = <0x100 0x80>; 115*4882a593Smuzhiyun cell-index = <2>; 116*4882a593Smuzhiyun interrupt-parent = <&mpic>; 117*4882a593Smuzhiyun interrupts = <22 2>; 118*4882a593Smuzhiyun }; 119*4882a593Smuzhiyun dma-channel@180 { 120*4882a593Smuzhiyun compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel"; 121*4882a593Smuzhiyun reg = <0x180 0x80>; 122*4882a593Smuzhiyun cell-index = <3>; 123*4882a593Smuzhiyun interrupt-parent = <&mpic>; 124*4882a593Smuzhiyun interrupts = <23 2>; 125*4882a593Smuzhiyun }; 126*4882a593Smuzhiyun }; 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun** Freescale Elo3 DMA Controller 129*4882a593Smuzhiyun DMA controller which has same function as EloPlus except that Elo3 has 8 130*4882a593Smuzhiyun channels while EloPlus has only 4, it is used in Freescale Txxx and Bxxx 131*4882a593Smuzhiyun series chips, such as t1040, t4240, b4860. 132*4882a593Smuzhiyun 133*4882a593SmuzhiyunRequired properties: 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun- compatible : must include "fsl,elo3-dma" 136*4882a593Smuzhiyun- reg : contains two entries for DMA General Status Registers, 137*4882a593Smuzhiyun i.e. DGSR0 which includes status for channel 1~4, and 138*4882a593Smuzhiyun DGSR1 for channel 5~8 139*4882a593Smuzhiyun- ranges : describes the mapping between the address space of the 140*4882a593Smuzhiyun DMA channels and the address space of the DMA controller 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun- DMA channel nodes: 143*4882a593Smuzhiyun - compatible : must include "fsl,eloplus-dma-channel" 144*4882a593Smuzhiyun - reg : DMA channel specific registers 145*4882a593Smuzhiyun - interrupts : interrupt specifier for DMA channel IRQ 146*4882a593Smuzhiyun 147*4882a593SmuzhiyunExample: 148*4882a593Smuzhiyundma@100300 { 149*4882a593Smuzhiyun #address-cells = <1>; 150*4882a593Smuzhiyun #size-cells = <1>; 151*4882a593Smuzhiyun compatible = "fsl,elo3-dma"; 152*4882a593Smuzhiyun reg = <0x100300 0x4>, 153*4882a593Smuzhiyun <0x100600 0x4>; 154*4882a593Smuzhiyun ranges = <0x0 0x100100 0x500>; 155*4882a593Smuzhiyun dma-channel@0 { 156*4882a593Smuzhiyun compatible = "fsl,eloplus-dma-channel"; 157*4882a593Smuzhiyun reg = <0x0 0x80>; 158*4882a593Smuzhiyun interrupts = <28 2 0 0>; 159*4882a593Smuzhiyun }; 160*4882a593Smuzhiyun dma-channel@80 { 161*4882a593Smuzhiyun compatible = "fsl,eloplus-dma-channel"; 162*4882a593Smuzhiyun reg = <0x80 0x80>; 163*4882a593Smuzhiyun interrupts = <29 2 0 0>; 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun dma-channel@100 { 166*4882a593Smuzhiyun compatible = "fsl,eloplus-dma-channel"; 167*4882a593Smuzhiyun reg = <0x100 0x80>; 168*4882a593Smuzhiyun interrupts = <30 2 0 0>; 169*4882a593Smuzhiyun }; 170*4882a593Smuzhiyun dma-channel@180 { 171*4882a593Smuzhiyun compatible = "fsl,eloplus-dma-channel"; 172*4882a593Smuzhiyun reg = <0x180 0x80>; 173*4882a593Smuzhiyun interrupts = <31 2 0 0>; 174*4882a593Smuzhiyun }; 175*4882a593Smuzhiyun dma-channel@300 { 176*4882a593Smuzhiyun compatible = "fsl,eloplus-dma-channel"; 177*4882a593Smuzhiyun reg = <0x300 0x80>; 178*4882a593Smuzhiyun interrupts = <76 2 0 0>; 179*4882a593Smuzhiyun }; 180*4882a593Smuzhiyun dma-channel@380 { 181*4882a593Smuzhiyun compatible = "fsl,eloplus-dma-channel"; 182*4882a593Smuzhiyun reg = <0x380 0x80>; 183*4882a593Smuzhiyun interrupts = <77 2 0 0>; 184*4882a593Smuzhiyun }; 185*4882a593Smuzhiyun dma-channel@400 { 186*4882a593Smuzhiyun compatible = "fsl,eloplus-dma-channel"; 187*4882a593Smuzhiyun reg = <0x400 0x80>; 188*4882a593Smuzhiyun interrupts = <78 2 0 0>; 189*4882a593Smuzhiyun }; 190*4882a593Smuzhiyun dma-channel@480 { 191*4882a593Smuzhiyun compatible = "fsl,eloplus-dma-channel"; 192*4882a593Smuzhiyun reg = <0x480 0x80>; 193*4882a593Smuzhiyun interrupts = <79 2 0 0>; 194*4882a593Smuzhiyun }; 195*4882a593Smuzhiyun}; 196*4882a593Smuzhiyun 197*4882a593SmuzhiyunNote on DMA channel compatible properties: The compatible property must say 198*4882a593Smuzhiyun"fsl,elo-dma-channel" or "fsl,eloplus-dma-channel" to be used by the Elo DMA 199*4882a593Smuzhiyundriver (fsldma). Any DMA channel used by fsldma cannot be used by another 200*4882a593SmuzhiyunDMA driver, such as the SSI sound drivers for the MPC8610. Therefore, any DMA 201*4882a593Smuzhiyunchannel that should be used for another driver should not use 202*4882a593Smuzhiyun"fsl,elo-dma-channel" or "fsl,eloplus-dma-channel". For the SSI drivers, for 203*4882a593Smuzhiyunexample, the compatible property should be "fsl,ssi-dma-channel". See ssi.txt 204*4882a593Smuzhiyunfor more information. 205