18c2ecf20Sopenharmony_ci* BCM2835 DMA controller
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciThe BCM2835 DMA controller has 16 channels in total.
48c2ecf20Sopenharmony_ciOnly the lower 13 channels have an associated IRQ.
58c2ecf20Sopenharmony_ciSome arbitrary channels are used by the firmware
68c2ecf20Sopenharmony_ci(1,3,6,7 in the current firmware version).
78c2ecf20Sopenharmony_ciThe channels 0,2 and 3 have special functionality
88c2ecf20Sopenharmony_ciand should not be used by the driver.
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ciRequired properties:
118c2ecf20Sopenharmony_ci- compatible: Should be "brcm,bcm2835-dma".
128c2ecf20Sopenharmony_ci- reg: Should contain DMA registers location and length.
138c2ecf20Sopenharmony_ci- interrupts: Should contain the DMA interrupts associated
148c2ecf20Sopenharmony_ci		to the DMA channels in ascending order.
158c2ecf20Sopenharmony_ci- interrupt-names: Should contain the names of the interrupt
168c2ecf20Sopenharmony_ci		   in the form "dmaXX".
178c2ecf20Sopenharmony_ci		   Use "dma-shared-all" for the common interrupt line
188c2ecf20Sopenharmony_ci		   that is shared by all dma channels.
198c2ecf20Sopenharmony_ci- #dma-cells: Must be <1>, the cell in the dmas property of the
208c2ecf20Sopenharmony_ci		client device represents the DREQ number.
218c2ecf20Sopenharmony_ci- brcm,dma-channel-mask: Bit mask representing the channels
228c2ecf20Sopenharmony_ci			 not used by the firmware in ascending order,
238c2ecf20Sopenharmony_ci			 i.e. first channel corresponds to LSB.
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciExample:
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_cidma: dma@7e007000 {
288c2ecf20Sopenharmony_ci	compatible = "brcm,bcm2835-dma";
298c2ecf20Sopenharmony_ci	reg = <0x7e007000 0xf00>;
308c2ecf20Sopenharmony_ci	interrupts = <1 16>,
318c2ecf20Sopenharmony_ci		     <1 17>,
328c2ecf20Sopenharmony_ci		     <1 18>,
338c2ecf20Sopenharmony_ci		     <1 19>,
348c2ecf20Sopenharmony_ci		     <1 20>,
358c2ecf20Sopenharmony_ci		     <1 21>,
368c2ecf20Sopenharmony_ci		     <1 22>,
378c2ecf20Sopenharmony_ci		     <1 23>,
388c2ecf20Sopenharmony_ci		     <1 24>,
398c2ecf20Sopenharmony_ci		     <1 25>,
408c2ecf20Sopenharmony_ci		     <1 26>,
418c2ecf20Sopenharmony_ci		     /* dma channel 11-14 share one irq */
428c2ecf20Sopenharmony_ci		     <1 27>,
438c2ecf20Sopenharmony_ci		     <1 27>,
448c2ecf20Sopenharmony_ci		     <1 27>,
458c2ecf20Sopenharmony_ci		     <1 27>,
468c2ecf20Sopenharmony_ci		     /* unused shared irq for all channels */
478c2ecf20Sopenharmony_ci		     <1 28>;
488c2ecf20Sopenharmony_ci	interrupt-names = "dma0",
498c2ecf20Sopenharmony_ci			  "dma1",
508c2ecf20Sopenharmony_ci			  "dma2",
518c2ecf20Sopenharmony_ci			  "dma3",
528c2ecf20Sopenharmony_ci			  "dma4",
538c2ecf20Sopenharmony_ci			  "dma5",
548c2ecf20Sopenharmony_ci			  "dma6",
558c2ecf20Sopenharmony_ci			  "dma7",
568c2ecf20Sopenharmony_ci			  "dma8",
578c2ecf20Sopenharmony_ci			  "dma9",
588c2ecf20Sopenharmony_ci			  "dma10",
598c2ecf20Sopenharmony_ci			  "dma11",
608c2ecf20Sopenharmony_ci			  "dma12",
618c2ecf20Sopenharmony_ci			  "dma13",
628c2ecf20Sopenharmony_ci			  "dma14",
638c2ecf20Sopenharmony_ci			  "dma-shared-all";
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci	#dma-cells = <1>;
668c2ecf20Sopenharmony_ci	brcm,dma-channel-mask = <0x7f35>;
678c2ecf20Sopenharmony_ci};
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ciDMA clients connected to the BCM2835 DMA controller must use the format
718c2ecf20Sopenharmony_cidescribed in the dma.txt file, using a two-cell specifier for each channel.
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ciExample:
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_cibcm2835_i2s: i2s@7e203000 {
768c2ecf20Sopenharmony_ci	compatible = "brcm,bcm2835-i2s";
778c2ecf20Sopenharmony_ci	reg = <	0x7e203000 0x24>;
788c2ecf20Sopenharmony_ci	clocks = <&clocks BCM2835_CLOCK_PCM>;
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci	dmas = <&dma 2>,
818c2ecf20Sopenharmony_ci	       <&dma 3>;
828c2ecf20Sopenharmony_ci	dma-names = "tx", "rx";
838c2ecf20Sopenharmony_ci};
84