162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/dma/brcm,bcm2835-dma.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: BCM2835 DMA controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Nicolas Saenz Julienne <nsaenz@kernel.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  The BCM2835 DMA controller has 16 channels in total. Only the lower
1462306a36Sopenharmony_ci  13 channels have an associated IRQ. Some arbitrary channels are used by the
1562306a36Sopenharmony_ci  VideoCore firmware (1,3,6,7 in the current firmware version). The channels
1662306a36Sopenharmony_ci  0, 2 and 3 have special functionality and should not be used by the driver.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciallOf:
1962306a36Sopenharmony_ci  - $ref: dma-controller.yaml#
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciproperties:
2262306a36Sopenharmony_ci  compatible:
2362306a36Sopenharmony_ci    const: brcm,bcm2835-dma
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  reg:
2662306a36Sopenharmony_ci    maxItems: 1
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  interrupts:
2962306a36Sopenharmony_ci    description:
3062306a36Sopenharmony_ci      Should contain the DMA interrupts associated to the DMA channels in
3162306a36Sopenharmony_ci      ascending order.
3262306a36Sopenharmony_ci    minItems: 1
3362306a36Sopenharmony_ci    maxItems: 16
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  interrupt-names:
3662306a36Sopenharmony_ci    minItems: 1
3762306a36Sopenharmony_ci    maxItems: 16
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  '#dma-cells':
4062306a36Sopenharmony_ci    description: The single cell represents the DREQ number.
4162306a36Sopenharmony_ci    const: 1
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  brcm,dma-channel-mask:
4462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
4562306a36Sopenharmony_ci    description:
4662306a36Sopenharmony_ci      Bitmask of available DMA channels in ascending order that are
4762306a36Sopenharmony_ci      not reserved by firmware and are available to the
4862306a36Sopenharmony_ci      kernel. i.e. first channel corresponds to LSB.
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciunevaluatedProperties: false
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_cirequired:
5362306a36Sopenharmony_ci  - compatible
5462306a36Sopenharmony_ci  - reg
5562306a36Sopenharmony_ci  - interrupts
5662306a36Sopenharmony_ci  - "#dma-cells"
5762306a36Sopenharmony_ci  - brcm,dma-channel-mask
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciexamples:
6062306a36Sopenharmony_ci  - |
6162306a36Sopenharmony_ci    dma-controller@7e007000 {
6262306a36Sopenharmony_ci      compatible = "brcm,bcm2835-dma";
6362306a36Sopenharmony_ci      reg = <0x7e007000 0xf00>;
6462306a36Sopenharmony_ci      interrupts = <1 16>,
6562306a36Sopenharmony_ci                   <1 17>,
6662306a36Sopenharmony_ci                   <1 18>,
6762306a36Sopenharmony_ci                   <1 19>,
6862306a36Sopenharmony_ci                   <1 20>,
6962306a36Sopenharmony_ci                   <1 21>,
7062306a36Sopenharmony_ci                   <1 22>,
7162306a36Sopenharmony_ci                   <1 23>,
7262306a36Sopenharmony_ci                   <1 24>,
7362306a36Sopenharmony_ci                   <1 25>,
7462306a36Sopenharmony_ci                   <1 26>,
7562306a36Sopenharmony_ci                   /* dma channel 11-14 share one irq */
7662306a36Sopenharmony_ci                   <1 27>,
7762306a36Sopenharmony_ci                   <1 27>,
7862306a36Sopenharmony_ci                   <1 27>,
7962306a36Sopenharmony_ci                   <1 27>,
8062306a36Sopenharmony_ci                   /* unused shared irq for all channels */
8162306a36Sopenharmony_ci                   <1 28>;
8262306a36Sopenharmony_ci      interrupt-names = "dma0",
8362306a36Sopenharmony_ci                        "dma1",
8462306a36Sopenharmony_ci                        "dma2",
8562306a36Sopenharmony_ci                        "dma3",
8662306a36Sopenharmony_ci                        "dma4",
8762306a36Sopenharmony_ci                        "dma5",
8862306a36Sopenharmony_ci                        "dma6",
8962306a36Sopenharmony_ci                        "dma7",
9062306a36Sopenharmony_ci                        "dma8",
9162306a36Sopenharmony_ci                        "dma9",
9262306a36Sopenharmony_ci                        "dma10",
9362306a36Sopenharmony_ci                        "dma11",
9462306a36Sopenharmony_ci                        "dma12",
9562306a36Sopenharmony_ci                        "dma13",
9662306a36Sopenharmony_ci                        "dma14",
9762306a36Sopenharmony_ci                        "dma-shared-all";
9862306a36Sopenharmony_ci        #dma-cells = <1>;
9962306a36Sopenharmony_ci        brcm,dma-channel-mask = <0x7f35>;
10062306a36Sopenharmony_ci    };
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci...
103