summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/dma/stericsson,dma40.yaml
blob: 7b94d24d5ef42e8a1d205f106ab3a997611ae387 (plain)
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>;
    };
...