162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/dma/stericsson,dma40.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: ST-Ericsson DMA40 DMA Engine 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Linus Walleij <linus.walleij@linaro.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciallOf: 1362306a36Sopenharmony_ci - $ref: dma-controller.yaml# 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciproperties: 1662306a36Sopenharmony_ci "#dma-cells": 1762306a36Sopenharmony_ci const: 3 1862306a36Sopenharmony_ci description: | 1962306a36Sopenharmony_ci The first cell is the unique device channel number as indicated by this 2062306a36Sopenharmony_ci table for DB8500 which is the only ASIC known to use DMA40: 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci 0: SPI controller 0 2362306a36Sopenharmony_ci 1: SD/MMC controller 0 (unused) 2462306a36Sopenharmony_ci 2: SD/MMC controller 1 (unused) 2562306a36Sopenharmony_ci 3: SD/MMC controller 2 (unused) 2662306a36Sopenharmony_ci 4: I2C port 1 2762306a36Sopenharmony_ci 5: I2C port 3 2862306a36Sopenharmony_ci 6: I2C port 2 2962306a36Sopenharmony_ci 7: I2C port 4 3062306a36Sopenharmony_ci 8: Synchronous Serial Port SSP0 3162306a36Sopenharmony_ci 9: Synchronous Serial Port SSP1 3262306a36Sopenharmony_ci 10: Multi-Channel Display Engine MCDE RX 3362306a36Sopenharmony_ci 11: UART port 2 3462306a36Sopenharmony_ci 12: UART port 1 3562306a36Sopenharmony_ci 13: UART port 0 3662306a36Sopenharmony_ci 14: Multirate Serial Port MSP2 3762306a36Sopenharmony_ci 15: I2C port 0 3862306a36Sopenharmony_ci 16: USB OTG in/out endpoints 7 & 15 3962306a36Sopenharmony_ci 17: USB OTG in/out endpoints 6 & 14 4062306a36Sopenharmony_ci 18: USB OTG in/out endpoints 5 & 13 4162306a36Sopenharmony_ci 19: USB OTG in/out endpoints 4 & 12 4262306a36Sopenharmony_ci 20: SLIMbus or HSI channel 0 4362306a36Sopenharmony_ci 21: SLIMbus or HSI channel 1 4462306a36Sopenharmony_ci 22: SLIMbus or HSI channel 2 4562306a36Sopenharmony_ci 23: SLIMbus or HSI channel 3 4662306a36Sopenharmony_ci 24: Multimedia DSP SXA0 4762306a36Sopenharmony_ci 25: Multimedia DSP SXA1 4862306a36Sopenharmony_ci 26: Multimedia DSP SXA2 4962306a36Sopenharmony_ci 27: Multimedia DSP SXA3 5062306a36Sopenharmony_ci 28: SD/MMC controller 2 5162306a36Sopenharmony_ci 29: SD/MMC controller 0 5262306a36Sopenharmony_ci 30: MSP port 1 on DB8500 v1, MSP port 3 on DB8500 v2 5362306a36Sopenharmony_ci 31: MSP port 0 or SLIMbus channel 0 5462306a36Sopenharmony_ci 32: SD/MMC controller 1 5562306a36Sopenharmony_ci 33: SPI controller 2 5662306a36Sopenharmony_ci 34: i2c3 RX2 TX2 5762306a36Sopenharmony_ci 35: SPI controller 1 5862306a36Sopenharmony_ci 36: USB OTG in/out endpoints 3 & 11 5962306a36Sopenharmony_ci 37: USB OTG in/out endpoints 2 & 10 6062306a36Sopenharmony_ci 38: USB OTG in/out endpoints 1 & 9 6162306a36Sopenharmony_ci 39: USB OTG in/out endpoints 8 6262306a36Sopenharmony_ci 40: SPI controller 3 6362306a36Sopenharmony_ci 41: SD/MMC controller 3 6462306a36Sopenharmony_ci 42: SD/MMC controller 4 6562306a36Sopenharmony_ci 43: SD/MMC controller 5 6662306a36Sopenharmony_ci 44: Multimedia DSP SXA4 6762306a36Sopenharmony_ci 45: Multimedia DSP SXA5 6862306a36Sopenharmony_ci 46: SLIMbus channel 8 or Multimedia DSP SXA6 6962306a36Sopenharmony_ci 47: SLIMbus channel 9 or Multimedia DSP SXA7 7062306a36Sopenharmony_ci 48: Crypto Accelerator 1 7162306a36Sopenharmony_ci 49: Crypto Accelerator 1 TX or Hash Accelerator 1 TX 7262306a36Sopenharmony_ci 50: Hash Accelerator 1 TX 7362306a36Sopenharmony_ci 51: memcpy TX (to be used by the DMA driver for memcpy operations) 7462306a36Sopenharmony_ci 52: SLIMbus or HSI channel 4 7562306a36Sopenharmony_ci 53: SLIMbus or HSI channel 5 7662306a36Sopenharmony_ci 54: SLIMbus or HSI channel 6 7762306a36Sopenharmony_ci 55: SLIMbus or HSI channel 7 7862306a36Sopenharmony_ci 56: memcpy (to be used by the DMA driver for memcpy operations) 7962306a36Sopenharmony_ci 57: memcpy (to be used by the DMA driver for memcpy operations) 8062306a36Sopenharmony_ci 58: memcpy (to be used by the DMA driver for memcpy operations) 8162306a36Sopenharmony_ci 59: memcpy (to be used by the DMA driver for memcpy operations) 8262306a36Sopenharmony_ci 60: memcpy (to be used by the DMA driver for memcpy operations) 8362306a36Sopenharmony_ci 61: Crypto Accelerator 0 8462306a36Sopenharmony_ci 62: Crypto Accelerator 0 TX or Hash Accelerator 0 TX 8562306a36Sopenharmony_ci 63: Hash Accelerator 0 TX 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci The second cell is the DMA request line number. This is only used when 8862306a36Sopenharmony_ci a fixed channel is allocated, and indicated by setting bit 3 in the 8962306a36Sopenharmony_ci flags field (see below). 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci The third cell is a 32bit flags bitfield with the following possible 9262306a36Sopenharmony_ci bits set: 9362306a36Sopenharmony_ci 0x00000001 (bit 0) - mode: 9462306a36Sopenharmony_ci Logical channel when unset 9562306a36Sopenharmony_ci Physical channel when set 9662306a36Sopenharmony_ci 0x00000002 (bit 1) - direction: 9762306a36Sopenharmony_ci Memory to Device when unset 9862306a36Sopenharmony_ci Device to Memory when set 9962306a36Sopenharmony_ci 0x00000004 (bit 2) - endianness: 10062306a36Sopenharmony_ci Little endian when unset 10162306a36Sopenharmony_ci Big endian when set 10262306a36Sopenharmony_ci 0x00000008 (bit 3) - use fixed channel: 10362306a36Sopenharmony_ci Use automatic channel selection when unset 10462306a36Sopenharmony_ci Use DMA request line number when set 10562306a36Sopenharmony_ci 0x00000010 (bit 4) - set channel as high priority: 10662306a36Sopenharmony_ci Normal priority when unset 10762306a36Sopenharmony_ci High priority when set 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci compatible: 11062306a36Sopenharmony_ci items: 11162306a36Sopenharmony_ci - const: stericsson,db8500-dma40 11262306a36Sopenharmony_ci - const: stericsson,dma40 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci reg: 11562306a36Sopenharmony_ci oneOf: 11662306a36Sopenharmony_ci - items: 11762306a36Sopenharmony_ci - description: DMA40 memory base 11862306a36Sopenharmony_ci - items: 11962306a36Sopenharmony_ci - description: DMA40 memory base 12062306a36Sopenharmony_ci - description: LCPA memory base, deprecated, use eSRAM pool instead 12162306a36Sopenharmony_ci deprecated: true 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci reg-names: 12562306a36Sopenharmony_ci oneOf: 12662306a36Sopenharmony_ci - items: 12762306a36Sopenharmony_ci - const: base 12862306a36Sopenharmony_ci - items: 12962306a36Sopenharmony_ci - const: base 13062306a36Sopenharmony_ci - const: lcpa 13162306a36Sopenharmony_ci deprecated: true 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci interrupts: 13462306a36Sopenharmony_ci maxItems: 1 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci clocks: 13762306a36Sopenharmony_ci maxItems: 1 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci sram: 14062306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 14162306a36Sopenharmony_ci description: A phandle array with inner size 1 (no arg cells). 14262306a36Sopenharmony_ci First phandle is the LCPA (Logical Channel Parameter Address) memory. 14362306a36Sopenharmony_ci Second phandle is the LCLA (Logical Channel Link base Address) memory. 14462306a36Sopenharmony_ci maxItems: 2 14562306a36Sopenharmony_ci items: 14662306a36Sopenharmony_ci maxItems: 1 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci memcpy-channels: 14962306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-array 15062306a36Sopenharmony_ci description: Array of u32 elements indicating which channels on the DMA 15162306a36Sopenharmony_ci engine are eligible for memcpy transfers 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_cirequired: 15462306a36Sopenharmony_ci - "#dma-cells" 15562306a36Sopenharmony_ci - compatible 15662306a36Sopenharmony_ci - reg 15762306a36Sopenharmony_ci - interrupts 15862306a36Sopenharmony_ci - clocks 15962306a36Sopenharmony_ci - sram 16062306a36Sopenharmony_ci - memcpy-channels 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ciadditionalProperties: false 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_ciexamples: 16562306a36Sopenharmony_ci - | 16662306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 16762306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 16862306a36Sopenharmony_ci #include <dt-bindings/mfd/dbx500-prcmu.h> 16962306a36Sopenharmony_ci dma-controller@801c0000 { 17062306a36Sopenharmony_ci compatible = "stericsson,db8500-dma40", "stericsson,dma40"; 17162306a36Sopenharmony_ci reg = <0x801c0000 0x1000>; 17262306a36Sopenharmony_ci reg-names = "base"; 17362306a36Sopenharmony_ci sram = <&lcpa>, <&lcla>; 17462306a36Sopenharmony_ci interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 17562306a36Sopenharmony_ci #dma-cells = <3>; 17662306a36Sopenharmony_ci memcpy-channels = <56 57 58 59 60>; 17762306a36Sopenharmony_ci clocks = <&prcmu_clk PRCMU_DMACLK>; 17862306a36Sopenharmony_ci }; 17962306a36Sopenharmony_ci... 180