162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/dma/snps,dma-spear1340.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Synopsys Designware DMA Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Viresh Kumar <vireshk@kernel.org>
1162306a36Sopenharmony_ci  - Andy Shevchenko <andriy.shevchenko@linux.intel.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciallOf:
1462306a36Sopenharmony_ci  - $ref: dma-controller.yaml#
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciproperties:
1762306a36Sopenharmony_ci  compatible:
1862306a36Sopenharmony_ci    oneOf:
1962306a36Sopenharmony_ci      - const: snps,dma-spear1340
2062306a36Sopenharmony_ci      - items:
2162306a36Sopenharmony_ci          - enum:
2262306a36Sopenharmony_ci              - renesas,r9a06g032-dma
2362306a36Sopenharmony_ci          - const: renesas,rzn1-dma
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  "#dma-cells":
2762306a36Sopenharmony_ci    minimum: 3
2862306a36Sopenharmony_ci    maximum: 4
2962306a36Sopenharmony_ci    description: |
3062306a36Sopenharmony_ci      First cell is a phandle pointing to the DMA controller. Second one is
3162306a36Sopenharmony_ci      the DMA request line number. Third cell is the memory master identifier
3262306a36Sopenharmony_ci      for transfers on dynamically allocated channel. Fourth cell is the
3362306a36Sopenharmony_ci      peripheral master identifier for transfers on an allocated channel. Fifth
3462306a36Sopenharmony_ci      cell is an optional mask of the DMA channels permitted to be allocated
3562306a36Sopenharmony_ci      for the corresponding client device.
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  reg:
3862306a36Sopenharmony_ci    maxItems: 1
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci  interrupts:
4162306a36Sopenharmony_ci    maxItems: 1
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  clocks:
4462306a36Sopenharmony_ci    maxItems: 1
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  clock-names:
4762306a36Sopenharmony_ci    description: AHB interface reference clock.
4862306a36Sopenharmony_ci    const: hclk
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci  dma-channels:
5162306a36Sopenharmony_ci    description: |
5262306a36Sopenharmony_ci      Number of DMA channels supported by the controller. In case if
5362306a36Sopenharmony_ci      not specified the driver will try to auto-detect this and
5462306a36Sopenharmony_ci      the rest of the optional parameters.
5562306a36Sopenharmony_ci    minimum: 1
5662306a36Sopenharmony_ci    maximum: 8
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci  dma-requests:
5962306a36Sopenharmony_ci    minimum: 1
6062306a36Sopenharmony_ci    maximum: 16
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  dma-masters:
6362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
6462306a36Sopenharmony_ci    description: |
6562306a36Sopenharmony_ci      Number of DMA masters supported by the controller. In case if
6662306a36Sopenharmony_ci      not specified the driver will try to auto-detect this and
6762306a36Sopenharmony_ci      the rest of the optional parameters.
6862306a36Sopenharmony_ci    minimum: 1
6962306a36Sopenharmony_ci    maximum: 4
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  chan_allocation_order:
7262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
7362306a36Sopenharmony_ci    description: |
7462306a36Sopenharmony_ci      DMA channels allocation order specifier. Zero means ascending order
7562306a36Sopenharmony_ci      (first free allocated), while one - descending (last free allocated).
7662306a36Sopenharmony_ci    default: 0
7762306a36Sopenharmony_ci    enum: [0, 1]
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci  chan_priority:
8062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
8162306a36Sopenharmony_ci    description: |
8262306a36Sopenharmony_ci      DMA channels priority order. Zero means ascending channels priority
8362306a36Sopenharmony_ci      so the very first channel has the highest priority. While 1 means
8462306a36Sopenharmony_ci      descending priority (the last channel has the highest priority).
8562306a36Sopenharmony_ci    default: 0
8662306a36Sopenharmony_ci    enum: [0, 1]
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci  block_size:
8962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
9062306a36Sopenharmony_ci    description: Maximum block size supported by the DMA controller.
9162306a36Sopenharmony_ci    enum: [3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095]
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci  data-width:
9462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
9562306a36Sopenharmony_ci    description: Data bus width per each DMA master in bytes.
9662306a36Sopenharmony_ci    items:
9762306a36Sopenharmony_ci      maxItems: 4
9862306a36Sopenharmony_ci      items:
9962306a36Sopenharmony_ci        enum: [4, 8, 16, 32]
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci  data_width:
10262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
10362306a36Sopenharmony_ci    deprecated: true
10462306a36Sopenharmony_ci    description: |
10562306a36Sopenharmony_ci      Data bus width per each DMA master in (2^n * 8) bits. This property is
10662306a36Sopenharmony_ci      deprecated. It' usage is discouraged in favor of data-width one. Moreover
10762306a36Sopenharmony_ci      the property incorrectly permits to define data-bus width of 8 and 16
10862306a36Sopenharmony_ci      bits, which is impossible in accordance with DW DMAC IP-core data book.
10962306a36Sopenharmony_ci    items:
11062306a36Sopenharmony_ci      maxItems: 4
11162306a36Sopenharmony_ci      items:
11262306a36Sopenharmony_ci        enum:
11362306a36Sopenharmony_ci          - 0 # 8 bits
11462306a36Sopenharmony_ci          - 1 # 16 bits
11562306a36Sopenharmony_ci          - 2 # 32 bits
11662306a36Sopenharmony_ci          - 3 # 64 bits
11762306a36Sopenharmony_ci          - 4 # 128 bits
11862306a36Sopenharmony_ci          - 5 # 256 bits
11962306a36Sopenharmony_ci        default: 0
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci  multi-block:
12262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
12362306a36Sopenharmony_ci    description: |
12462306a36Sopenharmony_ci      LLP-based multi-block transfer supported by hardware per
12562306a36Sopenharmony_ci      each DMA channel.
12662306a36Sopenharmony_ci    items:
12762306a36Sopenharmony_ci      maxItems: 8
12862306a36Sopenharmony_ci      items:
12962306a36Sopenharmony_ci        enum: [0, 1]
13062306a36Sopenharmony_ci        default: 1
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci  snps,max-burst-len:
13362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
13462306a36Sopenharmony_ci    description: |
13562306a36Sopenharmony_ci      Maximum length of the burst transactions supported by the controller.
13662306a36Sopenharmony_ci      This property defines the upper limit of the run-time burst setting
13762306a36Sopenharmony_ci      (CTLx.SRC_MSIZE/CTLx.DST_MSIZE fields) so the allowed burst length
13862306a36Sopenharmony_ci      will be from 1 to max-burst-len words. It's an array property with one
13962306a36Sopenharmony_ci      cell per channel in the units determined by the value set in the
14062306a36Sopenharmony_ci      CTLx.SRC_TR_WIDTH/CTLx.DST_TR_WIDTH fields (data width).
14162306a36Sopenharmony_ci    items:
14262306a36Sopenharmony_ci      maxItems: 8
14362306a36Sopenharmony_ci      items:
14462306a36Sopenharmony_ci        enum: [4, 8, 16, 32, 64, 128, 256]
14562306a36Sopenharmony_ci        default: 256
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci  snps,dma-protection-control:
14862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
14962306a36Sopenharmony_ci    description: |
15062306a36Sopenharmony_ci      Bits one-to-one passed to the AHB HPROT[3:1] bus. Each bit setting
15162306a36Sopenharmony_ci      indicates the following features: bit 0 - privileged mode,
15262306a36Sopenharmony_ci      bit 1 - DMA is bufferable, bit 2 - DMA is cacheable.
15362306a36Sopenharmony_ci    default: 0
15462306a36Sopenharmony_ci    minimum: 0
15562306a36Sopenharmony_ci    maximum: 7
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ciunevaluatedProperties: false
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_cirequired:
16062306a36Sopenharmony_ci  - compatible
16162306a36Sopenharmony_ci  - "#dma-cells"
16262306a36Sopenharmony_ci  - reg
16362306a36Sopenharmony_ci  - interrupts
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ciexamples:
16662306a36Sopenharmony_ci  - |
16762306a36Sopenharmony_ci    dma-controller@fc000000 {
16862306a36Sopenharmony_ci      compatible = "snps,dma-spear1340";
16962306a36Sopenharmony_ci      reg = <0xfc000000 0x1000>;
17062306a36Sopenharmony_ci      interrupt-parent = <&vic1>;
17162306a36Sopenharmony_ci      interrupts = <12>;
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci      dma-channels = <8>;
17462306a36Sopenharmony_ci      dma-requests = <16>;
17562306a36Sopenharmony_ci      dma-masters = <4>;
17662306a36Sopenharmony_ci      #dma-cells = <3>;
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci      chan_allocation_order = <1>;
17962306a36Sopenharmony_ci      chan_priority = <1>;
18062306a36Sopenharmony_ci      block_size = <0xfff>;
18162306a36Sopenharmony_ci      data-width = <8 8>;
18262306a36Sopenharmony_ci      multi-block = <0 0 0 0 0 0 0 0>;
18362306a36Sopenharmony_ci      snps,max-burst-len = <16 16 4 4 4 4 4 4>;
18462306a36Sopenharmony_ci    };
18562306a36Sopenharmony_ci...
186