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