Why uart DMA is enbled default in i.MX8MP EVK dts? But uart DMA disabled default in i.MX6ull EVK dts

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Why uart DMA is enbled default in i.MX8MP EVK dts? But uart DMA disabled default in i.MX6ull EVK dts

418 Views
changbaoma
Contributor III

Is there any known issue?

0 Kudos
2 Replies

409 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

1.DMA will be enabled after dma transfer setup 

if (dma_is_inited) {
		/* Note: enable dma request after transfer start! */
		imx_uart_start_rx_dma(sport);
		imx_uart_enable_dma(sport);
Since sdma hardware configure postpone to transfer phase, have to disable
dma request on uart driver before dma transfer setup because there is
a hardware limitation on sdma event enable(ENBLn) as below (event enabled
in imx_uart_dma_init() before where's ahead of dma request enable):

"It is thus essential for the Arm platform to program them before any DMA
request is triggered to the SDMA, otherwise an unpredictable combination
of channels may be started."

i.MX6ULL and i.MX8MP both support DMA in uart driver.

0 Kudos

404 Views
changbaoma
Contributor III

Hello, @Zhiming_Liu 

Thanks for your respone. Sorry, I didn't describe my question clearly.

I  don't know why there is no dma property within uart node in imx6ul-14x14-evk.dtsi, eg.

uart2: serial@21e8000 {
compatible = "fsl,imx6ul-uart",
"fsl,imx6q-uart";
reg = <0x021e8000 0x4000>;
interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6UL_CLK_UART2_IPG>,
<&clks IMX6UL_CLK_UART2_SERIAL>;
clock-names = "ipg", "per";
status = "disabled";
};

&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
uart-has-rtscts;
/* for DTE mode, add below change */
/* fsl,dte-mode; */
/* pinctrl-0 = <&pinctrl_uart2dte>; */
status = "okay";
};

Since we know imx6 uart support dma.

But there is dma property within uart node in imx8mp.dtsi,

uart3: serial@30880000 {
compatible = "fsl,imx8mp-uart", "fsl,imx6q-uart";
reg = <0x30880000 0x10000>;
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MP_CLK_UART3_ROOT>,
<&clk IMX8MP_CLK_UART3_ROOT>;
clock-names = "ipg", "per";
dmas = <&sdma1 26 4 0>, <&sdma1 27 4 0>;
dma-names = "rx", "tx";
status = "disabled";
};

 

 

0 Kudos