1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/dma/stericsson,dma40.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: ST-Ericsson DMA40 DMA Engine
8
9maintainers:
10  - Linus Walleij <linus.walleij@linaro.org>
11
12allOf:
13  - $ref: dma-controller.yaml#
14
15properties:
16  "#dma-cells":
17    const: 3
18    description: |
19      The first cell is the unique device channel number as indicated by this
20      table for DB8500 which is the only ASIC known to use DMA40:
21
22      0:  SPI controller 0
23      1:  SD/MMC controller 0 (unused)
24      2:  SD/MMC controller 1 (unused)
25      3:  SD/MMC controller 2 (unused)
26      4:  I2C port 1
27      5:  I2C port 3
28      6:  I2C port 2
29      7:  I2C port 4
30      8:  Synchronous Serial Port SSP0
31      9:  Synchronous Serial Port SSP1
32      10: Multi-Channel Display Engine MCDE RX
33      11: UART port 2
34      12: UART port 1
35      13: UART port 0
36      14: Multirate Serial Port MSP2
37      15: I2C port 0
38      16: USB OTG in/out endpoints 7 & 15
39      17: USB OTG in/out endpoints 6 & 14
40      18: USB OTG in/out endpoints 5 & 13
41      19: USB OTG in/out endpoints 4 & 12
42      20: SLIMbus or HSI channel 0
43      21: SLIMbus or HSI channel 1
44      22: SLIMbus or HSI channel 2
45      23: SLIMbus or HSI channel 3
46      24: Multimedia DSP SXA0
47      25: Multimedia DSP SXA1
48      26: Multimedia DSP SXA2
49      27: Multimedia DSP SXA3
50      28: SD/MMC controller 2
51      29: SD/MMC controller 0
52      30: MSP port 1 on DB8500 v1, MSP port 3 on DB8500 v2
53      31: MSP port 0 or SLIMbus channel 0
54      32: SD/MMC controller 1
55      33: SPI controller 2
56      34: i2c3 RX2 TX2
57      35: SPI controller 1
58      36: USB OTG in/out endpoints 3 & 11
59      37: USB OTG in/out endpoints 2 & 10
60      38: USB OTG in/out endpoints 1 & 9
61      39: USB OTG in/out endpoints 8
62      40: SPI controller 3
63      41: SD/MMC controller 3
64      42: SD/MMC controller 4
65      43: SD/MMC controller 5
66      44: Multimedia DSP SXA4
67      45: Multimedia DSP SXA5
68      46: SLIMbus channel 8 or Multimedia DSP SXA6
69      47: SLIMbus channel 9 or Multimedia DSP SXA7
70      48: Crypto Accelerator 1
71      49: Crypto Accelerator 1 TX or Hash Accelerator 1 TX
72      50: Hash Accelerator 1 TX
73      51: memcpy TX (to be used by the DMA driver for memcpy operations)
74      52: SLIMbus or HSI channel 4
75      53: SLIMbus or HSI channel 5
76      54: SLIMbus or HSI channel 6
77      55: SLIMbus or HSI channel 7
78      56: memcpy (to be used by the DMA driver for memcpy operations)
79      57: memcpy (to be used by the DMA driver for memcpy operations)
80      58: memcpy (to be used by the DMA driver for memcpy operations)
81      59: memcpy (to be used by the DMA driver for memcpy operations)
82      60: memcpy (to be used by the DMA driver for memcpy operations)
83      61: Crypto Accelerator 0
84      62: Crypto Accelerator 0 TX or Hash Accelerator 0 TX
85      63: Hash Accelerator 0 TX
86
87      The second cell is the DMA request line number. This is only used when
88      a fixed channel is allocated, and indicated by setting bit 3 in the
89      flags field (see below).
90
91      The third cell is a 32bit flags bitfield with the following possible
92      bits set:
93      0x00000001 (bit 0) - mode:
94        Logical channel when unset
95        Physical channel when set
96      0x00000002 (bit 1) - direction:
97        Memory to Device when unset
98        Device to Memory when set
99      0x00000004 (bit 2) - endianness:
100        Little endian when unset
101        Big endian when set
102      0x00000008 (bit 3) - use fixed channel:
103        Use automatic channel selection when unset
104        Use DMA request line number when set
105      0x00000010 (bit 4) - set channel as high priority:
106        Normal priority when unset
107        High priority when set
108
109  compatible:
110    items:
111      - const: stericsson,db8500-dma40
112      - const: stericsson,dma40
113
114  reg:
115    oneOf:
116      - items:
117          - description: DMA40 memory base
118      - items:
119          - description: DMA40 memory base
120          - description: LCPA memory base, deprecated, use eSRAM pool instead
121        deprecated: true
122
123
124  reg-names:
125    oneOf:
126      - items:
127          - const: base
128      - items:
129          - const: base
130          - const: lcpa
131        deprecated: true
132
133  interrupts:
134    maxItems: 1
135
136  clocks:
137    maxItems: 1
138
139  sram:
140    $ref: /schemas/types.yaml#/definitions/phandle-array
141    description: A phandle array with inner size 1 (no arg cells).
142      First phandle is the LCPA (Logical Channel Parameter Address) memory.
143      Second phandle is the  LCLA (Logical Channel Link base Address) memory.
144    maxItems: 2
145    items:
146      maxItems: 1
147
148  memcpy-channels:
149    $ref: /schemas/types.yaml#/definitions/uint32-array
150    description: Array of u32 elements indicating which channels on the DMA
151      engine are elegible for memcpy transfers
152
153required:
154  - "#dma-cells"
155  - compatible
156  - reg
157  - interrupts
158  - clocks
159  - sram
160  - memcpy-channels
161
162additionalProperties: false
163
164examples:
165  - |
166    #include <dt-bindings/interrupt-controller/irq.h>
167    #include <dt-bindings/interrupt-controller/arm-gic.h>
168    #include <dt-bindings/mfd/dbx500-prcmu.h>
169    dma-controller@801c0000 {
170        compatible = "stericsson,db8500-dma40", "stericsson,dma40";
171        reg = <0x801c0000 0x1000>;
172        reg-names = "base";
173        sram = <&lcpa>, <&lcla>;
174        interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
175        #dma-cells = <3>;
176        memcpy-channels = <56 57 58 59 60>;
177        clocks = <&prcmu_clk PRCMU_DMACLK>;
178    };
179...
180