# 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>; }; ...