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