IMX6ULL UARTs

Using the pin tool i have selected

UART A - Pin tool shows pins as uart1.TX & uart1.RX
UART C - Pin tool shows pins as uart5.TX & uart5.RX
UART D - Pin tool shows pins as uart6.TX, uart6.RX, uart6.CTS_B & uart6.RTS_B
UART E - Pin tool shows pins as uart3.TX & uart3.RX

My dtsi file (to replace imx6ull-colibri-eval-v3.dtsi) has

&uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart1>;
	fsl,dte-mode;
	status = "okay";
};

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3>;
	fsl,dte-mode;
	status = "okay";
};

&uart5 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart5>;
	fsl,dte-mode;
	status = "okay";
};

&uart6 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart6>;
        fsl,uart-has-rtscts;
	fsl,dte-mode;
	status = "okay";
};

and

&iomuxc {
  imx6ull-colibri {

	pinctrl_uart1: uart1-grp {
		fsl,pins = <
			MX6UL_PAD_UART1_TX_DATA__UART1_DTE_RX	0x79	/* SODIMM 33 */
			MX6UL_PAD_UART1_RX_DATA__UART1_DTE_TX	0x79	/* SODIMM 35 */
		>;
	};

        pinctrl_uart3: uart3-grp {
                fsl,pins = <
                        MX6UL_PAD_UART3_RX_DATA__UART3_DTE_TX  0x79	/* SODIMM 77 */
                        MX6UL_PAD_UART3_TX_DATA__UART3_DTE_RX  0x79	/* SODIMM 135 */
		>;
	};

        pinctrl_uart5: uart5-grp {
                fsl,pins = <
                        MX6UL_PAD_GPIO1_IO04__UART5_DTE_RX     0x79	/* SODIMM 19 */
                        MX6UL_PAD_GPIO1_IO05__UART5_DTE_TX     0x79	/* SODIMM 21 */
		>;
	};

        pinctrl_uart6: uart6-grp {
                fsl,pins = <
                        MX6UL_PAD_CSI_PIXCLK__UART6_DTE_TX     0x1b0b1 /* SODIMM 96 */
                        MX6UL_PAD_CSI_MCLK__UART6_DTE_RX       0x1b0b1 /* SODIMM 75 */
                        MX6UL_PAD_ENET1_TX_EN__UART6_DTE_CTS   0x1b0b1 /* SODIMM 73 */
                        MX6UL_PAD_ENET1_TX_DATA1__UART6_DTE_RTS 0x1b0b1 /* SODIMM 30 */
		>;
	};


	}; /* End of imx6ull-colibri */
};

if i then run ‘dmesg | grep tty’ i get

root@colibri-imx6ull:~# dmesg | grep tty
[    0.000000] Kernel command line: user_debug=30 ubi.mtd=ubi root=ubi0:rootfs rw rootfstype=ubifs ubi.fm_autoconvert=1 console=tty1 console=ttymxc0,115200n8 consoleblank=0 video=mxsfb:640x480M-16@60
[    0.004808] console [tty1] enabled
[    0.560957] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 21, base_baud = 5000000) is a IMX
[    1.384890] console [ttymxc0] enabled
[    1.395225] 21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 67, base_baud = 5000000) is a IMX
[    1.414431] 21f4000.serial: ttymxc4 at MMIO 0x21f4000 (irq = 68, base_baud = 5000000) is a IMX
[    7.508690] systemd[1]: Created slice system-serial\x2dgetty.slice.

There are only three ports listed.

Question : Looking a the online documentation ,i am concerned that even thou the pin designer app let me configure all the ports , that the module only supports three uarts. Is this the case ?

Additionally i am a bit confused as UARTA = uart1, UARTB = uart2 etc , is not the case

I have since worked out that

UART A = ttymxc0 (Console)
UART C = ttymxc4
UART E = ttymxc2

Nothing for UART D

I noticed in the console it showed

[    1.348020] 21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 67, base_baud = 5000000) is a IMX
[    1.367167] 21f4000.serial: ttymxc4 at MMIO 0x21f4000 (irq = 68, base_baud = 5000000) is a IMX
[    1.386311] imx6ul-pinctrl 20e0000.iomuxc: pin MX6UL_PAD_ENET1_TX_EN already requested by 20f4000.pwm; cannot claim for 21fc000.serial
[    1.407853] imx6ul-pinctrl 20e0000.iomuxc: pin-54 (21fc000.serial) status -22
[    1.419814] imx6ul-pinctrl 20e0000.iomuxc: could not request pin 54 (MX6UL_PAD_ENET1_TX_EN) from group uart6-grp  on device 20e0000.iomuxc
[    1.441550] imx-uart 21fc000.serial: Error applying setting, reverse things back
[    1.458227] imx-uart: probe of 21fc000.serial failed with error -22

The device tree is built up by

Imx6ull.dtsi then imx6ull-colibri.dtsi and finally my file imx6ull-colibri-custom.dtsi

PWM6 was configured in ‘imx6ull-colibri.dtsi’ but not enabled in my dtsi file.

So even thou I had not enabled the pwm in my file it already took the configuration and hence caused a conflict. (Not reported by the build of the dtb file)

Removing the pwm6 definition from the ‘imx6ull-colibri.dtsi’ file solved the issue

HI @adrian

Perfect that the issue is solved.

So even thou I had not enabled the pwm in my file it already took the configuration and hence caused a conflict. (Not reported by the build of the dtb file)

That’s true the conflict are not reported in build, since there are no checking rules for this.
The user needs to check by himself.

Best regards,
Jaski