1*dfcfe386SStefan Wahren# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*dfcfe386SStefan Wahren%YAML 1.2
3*dfcfe386SStefan Wahren---
4*dfcfe386SStefan Wahren$id: http://devicetree.org/schemas/dma/brcm,bcm2835-dma.yaml#
5*dfcfe386SStefan Wahren$schema: http://devicetree.org/meta-schemas/core.yaml#
6*dfcfe386SStefan Wahren
7*dfcfe386SStefan Wahrentitle: BCM2835 DMA controller
8*dfcfe386SStefan Wahren
9*dfcfe386SStefan Wahrenmaintainers:
10*dfcfe386SStefan Wahren  - Nicolas Saenz Julienne <nsaenz@kernel.org>
11*dfcfe386SStefan Wahren
12*dfcfe386SStefan Wahrendescription:
13*dfcfe386SStefan Wahren  The BCM2835 DMA controller has 16 channels in total. Only the lower
14*dfcfe386SStefan Wahren  13 channels have an associated IRQ. Some arbitrary channels are used by the
15*dfcfe386SStefan Wahren  VideoCore firmware (1,3,6,7 in the current firmware version). The channels
16*dfcfe386SStefan Wahren  0, 2 and 3 have special functionality and should not be used by the driver.
17*dfcfe386SStefan Wahren
18*dfcfe386SStefan WahrenallOf:
19*dfcfe386SStefan Wahren  - $ref: dma-controller.yaml#
20*dfcfe386SStefan Wahren
21*dfcfe386SStefan Wahrenproperties:
22*dfcfe386SStefan Wahren  compatible:
23*dfcfe386SStefan Wahren    const: brcm,bcm2835-dma
24*dfcfe386SStefan Wahren
25*dfcfe386SStefan Wahren  reg:
26*dfcfe386SStefan Wahren    maxItems: 1
27*dfcfe386SStefan Wahren
28*dfcfe386SStefan Wahren  interrupts:
29*dfcfe386SStefan Wahren    description:
30*dfcfe386SStefan Wahren      Should contain the DMA interrupts associated to the DMA channels in
31*dfcfe386SStefan Wahren      ascending order.
32*dfcfe386SStefan Wahren    minItems: 1
33*dfcfe386SStefan Wahren    maxItems: 16
34*dfcfe386SStefan Wahren
35*dfcfe386SStefan Wahren  interrupt-names:
36*dfcfe386SStefan Wahren    minItems: 1
37*dfcfe386SStefan Wahren    maxItems: 16
38*dfcfe386SStefan Wahren
39*dfcfe386SStefan Wahren  '#dma-cells':
40*dfcfe386SStefan Wahren    description: The single cell represents the DREQ number.
41*dfcfe386SStefan Wahren    const: 1
42*dfcfe386SStefan Wahren
43*dfcfe386SStefan Wahren  brcm,dma-channel-mask:
44*dfcfe386SStefan Wahren    $ref: /schemas/types.yaml#/definitions/uint32
45*dfcfe386SStefan Wahren    description:
46*dfcfe386SStefan Wahren      Bitmask of available DMA channels in ascending order that are
47*dfcfe386SStefan Wahren      not reserved by firmware and are available to the
48*dfcfe386SStefan Wahren      kernel. i.e. first channel corresponds to LSB.
49*dfcfe386SStefan Wahren
50*dfcfe386SStefan WahrenunevaluatedProperties: false
51*dfcfe386SStefan Wahren
52*dfcfe386SStefan Wahrenrequired:
53*dfcfe386SStefan Wahren  - compatible
54*dfcfe386SStefan Wahren  - reg
55*dfcfe386SStefan Wahren  - interrupts
56*dfcfe386SStefan Wahren  - "#dma-cells"
57*dfcfe386SStefan Wahren  - brcm,dma-channel-mask
58*dfcfe386SStefan Wahren
59*dfcfe386SStefan Wahrenexamples:
60*dfcfe386SStefan Wahren  - |
61*dfcfe386SStefan Wahren    dma-controller@7e007000 {
62*dfcfe386SStefan Wahren      compatible = "brcm,bcm2835-dma";
63*dfcfe386SStefan Wahren      reg = <0x7e007000 0xf00>;
64*dfcfe386SStefan Wahren      interrupts = <1 16>,
65*dfcfe386SStefan Wahren                   <1 17>,
66*dfcfe386SStefan Wahren                   <1 18>,
67*dfcfe386SStefan Wahren                   <1 19>,
68*dfcfe386SStefan Wahren                   <1 20>,
69*dfcfe386SStefan Wahren                   <1 21>,
70*dfcfe386SStefan Wahren                   <1 22>,
71*dfcfe386SStefan Wahren                   <1 23>,
72*dfcfe386SStefan Wahren                   <1 24>,
73*dfcfe386SStefan Wahren                   <1 25>,
74*dfcfe386SStefan Wahren                   <1 26>,
75*dfcfe386SStefan Wahren                   /* dma channel 11-14 share one irq */
76*dfcfe386SStefan Wahren                   <1 27>,
77*dfcfe386SStefan Wahren                   <1 27>,
78*dfcfe386SStefan Wahren                   <1 27>,
79*dfcfe386SStefan Wahren                   <1 27>,
80*dfcfe386SStefan Wahren                   /* unused shared irq for all channels */
81*dfcfe386SStefan Wahren                   <1 28>;
82*dfcfe386SStefan Wahren      interrupt-names = "dma0",
83*dfcfe386SStefan Wahren                        "dma1",
84*dfcfe386SStefan Wahren                        "dma2",
85*dfcfe386SStefan Wahren                        "dma3",
86*dfcfe386SStefan Wahren                        "dma4",
87*dfcfe386SStefan Wahren                        "dma5",
88*dfcfe386SStefan Wahren                        "dma6",
89*dfcfe386SStefan Wahren                        "dma7",
90*dfcfe386SStefan Wahren                        "dma8",
91*dfcfe386SStefan Wahren                        "dma9",
92*dfcfe386SStefan Wahren                        "dma10",
93*dfcfe386SStefan Wahren                        "dma11",
94*dfcfe386SStefan Wahren                        "dma12",
95*dfcfe386SStefan Wahren                        "dma13",
96*dfcfe386SStefan Wahren                        "dma14",
97*dfcfe386SStefan Wahren                        "dma-shared-all";
98*dfcfe386SStefan Wahren        #dma-cells = <1>;
99*dfcfe386SStefan Wahren        brcm,dma-channel-mask = <0x7f35>;
100*dfcfe386SStefan Wahren    };
101*dfcfe386SStefan Wahren
102*dfcfe386SStefan Wahren...
103