1*c66ec88fSEmmanuel Vadot* BCM2835 DMA controller 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotThe BCM2835 DMA controller has 16 channels in total. 4*c66ec88fSEmmanuel VadotOnly the lower 13 channels have an associated IRQ. 5*c66ec88fSEmmanuel VadotSome arbitrary channels are used by the firmware 6*c66ec88fSEmmanuel Vadot(1,3,6,7 in the current firmware version). 7*c66ec88fSEmmanuel VadotThe channels 0,2 and 3 have special functionality 8*c66ec88fSEmmanuel Vadotand should not be used by the driver. 9*c66ec88fSEmmanuel Vadot 10*c66ec88fSEmmanuel VadotRequired properties: 11*c66ec88fSEmmanuel Vadot- compatible: Should be "brcm,bcm2835-dma". 12*c66ec88fSEmmanuel Vadot- reg: Should contain DMA registers location and length. 13*c66ec88fSEmmanuel Vadot- interrupts: Should contain the DMA interrupts associated 14*c66ec88fSEmmanuel Vadot to the DMA channels in ascending order. 15*c66ec88fSEmmanuel Vadot- interrupt-names: Should contain the names of the interrupt 16*c66ec88fSEmmanuel Vadot in the form "dmaXX". 17*c66ec88fSEmmanuel Vadot Use "dma-shared-all" for the common interrupt line 18*c66ec88fSEmmanuel Vadot that is shared by all dma channels. 19*c66ec88fSEmmanuel Vadot- #dma-cells: Must be <1>, the cell in the dmas property of the 20*c66ec88fSEmmanuel Vadot client device represents the DREQ number. 21*c66ec88fSEmmanuel Vadot- brcm,dma-channel-mask: Bit mask representing the channels 22*c66ec88fSEmmanuel Vadot not used by the firmware in ascending order, 23*c66ec88fSEmmanuel Vadot i.e. first channel corresponds to LSB. 24*c66ec88fSEmmanuel Vadot 25*c66ec88fSEmmanuel VadotExample: 26*c66ec88fSEmmanuel Vadot 27*c66ec88fSEmmanuel Vadotdma: dma@7e007000 { 28*c66ec88fSEmmanuel Vadot compatible = "brcm,bcm2835-dma"; 29*c66ec88fSEmmanuel Vadot reg = <0x7e007000 0xf00>; 30*c66ec88fSEmmanuel Vadot interrupts = <1 16>, 31*c66ec88fSEmmanuel Vadot <1 17>, 32*c66ec88fSEmmanuel Vadot <1 18>, 33*c66ec88fSEmmanuel Vadot <1 19>, 34*c66ec88fSEmmanuel Vadot <1 20>, 35*c66ec88fSEmmanuel Vadot <1 21>, 36*c66ec88fSEmmanuel Vadot <1 22>, 37*c66ec88fSEmmanuel Vadot <1 23>, 38*c66ec88fSEmmanuel Vadot <1 24>, 39*c66ec88fSEmmanuel Vadot <1 25>, 40*c66ec88fSEmmanuel Vadot <1 26>, 41*c66ec88fSEmmanuel Vadot /* dma channel 11-14 share one irq */ 42*c66ec88fSEmmanuel Vadot <1 27>, 43*c66ec88fSEmmanuel Vadot <1 27>, 44*c66ec88fSEmmanuel Vadot <1 27>, 45*c66ec88fSEmmanuel Vadot <1 27>, 46*c66ec88fSEmmanuel Vadot /* unused shared irq for all channels */ 47*c66ec88fSEmmanuel Vadot <1 28>; 48*c66ec88fSEmmanuel Vadot interrupt-names = "dma0", 49*c66ec88fSEmmanuel Vadot "dma1", 50*c66ec88fSEmmanuel Vadot "dma2", 51*c66ec88fSEmmanuel Vadot "dma3", 52*c66ec88fSEmmanuel Vadot "dma4", 53*c66ec88fSEmmanuel Vadot "dma5", 54*c66ec88fSEmmanuel Vadot "dma6", 55*c66ec88fSEmmanuel Vadot "dma7", 56*c66ec88fSEmmanuel Vadot "dma8", 57*c66ec88fSEmmanuel Vadot "dma9", 58*c66ec88fSEmmanuel Vadot "dma10", 59*c66ec88fSEmmanuel Vadot "dma11", 60*c66ec88fSEmmanuel Vadot "dma12", 61*c66ec88fSEmmanuel Vadot "dma13", 62*c66ec88fSEmmanuel Vadot "dma14", 63*c66ec88fSEmmanuel Vadot "dma-shared-all"; 64*c66ec88fSEmmanuel Vadot 65*c66ec88fSEmmanuel Vadot #dma-cells = <1>; 66*c66ec88fSEmmanuel Vadot brcm,dma-channel-mask = <0x7f35>; 67*c66ec88fSEmmanuel Vadot}; 68*c66ec88fSEmmanuel Vadot 69*c66ec88fSEmmanuel Vadot 70*c66ec88fSEmmanuel VadotDMA clients connected to the BCM2835 DMA controller must use the format 71*c66ec88fSEmmanuel Vadotdescribed in the dma.txt file, using a two-cell specifier for each channel. 72*c66ec88fSEmmanuel Vadot 73*c66ec88fSEmmanuel VadotExample: 74*c66ec88fSEmmanuel Vadot 75*c66ec88fSEmmanuel Vadotbcm2835_i2s: i2s@7e203000 { 76*c66ec88fSEmmanuel Vadot compatible = "brcm,bcm2835-i2s"; 77*c66ec88fSEmmanuel Vadot reg = < 0x7e203000 0x24>; 78*c66ec88fSEmmanuel Vadot clocks = <&clocks BCM2835_CLOCK_PCM>; 79*c66ec88fSEmmanuel Vadot 80*c66ec88fSEmmanuel Vadot dmas = <&dma 2>, 81*c66ec88fSEmmanuel Vadot <&dma 3>; 82*c66ec88fSEmmanuel Vadot dma-names = "tx", "rx"; 83*c66ec88fSEmmanuel Vadot}; 84