1b97ee269SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2b97ee269SEmmanuel Vadot%YAML 1.2 3b97ee269SEmmanuel Vadot--- 4b97ee269SEmmanuel Vadot$id: http://devicetree.org/schemas/dma/fsl,edma.yaml# 5b97ee269SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6b97ee269SEmmanuel Vadot 7b97ee269SEmmanuel Vadottitle: Freescale enhanced Direct Memory Access(eDMA) Controller 8b97ee269SEmmanuel Vadot 9b97ee269SEmmanuel Vadotdescription: | 10b97ee269SEmmanuel Vadot The eDMA channels have multiplex capability by programmable 11b97ee269SEmmanuel Vadot memory-mapped registers. channels are split into two groups, called 12b97ee269SEmmanuel Vadot DMAMUX0 and DMAMUX1, specific DMA request source can only be multiplexed 13b97ee269SEmmanuel Vadot by any channel of certain group, DMAMUX0 or DMAMUX1, but not both. 14b97ee269SEmmanuel Vadot 15b97ee269SEmmanuel Vadotmaintainers: 16b97ee269SEmmanuel Vadot - Peng Fan <peng.fan@nxp.com> 17b97ee269SEmmanuel Vadot 18b97ee269SEmmanuel Vadotproperties: 19b97ee269SEmmanuel Vadot compatible: 20b97ee269SEmmanuel Vadot oneOf: 21b97ee269SEmmanuel Vadot - enum: 22b97ee269SEmmanuel Vadot - fsl,vf610-edma 23b97ee269SEmmanuel Vadot - fsl,imx7ulp-edma 24aa1a8ff2SEmmanuel Vadot - fsl,imx8qm-edma 25*7d0873ebSEmmanuel Vadot - fsl,imx8ulp-edma 26aa1a8ff2SEmmanuel Vadot - fsl,imx93-edma3 27aa1a8ff2SEmmanuel Vadot - fsl,imx93-edma4 2801950c46SEmmanuel Vadot - fsl,imx95-edma5 29b97ee269SEmmanuel Vadot - items: 30b97ee269SEmmanuel Vadot - const: fsl,ls1028a-edma 31b97ee269SEmmanuel Vadot - const: fsl,vf610-edma 32b97ee269SEmmanuel Vadot 33b97ee269SEmmanuel Vadot reg: 34aa1a8ff2SEmmanuel Vadot minItems: 1 35b97ee269SEmmanuel Vadot maxItems: 3 36b97ee269SEmmanuel Vadot 37b97ee269SEmmanuel Vadot interrupts: 38aa1a8ff2SEmmanuel Vadot minItems: 1 39aa1a8ff2SEmmanuel Vadot maxItems: 64 40b97ee269SEmmanuel Vadot 41b97ee269SEmmanuel Vadot interrupt-names: 42aa1a8ff2SEmmanuel Vadot minItems: 1 43aa1a8ff2SEmmanuel Vadot maxItems: 64 44b97ee269SEmmanuel Vadot 45b97ee269SEmmanuel Vadot "#dma-cells": 46*7d0873ebSEmmanuel Vadot description: | 47*7d0873ebSEmmanuel Vadot Specifies the number of cells needed to encode an DMA channel. 48*7d0873ebSEmmanuel Vadot 49*7d0873ebSEmmanuel Vadot Encode for cells number 2: 50*7d0873ebSEmmanuel Vadot cell 0: index of dma channel mux instance. 51*7d0873ebSEmmanuel Vadot cell 1: peripheral dma request id. 52*7d0873ebSEmmanuel Vadot 53*7d0873ebSEmmanuel Vadot Encode for cells number 3: 54*7d0873ebSEmmanuel Vadot cell 0: peripheral dma request id. 55*7d0873ebSEmmanuel Vadot cell 1: dma channel priority. 56*7d0873ebSEmmanuel Vadot cell 2: bitmask, defined at include/dt-bindings/dma/fsl-edma.h 57aa1a8ff2SEmmanuel Vadot enum: 58aa1a8ff2SEmmanuel Vadot - 2 59aa1a8ff2SEmmanuel Vadot - 3 60b97ee269SEmmanuel Vadot 61b97ee269SEmmanuel Vadot dma-channels: 62*7d0873ebSEmmanuel Vadot minimum: 1 63*7d0873ebSEmmanuel Vadot maximum: 64 64b97ee269SEmmanuel Vadot 65b97ee269SEmmanuel Vadot clocks: 66aa1a8ff2SEmmanuel Vadot minItems: 1 67*7d0873ebSEmmanuel Vadot maxItems: 33 68b97ee269SEmmanuel Vadot 69b97ee269SEmmanuel Vadot clock-names: 70aa1a8ff2SEmmanuel Vadot minItems: 1 71*7d0873ebSEmmanuel Vadot maxItems: 33 72*7d0873ebSEmmanuel Vadot 73*7d0873ebSEmmanuel Vadot power-domains: 74*7d0873ebSEmmanuel Vadot description: 75*7d0873ebSEmmanuel Vadot The number of power domains matches the number of channels, arranged 76*7d0873ebSEmmanuel Vadot in ascending order according to their associated DMA channels. 77*7d0873ebSEmmanuel Vadot minItems: 1 78*7d0873ebSEmmanuel Vadot maxItems: 64 79b97ee269SEmmanuel Vadot 80b97ee269SEmmanuel Vadot big-endian: 81b97ee269SEmmanuel Vadot description: | 82b97ee269SEmmanuel Vadot If present registers and hardware scatter/gather descriptors of the 83b97ee269SEmmanuel Vadot eDMA are implemented in big endian mode, otherwise in little mode. 84b97ee269SEmmanuel Vadot type: boolean 85b97ee269SEmmanuel Vadot 86b97ee269SEmmanuel Vadotrequired: 87b97ee269SEmmanuel Vadot - "#dma-cells" 88b97ee269SEmmanuel Vadot - compatible 89b97ee269SEmmanuel Vadot - reg 90b97ee269SEmmanuel Vadot - interrupts 91b97ee269SEmmanuel Vadot - dma-channels 92b97ee269SEmmanuel Vadot 93b97ee269SEmmanuel VadotallOf: 94cb7aa33aSEmmanuel Vadot - $ref: dma-controller.yaml# 95b97ee269SEmmanuel Vadot - if: 96b97ee269SEmmanuel Vadot properties: 97b97ee269SEmmanuel Vadot compatible: 98b97ee269SEmmanuel Vadot contains: 99aa1a8ff2SEmmanuel Vadot enum: 100aa1a8ff2SEmmanuel Vadot - fsl,imx8qm-edma 101aa1a8ff2SEmmanuel Vadot - fsl,imx93-edma3 102aa1a8ff2SEmmanuel Vadot - fsl,imx93-edma4 10301950c46SEmmanuel Vadot - fsl,imx95-edma5 104aa1a8ff2SEmmanuel Vadot then: 105aa1a8ff2SEmmanuel Vadot properties: 106aa1a8ff2SEmmanuel Vadot "#dma-cells": 107aa1a8ff2SEmmanuel Vadot const: 3 108aa1a8ff2SEmmanuel Vadot # It is not necessary to write the interrupt name for each channel. 109aa1a8ff2SEmmanuel Vadot # instead, you can simply maintain the sequential IRQ numbers as 110aa1a8ff2SEmmanuel Vadot # defined for the DMA channels. 111aa1a8ff2SEmmanuel Vadot interrupt-names: false 112aa1a8ff2SEmmanuel Vadot clock-names: 113aa1a8ff2SEmmanuel Vadot items: 114aa1a8ff2SEmmanuel Vadot - const: dma 115aa1a8ff2SEmmanuel Vadot clocks: 116aa1a8ff2SEmmanuel Vadot maxItems: 1 117aa1a8ff2SEmmanuel Vadot 118aa1a8ff2SEmmanuel Vadot - if: 119aa1a8ff2SEmmanuel Vadot properties: 120aa1a8ff2SEmmanuel Vadot compatible: 121aa1a8ff2SEmmanuel Vadot contains: 122b97ee269SEmmanuel Vadot const: fsl,vf610-edma 123b97ee269SEmmanuel Vadot then: 124b97ee269SEmmanuel Vadot properties: 125aa1a8ff2SEmmanuel Vadot clocks: 126aa1a8ff2SEmmanuel Vadot minItems: 2 127*7d0873ebSEmmanuel Vadot maxItems: 2 128b97ee269SEmmanuel Vadot clock-names: 129b97ee269SEmmanuel Vadot items: 130b97ee269SEmmanuel Vadot - const: dmamux0 131b97ee269SEmmanuel Vadot - const: dmamux1 132b97ee269SEmmanuel Vadot interrupts: 133aa1a8ff2SEmmanuel Vadot minItems: 2 134b97ee269SEmmanuel Vadot maxItems: 2 135b97ee269SEmmanuel Vadot interrupt-names: 136b97ee269SEmmanuel Vadot items: 137b97ee269SEmmanuel Vadot - const: edma-tx 138b97ee269SEmmanuel Vadot - const: edma-err 139b97ee269SEmmanuel Vadot reg: 140aa1a8ff2SEmmanuel Vadot minItems: 2 141b97ee269SEmmanuel Vadot maxItems: 3 142aa1a8ff2SEmmanuel Vadot "#dma-cells": 143aa1a8ff2SEmmanuel Vadot const: 2 144aa1a8ff2SEmmanuel Vadot dma-channels: 145aa1a8ff2SEmmanuel Vadot const: 32 146b97ee269SEmmanuel Vadot 147b97ee269SEmmanuel Vadot - if: 148b97ee269SEmmanuel Vadot properties: 149b97ee269SEmmanuel Vadot compatible: 150b97ee269SEmmanuel Vadot contains: 151b97ee269SEmmanuel Vadot const: fsl,imx7ulp-edma 152b97ee269SEmmanuel Vadot then: 153b97ee269SEmmanuel Vadot properties: 154aa1a8ff2SEmmanuel Vadot clock: 155aa1a8ff2SEmmanuel Vadot minItems: 2 156*7d0873ebSEmmanuel Vadot maxItems: 2 157b97ee269SEmmanuel Vadot clock-names: 158b97ee269SEmmanuel Vadot items: 159b97ee269SEmmanuel Vadot - const: dma 160b97ee269SEmmanuel Vadot - const: dmamux0 161b97ee269SEmmanuel Vadot interrupts: 162aa1a8ff2SEmmanuel Vadot minItems: 2 163b97ee269SEmmanuel Vadot maxItems: 17 164b97ee269SEmmanuel Vadot reg: 165aa1a8ff2SEmmanuel Vadot minItems: 2 166b97ee269SEmmanuel Vadot maxItems: 2 167aa1a8ff2SEmmanuel Vadot "#dma-cells": 168aa1a8ff2SEmmanuel Vadot const: 2 169aa1a8ff2SEmmanuel Vadot dma-channels: 170aa1a8ff2SEmmanuel Vadot const: 32 171b97ee269SEmmanuel Vadot 172*7d0873ebSEmmanuel Vadot - if: 173*7d0873ebSEmmanuel Vadot properties: 174*7d0873ebSEmmanuel Vadot compatible: 175*7d0873ebSEmmanuel Vadot contains: 176*7d0873ebSEmmanuel Vadot const: fsl,imx8ulp-edma 177*7d0873ebSEmmanuel Vadot then: 178*7d0873ebSEmmanuel Vadot properties: 179*7d0873ebSEmmanuel Vadot clocks: 180*7d0873ebSEmmanuel Vadot minItems: 33 181*7d0873ebSEmmanuel Vadot clock-names: 182*7d0873ebSEmmanuel Vadot minItems: 33 183*7d0873ebSEmmanuel Vadot items: 184*7d0873ebSEmmanuel Vadot oneOf: 185*7d0873ebSEmmanuel Vadot - const: dma 186*7d0873ebSEmmanuel Vadot - pattern: "^ch(0[0-9]|[1-2][0-9]|3[01])$" 187*7d0873ebSEmmanuel Vadot 188*7d0873ebSEmmanuel Vadot interrupt-names: false 189*7d0873ebSEmmanuel Vadot interrupts: 190*7d0873ebSEmmanuel Vadot minItems: 32 191*7d0873ebSEmmanuel Vadot "#dma-cells": 192*7d0873ebSEmmanuel Vadot const: 3 193*7d0873ebSEmmanuel Vadot 194*7d0873ebSEmmanuel Vadot - if: 195*7d0873ebSEmmanuel Vadot properties: 196*7d0873ebSEmmanuel Vadot compatible: 197*7d0873ebSEmmanuel Vadot contains: 198*7d0873ebSEmmanuel Vadot enum: 199*7d0873ebSEmmanuel Vadot - fsl,vf610-edma 200*7d0873ebSEmmanuel Vadot - fsl,imx7ulp-edma 201*7d0873ebSEmmanuel Vadot - fsl,imx93-edma3 202*7d0873ebSEmmanuel Vadot - fsl,imx93-edma4 203*7d0873ebSEmmanuel Vadot - fsl,imx95-edma5 204*7d0873ebSEmmanuel Vadot - fsl,imx8ulp-edma 205*7d0873ebSEmmanuel Vadot - fsl,ls1028a-edma 206*7d0873ebSEmmanuel Vadot then: 207*7d0873ebSEmmanuel Vadot required: 208*7d0873ebSEmmanuel Vadot - clocks 209*7d0873ebSEmmanuel Vadot 210*7d0873ebSEmmanuel Vadot - if: 211*7d0873ebSEmmanuel Vadot properties: 212*7d0873ebSEmmanuel Vadot compatible: 213*7d0873ebSEmmanuel Vadot contains: 214*7d0873ebSEmmanuel Vadot enum: 215*7d0873ebSEmmanuel Vadot - fsl,imx8qm-adma 216*7d0873ebSEmmanuel Vadot - fsl,imx8qm-edma 217*7d0873ebSEmmanuel Vadot then: 218*7d0873ebSEmmanuel Vadot required: 219*7d0873ebSEmmanuel Vadot - power-domains 220*7d0873ebSEmmanuel Vadot else: 221*7d0873ebSEmmanuel Vadot properties: 222*7d0873ebSEmmanuel Vadot power-domains: false 223*7d0873ebSEmmanuel Vadot 224b97ee269SEmmanuel VadotunevaluatedProperties: false 225b97ee269SEmmanuel Vadot 226b97ee269SEmmanuel Vadotexamples: 227b97ee269SEmmanuel Vadot - | 228b97ee269SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 229b97ee269SEmmanuel Vadot #include <dt-bindings/clock/vf610-clock.h> 230b97ee269SEmmanuel Vadot 231b97ee269SEmmanuel Vadot edma0: dma-controller@40018000 { 232b97ee269SEmmanuel Vadot #dma-cells = <2>; 233b97ee269SEmmanuel Vadot compatible = "fsl,vf610-edma"; 234b97ee269SEmmanuel Vadot reg = <0x40018000 0x2000>, 235b97ee269SEmmanuel Vadot <0x40024000 0x1000>, 236b97ee269SEmmanuel Vadot <0x40025000 0x1000>; 237b97ee269SEmmanuel Vadot interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>, 238b97ee269SEmmanuel Vadot <0 9 IRQ_TYPE_LEVEL_HIGH>; 239b97ee269SEmmanuel Vadot interrupt-names = "edma-tx", "edma-err"; 240b97ee269SEmmanuel Vadot dma-channels = <32>; 241b97ee269SEmmanuel Vadot clock-names = "dmamux0", "dmamux1"; 242b97ee269SEmmanuel Vadot clocks = <&clks VF610_CLK_DMAMUX0>, <&clks VF610_CLK_DMAMUX1>; 243b97ee269SEmmanuel Vadot }; 244b97ee269SEmmanuel Vadot 245b97ee269SEmmanuel Vadot - | 246b97ee269SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 247b97ee269SEmmanuel Vadot #include <dt-bindings/clock/imx7ulp-clock.h> 248b97ee269SEmmanuel Vadot 249b97ee269SEmmanuel Vadot edma1: dma-controller@40080000 { 250b97ee269SEmmanuel Vadot #dma-cells = <2>; 251b97ee269SEmmanuel Vadot compatible = "fsl,imx7ulp-edma"; 252b97ee269SEmmanuel Vadot reg = <0x40080000 0x2000>, 253b97ee269SEmmanuel Vadot <0x40210000 0x1000>; 254b97ee269SEmmanuel Vadot dma-channels = <32>; 255b97ee269SEmmanuel Vadot interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, 256b97ee269SEmmanuel Vadot <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, 257b97ee269SEmmanuel Vadot <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, 258b97ee269SEmmanuel Vadot <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, 259b97ee269SEmmanuel Vadot <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, 260b97ee269SEmmanuel Vadot <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, 261b97ee269SEmmanuel Vadot <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, 262b97ee269SEmmanuel Vadot <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, 263b97ee269SEmmanuel Vadot <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, 264b97ee269SEmmanuel Vadot <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, 265b97ee269SEmmanuel Vadot <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, 266b97ee269SEmmanuel Vadot <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, 267b97ee269SEmmanuel Vadot <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, 268b97ee269SEmmanuel Vadot <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, 269b97ee269SEmmanuel Vadot <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, 270b97ee269SEmmanuel Vadot <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>, 271b97ee269SEmmanuel Vadot /* last is eDMA2-ERR interrupt */ 272b97ee269SEmmanuel Vadot <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; 273b97ee269SEmmanuel Vadot clock-names = "dma", "dmamux0"; 274b97ee269SEmmanuel Vadot clocks = <&pcc2 IMX7ULP_CLK_DMA1>, <&pcc2 IMX7ULP_CLK_DMA_MUX1>; 275b97ee269SEmmanuel Vadot }; 276aa1a8ff2SEmmanuel Vadot 277aa1a8ff2SEmmanuel Vadot - | 278aa1a8ff2SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 279*7d0873ebSEmmanuel Vadot #include <dt-bindings/firmware/imx/rsrc.h> 280aa1a8ff2SEmmanuel Vadot 281*7d0873ebSEmmanuel Vadot dma-controller@5a9f0000 { 282*7d0873ebSEmmanuel Vadot compatible = "fsl,imx8qm-edma"; 283*7d0873ebSEmmanuel Vadot reg = <0x5a9f0000 0x90000>; 284aa1a8ff2SEmmanuel Vadot #dma-cells = <3>; 285*7d0873ebSEmmanuel Vadot dma-channels = <8>; 286*7d0873ebSEmmanuel Vadot interrupts = <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>, 287*7d0873ebSEmmanuel Vadot <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>, 288*7d0873ebSEmmanuel Vadot <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>, 289*7d0873ebSEmmanuel Vadot <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>, 290*7d0873ebSEmmanuel Vadot <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>, 291*7d0873ebSEmmanuel Vadot <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>, 292*7d0873ebSEmmanuel Vadot <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>, 293*7d0873ebSEmmanuel Vadot <GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH>; 294*7d0873ebSEmmanuel Vadot power-domains = <&pd IMX_SC_R_DMA_3_CH0>, 295*7d0873ebSEmmanuel Vadot <&pd IMX_SC_R_DMA_3_CH1>, 296*7d0873ebSEmmanuel Vadot <&pd IMX_SC_R_DMA_3_CH2>, 297*7d0873ebSEmmanuel Vadot <&pd IMX_SC_R_DMA_3_CH3>, 298*7d0873ebSEmmanuel Vadot <&pd IMX_SC_R_DMA_3_CH4>, 299*7d0873ebSEmmanuel Vadot <&pd IMX_SC_R_DMA_3_CH5>, 300*7d0873ebSEmmanuel Vadot <&pd IMX_SC_R_DMA_3_CH6>, 301*7d0873ebSEmmanuel Vadot <&pd IMX_SC_R_DMA_3_CH7>; 302aa1a8ff2SEmmanuel Vadot }; 303