mirror of
https://github.com/torvalds/linux.git
synced 2026-04-22 00:33:58 -04:00
Extend the DMA40 bindings so that we can pass two SRAM segments as phandles instead of directly referring to the memory address in the second reg cell. This enables more granular control over the SRAM, and adds the optiona LCLA SRAM segment as well. Deprecate the old way of passing LCPA as a second reg cell, make sram compulsory. Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20230417-ux500-dma40-cleanup-v3-1-60bfa6785968@linaro.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
180 lines
5.4 KiB
YAML
180 lines
5.4 KiB
YAML
# 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 elegible 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>;
|
|
};
|
|
...
|