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