xref: /freebsd/sys/contrib/device-tree/Bindings/dma/brcm,bcm2835-dma.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
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