| * Freescale enhanced Direct Memory Access(eDMA-v3) Controller |
| |
| The eDMA-v3 controller is inherited from FSL eDMA, and firstly is intergrated |
| on Freescale i.MX8QM SOC chip. The eDMA channels have multiplex capability by |
| programmble memory-mapped registers. Specific DMA request source has fixed channel. |
| |
| * eDMA Controller |
| Required properties: |
| - compatible : |
| - "fsl,imx8qm-edma" for eDMA used similar to that on i.MX8QM SoC |
| - "fsl,imx8qm-adma" for audio eDMA used on i.MX8QM |
| - reg : Specifies base physical address(s) and size of the eDMA channel registers. |
| Each eDMA channel has separated register's address and size. |
| - interrupts : A list of interrupt-specifiers, each channel has one interrupt. |
| - interrupt-names : Should contain below template: |
| "edmaX-chanX-Xx" |
| | | |---> receive/transmit, r or t |
| | |---> channel id, the max number is 32 |
| |---> edma controller instance, 0, 1, 2,..etc |
| |
| - #dma-cells : Must be <3>. |
| The 1st cell specifies the channel ID. |
| The 2nd cell specifies the channel priority. |
| The 3rd cell specifies the channel attributes which include below: |
| BIT(0): transmit or receive: |
| 0: transmit, 1: receive. |
| BIT(1): local or remote access: |
| 0: local, 1: remote. |
| BIT(2): dualfifo case or not(only in Audio cyclic now): |
| 0: not dual fifo case, 1: dualfifo case. |
| See the SoC's reference manual for all the supported request sources. |
| - dma-channels : Number of channels supported by the controller |
| |
| Examples: |
| edma0: dma-controller@40018000 { |
| compatible = "fsl,imx8qm-edma"; |
| reg = <0x0 0x5a2c0000 0x0 0x10000>, /* channel12 UART0 rx */ |
| <0x0 0x5a2d0000 0x0 0x10000>, /* channel13 UART0 tx */ |
| <0x0 0x5a2e0000 0x0 0x10000>, /* channel14 UART1 rx */ |
| <0x0 0x5a2f0000 0x0 0x10000>; /* channel15 UART1 tx */ |
| #dma-cells = <3>; |
| dma-channels = <4>; |
| interrupts = <GIC_SPI 434 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 435 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 436 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 437 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-names = "edma0-chan12-rx", "edma0-chan13-tx", |
| "edma0-chan14-rx", "edma0-chan15-tx"; |
| status = "okay"; |
| }; |
| |
| * DMA clients |
| DMA client drivers that uses the DMA function must use the format described |
| in the dma.txt file, using a three-cell specifier for each channel: the 1st |
| specifies the channel number, the 2nd specifies the priority, and the 3rd |
| specifies the channel type is for transmit or receive: 0: transmit, 1: receive. |
| |
| Examples: |
| lpuart1: serial@5a070000 { |
| compatible = "fsl,imx8qm-lpuart"; |
| reg = <0x0 0x5a070000 0x0 0x1000>; |
| interrupts = <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-parent = <&gic>; |
| clocks = <&clk IMX8QM_UART1_CLK>; |
| clock-names = "ipg"; |
| assigned-clock-names = <&clk IMX8QM_UART1_CLK>; |
| assigned-clock-rates = <80000000>; |
| power-domains = <&pd_dma_lpuart1>; |
| dma-names = "tx","rx"; |
| dmas = <&edma0 15 0 0>, |
| <&edma0 14 0 1>; |
| status = "disabled"; |
| }; |