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