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/ingenic,dma.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Ingenic SoCs DMA Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Paul Cercueil <paul@crapouillou.net>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciallOf:
1362306a36Sopenharmony_ci  - $ref: dma-controller.yaml#
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciproperties:
1662306a36Sopenharmony_ci  compatible:
1762306a36Sopenharmony_ci    oneOf:
1862306a36Sopenharmony_ci      - enum:
1962306a36Sopenharmony_ci          - ingenic,jz4740-dma
2062306a36Sopenharmony_ci          - ingenic,jz4725b-dma
2162306a36Sopenharmony_ci          - ingenic,jz4755-dma
2262306a36Sopenharmony_ci          - ingenic,jz4760-dma
2362306a36Sopenharmony_ci          - ingenic,jz4760-bdma
2462306a36Sopenharmony_ci          - ingenic,jz4760-mdma
2562306a36Sopenharmony_ci          - ingenic,jz4760b-dma
2662306a36Sopenharmony_ci          - ingenic,jz4760b-bdma
2762306a36Sopenharmony_ci          - ingenic,jz4760b-mdma
2862306a36Sopenharmony_ci          - ingenic,jz4770-dma
2962306a36Sopenharmony_ci          - ingenic,jz4780-dma
3062306a36Sopenharmony_ci          - ingenic,x1000-dma
3162306a36Sopenharmony_ci          - ingenic,x1830-dma
3262306a36Sopenharmony_ci      - items:
3362306a36Sopenharmony_ci          - const: ingenic,jz4770-bdma
3462306a36Sopenharmony_ci          - const: ingenic,jz4760b-bdma
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  reg:
3762306a36Sopenharmony_ci    items:
3862306a36Sopenharmony_ci      - description: Channel-specific registers
3962306a36Sopenharmony_ci      - description: System control registers
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci  interrupts:
4262306a36Sopenharmony_ci    maxItems: 1
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  clocks:
4562306a36Sopenharmony_ci    maxItems: 1
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  "#dma-cells":
4862306a36Sopenharmony_ci    enum: [2, 3]
4962306a36Sopenharmony_ci    description: >
5062306a36Sopenharmony_ci      DMA clients must use the format described in dma.txt, giving a phandle
5162306a36Sopenharmony_ci      to the DMA controller plus the following integer cells:
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci      - Request type: The DMA request type specifies the device endpoint that
5462306a36Sopenharmony_ci        will be the source or destination of the DMA transfer.
5562306a36Sopenharmony_ci        If "#dma-cells" is 2, the request type is a single cell, and the
5662306a36Sopenharmony_ci        direction will be unidirectional (either RX or TX but not both).
5762306a36Sopenharmony_ci        If "#dma-cells" is 3, the request type has two cells; the first
5862306a36Sopenharmony_ci        one corresponds to the host to device direction (TX), the second one
5962306a36Sopenharmony_ci        corresponds to the device to host direction (RX). The DMA channel is
6062306a36Sopenharmony_ci        then bidirectional.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci      - Channel: If set to 0xffffffff, any available channel will be allocated
6362306a36Sopenharmony_ci        for the client. Otherwise, the exact channel specified will be used.
6462306a36Sopenharmony_ci        The channel should be reserved on the DMA controller using the
6562306a36Sopenharmony_ci        ingenic,reserved-channels property.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  ingenic,reserved-channels:
6862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
6962306a36Sopenharmony_ci    description: >
7062306a36Sopenharmony_ci      Bitmask of channels to reserve for devices that need a specific
7162306a36Sopenharmony_ci      channel. These channels will only be assigned when explicitly
7262306a36Sopenharmony_ci      requested by a client. The primary use for this is channels 0 and
7362306a36Sopenharmony_ci      1, which can be configured to have special behaviour for NAND/BCH
7462306a36Sopenharmony_ci      when using programmable firmware.
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_cirequired:
7762306a36Sopenharmony_ci  - compatible
7862306a36Sopenharmony_ci  - reg
7962306a36Sopenharmony_ci  - interrupts
8062306a36Sopenharmony_ci  - clocks
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciunevaluatedProperties: false
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ciexamples:
8562306a36Sopenharmony_ci  - |
8662306a36Sopenharmony_ci    #include <dt-bindings/clock/ingenic,jz4780-cgu.h>
8762306a36Sopenharmony_ci    dma: dma-controller@13420000 {
8862306a36Sopenharmony_ci      compatible = "ingenic,jz4780-dma";
8962306a36Sopenharmony_ci      reg = <0x13420000 0x400>, <0x13421000 0x40>;
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci      interrupt-parent = <&intc>;
9262306a36Sopenharmony_ci      interrupts = <10>;
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci      clocks = <&cgu JZ4780_CLK_PDMA>;
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci      #dma-cells = <2>;
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci      ingenic,reserved-channels = <0x3>;
9962306a36Sopenharmony_ci    };
100