Documentation / devicetree / bindings / dma / fsl-qdma.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/dma/fsl-qdma.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP Layerscape SoC qDMA Controller

maintainers:
  - Frank Li <Frank.Li@nxp.com>

properties:
  compatible:
    enum:
      - fsl,ls1021a-qdma
      - fsl,ls1028a-qdma
      - fsl,ls1043a-qdma
      - fsl,ls1046a-qdma

  reg:
    items:
      - description: Controller regs
      - description: Status regs
      - description: Block regs

  interrupts:
    minItems: 2
    maxItems: 5

  interrupt-names:
    minItems: 2
    items:
      - const: qdma-error
      - const: qdma-queue0
      - const: qdma-queue1
      - const: qdma-queue2
      - const: qdma-queue3

  dma-channels:
    minimum: 1
    maximum: 64

  fsl,dma-queues:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Should contain number of queues supported.
    minimum: 1
    maximum: 4

  block-number:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: the virtual block number

  block-offset:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: the offset of different virtual block

  status-sizes:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: status queue size of per virtual block

  queue-sizes:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    description:
      command queue size of per virtual block, the size number
      based on queues

  big-endian:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      If present registers and hardware scatter/gather descriptors
      of the qDMA are implemented in big endian mode, otherwise in little
      mode.

required:
  - compatible
  - reg
  - interrupts
  - interrupt-names
  - fsl,dma-queues
  - block-number
  - block-offset
  - status-sizes
  - queue-sizes

allOf:
  - $ref: dma-controller.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - fsl,ls1028a-qdma
              - fsl,ls1043a-qdma
              - fsl,ls1046a-qdma
    then:
      properties:
        interrupts:
          minItems: 5
        interrupt-names:
          minItems: 5
    else:
      properties:
        interrupts:
          maxItems: 3
        interrupt-names:
          maxItems: 3

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
 
    dma-controller@8390000 {
        compatible = "fsl,ls1021a-qdma";
        reg = <0x8388000 0x1000>, /* Controller regs */
              <0x8389000 0x1000>, /* Status regs */
              <0x838a000 0x2000>; /* Block regs */
        interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
        interrupt-names = "qdma-error", "qdma-queue0", "qdma-queue1";
        #dma-cells = <1>;
        dma-channels = <8>;
        block-number = <2>;
        block-offset = <0x1000>;
        status-sizes = <64>;
        queue-sizes = <64 64>;
        big-endian;
        fsl,dma-queues = <2>;
    };