Documentation / devicetree / bindings / dma / stericsson,dma40.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 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 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/dma/stericsson,dma40.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ST-Ericsson DMA40 DMA Engine

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

allOf:
  - $ref: dma-controller.yaml#

properties:
  "#dma-cells":
    const: 3
    description: |
      The first cell is the unique device channel number as indicated by this
      table for DB8500 which is the only ASIC known to use DMA40:
 
      0:  SPI controller 0
      1:  SD/MMC controller 0 (unused)
      2:  SD/MMC controller 1 (unused)
      3:  SD/MMC controller 2 (unused)
      4:  I2C port 1
      5:  I2C port 3
      6:  I2C port 2
      7:  I2C port 4
      8:  Synchronous Serial Port SSP0
      9:  Synchronous Serial Port SSP1
      10: Multi-Channel Display Engine MCDE RX
      11: UART port 2
      12: UART port 1
      13: UART port 0
      14: Multirate Serial Port MSP2
      15: I2C port 0
      16: USB OTG in/out endpoints 7 & 15
      17: USB OTG in/out endpoints 6 & 14
      18: USB OTG in/out endpoints 5 & 13
      19: USB OTG in/out endpoints 4 & 12
      20: SLIMbus or HSI channel 0
      21: SLIMbus or HSI channel 1
      22: SLIMbus or HSI channel 2
      23: SLIMbus or HSI channel 3
      24: Multimedia DSP SXA0
      25: Multimedia DSP SXA1
      26: Multimedia DSP SXA2
      27: Multimedia DSP SXA3
      28: SD/MMC controller 2
      29: SD/MMC controller 0
      30: MSP port 1 on DB8500 v1, MSP port 3 on DB8500 v2
      31: MSP port 0 or SLIMbus channel 0
      32: SD/MMC controller 1
      33: SPI controller 2
      34: i2c3 RX2 TX2
      35: SPI controller 1
      36: USB OTG in/out endpoints 3 & 11
      37: USB OTG in/out endpoints 2 & 10
      38: USB OTG in/out endpoints 1 & 9
      39: USB OTG in/out endpoints 8
      40: SPI controller 3
      41: SD/MMC controller 3
      42: SD/MMC controller 4
      43: SD/MMC controller 5
      44: Multimedia DSP SXA4
      45: Multimedia DSP SXA5
      46: SLIMbus channel 8 or Multimedia DSP SXA6
      47: SLIMbus channel 9 or Multimedia DSP SXA7
      48: Crypto Accelerator 1
      49: Crypto Accelerator 1 TX or Hash Accelerator 1 TX
      50: Hash Accelerator 1 TX
      51: memcpy TX (to be used by the DMA driver for memcpy operations)
      52: SLIMbus or HSI channel 4
      53: SLIMbus or HSI channel 5
      54: SLIMbus or HSI channel 6
      55: SLIMbus or HSI channel 7
      56: memcpy (to be used by the DMA driver for memcpy operations)
      57: memcpy (to be used by the DMA driver for memcpy operations)
      58: memcpy (to be used by the DMA driver for memcpy operations)
      59: memcpy (to be used by the DMA driver for memcpy operations)
      60: memcpy (to be used by the DMA driver for memcpy operations)
      61: Crypto Accelerator 0
      62: Crypto Accelerator 0 TX or Hash Accelerator 0 TX
      63: Hash Accelerator 0 TX
 
      The second cell is the DMA request line number. This is only used when
      a fixed channel is allocated, and indicated by setting bit 3 in the
      flags field (see below).
 
      The third cell is a 32bit flags bitfield with the following possible
      bits set:
      0x00000001 (bit 0) - mode:
        Logical channel when unset
        Physical channel when set
      0x00000002 (bit 1) - direction:
        Memory to Device when unset
        Device to Memory when set
      0x00000004 (bit 2) - endianness:
        Little endian when unset
        Big endian when set
      0x00000008 (bit 3) - use fixed channel:
        Use automatic channel selection when unset
        Use DMA request line number when set
      0x00000010 (bit 4) - set channel as high priority:
        Normal priority when unset
        High priority when set

  compatible:
    items:
      - const: stericsson,db8500-dma40
      - const: stericsson,dma40

  reg:
    oneOf:
      - items:
          - description: DMA40 memory base
      - items:
          - description: DMA40 memory base
          - description: LCPA memory base, deprecated, use eSRAM pool instead
        deprecated: true
 

  reg-names:
    oneOf:
      - items:
          - const: base
      - items:
          - const: base
          - const: lcpa
        deprecated: true

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

  sram:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: A phandle array with inner size 1 (no arg cells).
      First phandle is the LCPA (Logical Channel Parameter Address) memory.
      Second phandle is the  LCLA (Logical Channel Link base Address) memory.
    maxItems: 2
    items:
      maxItems: 1

  memcpy-channels:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    description: Array of u32 elements indicating which channels on the DMA
      engine are eligible for memcpy transfers

required:
  - "#dma-cells"
  - compatible
  - reg
  - interrupts
  - clocks
  - sram
  - memcpy-channels

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/mfd/dbx500-prcmu.h>
    dma-controller@801c0000 {
        compatible = "stericsson,db8500-dma40", "stericsson,dma40";
        reg = <0x801c0000 0x1000>;
        reg-names = "base";
        sram = <&lcpa>, <&lcla>;
        interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
        #dma-cells = <3>;
        memcpy-channels = <56 57 58 59 60>;
        clocks = <&prcmu_clk PRCMU_DMACLK>;
    };
...