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