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