Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/device-tree/Bindings/dma/brcm,bcm2835-dma.txt
48376 views
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.
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.
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>,
41
/* dma channel 11-14 share one irq */
42
<1 27>,
43
<1 27>,
44
<1 27>,
45
<1 27>,
46
/* unused shared irq for all channels */
47
<1 28>;
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";
64
65
#dma-cells = <1>;
66
brcm,dma-channel-mask = <0x7f35>;
67
};
68
69
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 0x24>;
78
clocks = <&clocks BCM2835_CLOCK_PCM>;
79
80
dmas = <&dma 2>,
81
<&dma 3>;
82
dma-names = "tx", "rx";
83
};
84
85