119 lines
3.1 KiB
Plaintext
119 lines
3.1 KiB
Plaintext
|
* Freescale Smart Direct Memory Access (SDMA) Controller for i.MX
|
||
|
|
||
|
Required properties:
|
||
|
- compatible : Should be one of
|
||
|
"fsl,imx25-sdma"
|
||
|
"fsl,imx31-sdma", "fsl,imx31-to1-sdma", "fsl,imx31-to2-sdma"
|
||
|
"fsl,imx35-sdma", "fsl,imx35-to1-sdma", "fsl,imx35-to2-sdma"
|
||
|
"fsl,imx51-sdma"
|
||
|
"fsl,imx53-sdma"
|
||
|
"fsl,imx6q-sdma"
|
||
|
"fsl,imx7d-sdma"
|
||
|
"fsl,imx6ul-sdma"
|
||
|
"fsl,imx8mq-sdma"
|
||
|
"fsl,imx8mm-sdma"
|
||
|
"fsl,imx8mn-sdma"
|
||
|
"fsl,imx8mp-sdma"
|
||
|
The -to variants should be preferred since they allow to determine the
|
||
|
correct ROM script addresses needed for the driver to work without additional
|
||
|
firmware.
|
||
|
- reg : Should contain SDMA registers location and length
|
||
|
- interrupts : Should contain SDMA interrupt
|
||
|
- #dma-cells : Must be <3>.
|
||
|
The first cell specifies the DMA request/event ID. See details below
|
||
|
about the second and third cell.
|
||
|
- fsl,sdma-ram-script-name : Should contain the full path of SDMA RAM
|
||
|
scripts firmware
|
||
|
|
||
|
The second cell of dma phandle specifies the peripheral type of DMA transfer.
|
||
|
The full ID of peripheral types can be found below.
|
||
|
|
||
|
ID transfer type
|
||
|
---------------------
|
||
|
0 MCU domain SSI
|
||
|
1 Shared SSI
|
||
|
2 MMC
|
||
|
3 SDHC
|
||
|
4 MCU domain UART
|
||
|
5 Shared UART
|
||
|
6 FIRI
|
||
|
7 MCU domain CSPI
|
||
|
8 Shared CSPI
|
||
|
9 SIM
|
||
|
10 ATA
|
||
|
11 CCM
|
||
|
12 External peripheral
|
||
|
13 Memory Stick Host Controller
|
||
|
14 Shared Memory Stick Host Controller
|
||
|
15 DSP
|
||
|
16 Memory
|
||
|
17 FIFO type Memory
|
||
|
18 SPDIF
|
||
|
19 IPU Memory
|
||
|
20 ASRC
|
||
|
21 ESAI
|
||
|
22 SSI Dual FIFO (needs firmware ver >= 2)
|
||
|
23 Shared ASRC
|
||
|
24 SAI
|
||
|
|
||
|
The third cell specifies the transfer priority as below.
|
||
|
|
||
|
ID transfer priority
|
||
|
-------------------------
|
||
|
0 High
|
||
|
1 Medium
|
||
|
2 Low
|
||
|
|
||
|
Optional properties:
|
||
|
|
||
|
- gpr : The phandle to the General Purpose Register (GPR) node.
|
||
|
- fsl,sdma-event-remap : Register bits of sdma event remap, the format is
|
||
|
<reg shift val>.
|
||
|
reg is the GPR register offset.
|
||
|
shift is the bit position inside the GPR register.
|
||
|
val is the value of the bit (0 or 1).
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
sdma@83fb0000 {
|
||
|
compatible = "fsl,imx51-sdma", "fsl,imx35-sdma";
|
||
|
reg = <0x83fb0000 0x4000>;
|
||
|
interrupts = <6>;
|
||
|
#dma-cells = <3>;
|
||
|
fsl,sdma-ram-script-name = "sdma-imx51.bin";
|
||
|
};
|
||
|
|
||
|
DMA clients connected to the i.MX SDMA controller must use the format
|
||
|
described in the dma.txt file.
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
ssi2: ssi@70014000 {
|
||
|
compatible = "fsl,imx51-ssi", "fsl,imx21-ssi";
|
||
|
reg = <0x70014000 0x4000>;
|
||
|
interrupts = <30>;
|
||
|
clocks = <&clks 49>;
|
||
|
dmas = <&sdma 24 1 0>,
|
||
|
<&sdma 25 1 0>;
|
||
|
dma-names = "rx", "tx";
|
||
|
fsl,fifo-depth = <15>;
|
||
|
};
|
||
|
|
||
|
Using the fsl,sdma-event-remap property:
|
||
|
|
||
|
If we want to use SDMA on the SAI1 port on a MX6SX:
|
||
|
|
||
|
&sdma {
|
||
|
gpr = <&gpr>;
|
||
|
/* SDMA events remap for SAI1_RX and SAI1_TX */
|
||
|
fsl,sdma-event-remap = <0 15 1>, <0 16 1>;
|
||
|
};
|
||
|
|
||
|
The fsl,sdma-event-remap property in this case has two values:
|
||
|
- <0 15 1> means that the offset is 0, so GPR0 is the register of the
|
||
|
SDMA remap. Bit 15 of GPR0 selects between UART4_RX and SAI1_RX.
|
||
|
Setting bit 15 to 1 selects SAI1_RX.
|
||
|
- <0 16 1> means that the offset is 0, so GPR0 is the register of the
|
||
|
SDMA remap. Bit 16 of GPR0 selects between UART4_TX and SAI1_TX.
|
||
|
Setting bit 16 to 1 selects SAI1_TX.
|