UART_3 and UART_4 Not working on Custom board

Hi guys,

We have custom carrier board and our requirement only 5 UART and 2 Ethernet , so I am using vf610-colibri-dual-eth.dtb for that.But there was UART3 and UART4 doesn’t work.It can accessible as gpio but uart nog giving any response on that.

Modification at my end:
vf-colibri-dual-eth.dtsi
pinctrl_uart3: uart3grp { fsl,pins
= <
VF610_PAD_PTA31__UART3_RX 0x21a1
VF610_PAD_PTA30__UART3_TX 0x21a2
>; };

Debug Output:

root@colibri-vf:~# cat /proc/iomem 
3f000000-3f03ffff : 3f000000.sram
3f040000-3f07ffff : 3f040000.sram
3f400000-3f47ffff : 3f400000.sram
3f480000-3f4fffff : 3f480000.sram
40001800-40001bff : mscm-ir
40018000-40019fff : /soc/aips-bus@40000000/dma-controller@40018000
4001d000-4001dfff : /soc/aips-bus@40000000/semaphore-controller@4001d000
40024000-40024fff : /soc/aips-bus@40000000/dma-controller@40018000
40025000-40025fff : /soc/aips-bus@40000000/dma-controller@40018000
40027000-40027fff : /soc/aips-bus@40000000/serial@40027000
40028000-40028fff : /soc/aips-bus@40000000/serial@40028000
40029000-40029fff : /soc/aips-bus@40000000/serial@40029000
4002a000-4002afff : /soc/aips-bus@40000000/serial@4002a000
4002f000-4002ffff : /soc/aips-bus@40000000/sai@4002f000
40031000-40031fff : /soc/aips-bus@40000000/sai@40031000
40034000-400347ff : /soc/aips-bus@40000000/usb@40034000
  40034000-400347ff : /soc/aips-bus@40000000/usb@40034000
40034800-400349ff : /soc/aips-bus@40000000/usb@40034800
4003b000-4003bfff : /soc/aips-bus@40000000/adc@4003b000
4003e000-4003efff : /soc/aips-bus@40000000/wdog@4003e000
40048000-40048fff : /soc/aips-bus@40000000/iomuxc@40048000
40049000-40049fff : /soc/aips-bus@40000000/gpio@40049000
4004a000-4004afff : /soc/aips-bus@40000000/gpio@4004a000
4004b000-4004bfff : /soc/aips-bus@40000000/gpio@4004b000
4004c000-4004cfff : /soc/aips-bus@40000000/gpio@4004c000
4004d000-4004dfff : /soc/aips-bus@40000000/gpio@4004d000
40050800-40050bff : /soc/aips-bus@40000000/usbphy@40050800
40050c00-40050fff : /soc/aips-bus@40000000/usbphy@40050c00
4006a000-4006afff : /soc/aips-bus@40000000/wkpu@4006a000
4006c000-4006cfff : gpc
400a7034-400a708b : /soc/aips-bus@40080000/snvs@400a7000/snvs-rtc-lp@34
400a9000-400a9fff : /soc/aips-bus@40080000/serial@400a9000
400b4000-400b47ff : /soc/aips-bus@40080000/usb@400b4000
  400b4000-400b47ff : /soc/aips-bus@40080000/usb@400b4000
400b4800-400b49ff : /soc/aips-bus@40080000/usb@400b4800
400bb000-400bbfff : /soc/aips-bus@40080000/adc@400bb000
400d0000-400d0fff : /soc/aips-bus@40080000/ethernet@400d0000
400d1000-400d1fff : /soc/aips-bus@40080000/ethernet@400d1000
400e0000-400e3fff : /soc/aips-bus@40080000/nand@400e0000
400ff000-400ff03f : /soc/aips-bus@40000000/gpio@40049000
400ff040-400ff07f : /soc/aips-bus@40000000/gpio@4004a000
400ff080-400ff0bf : /soc/aips-bus@40000000/gpio@4004b000
400ff0c0-400ff0ff : /soc/aips-bus@40000000/gpio@4004c000
400ff100-400ff13f : /soc/aips-bus@40000000/gpio@4004d000
80000000-8fdfffff : System RAM
  80008000-8077b023 : Kernel code
  807b0000-8080ef5f : Kernel data
root@colibri-vf:~#
> root@colibri-vf:~# cat
> /proc/tty/driver/fsl-lpuart
> serinfo:1.0 driver revision: 0:
> uart:FSL_LPUART mmio:0x40027000 irq:20
> tx:8897 rx:77 RTS|DTR 1:
> uart:FSL_LPUART mmio:0x40028000 irq:21
> tx:0 rx:0 2: uart:FSL_LPUART
> mmio:0x40029000 irq:22 tx:0 rx:0 3:
> uart:FSL_LPUART mmio:0x4002A000 irq:23
> tx:0 rx:0 4: uart:FSL_LPUART
> mmio:0x400A9000 irq:40 tx:0 rx:0
> root@colibri-vf:~#
> 

> root@colibri-vf:~# stty -F /dev/ttyLP3
> 115200 root@colibri-vf:~# echo "Test"
> > /dev/ttyLP3 root@colibri-vf:~# cat /proc/tty/driver/fsl-lpuart
> serinfo:1.0 driver revision: 0:
> uart:FSL_LPUART mmio:0x40027000 irq:20
> tx:9762 rx:172 RTS|DTR 1:
> uart:FSL_LPUART mmio:0x40028000 irq:21
> tx:0 rx:0 2: uart:FSL_LPUART
> mmio:0x40029000 irq:22 tx:0 rx:0 3:
> uart:FSL_LPUART mmio:0x4002A000 irq:23
> tx:6 rx:0 4: uart:FSL_LPUART
> mmio:0x400A9000 irq:40 tx:0 rx:0
> root@colibri-vf:~#

Can you share helpful though? why uart doesn’t work?

Thank you.
Best Regards,
Kanji Viroja.

UART Totally not responsive.we had checked it on signal on oscilloscope and we didn’t get transmit signal from the colibri vf61.

Seems there is pin conflict with the pins which you are trying to configure. These pins are configured in COM level dtsi file as GPIOs. You can remove those pin configurations from gpio pinmux node to avoid the pin conflicts.

Hi bhuvanchandra,

there was I used :
UART3 PIN:
VF610_PAD_PTA30__UART3_TX 0x21a2
VF610_PAD_PTA31__UART3_RX 0x21a1

UART4 PIN:
VF610_PAD_PTA28__UART4_TX 0x21a2
VF610_PAD_PTA29__UART4_RX 0x21a1
** This pin conflict with sdhc1,so there was disabled UART4

**

Note*: Once Disabled UART4 then UART3 working fine.so I am confused,how does it happen?

**

Can you help me regarding this issue?

I could not replicate your case, it worked as expected. Make sure to remove the GPIO pin-mux for UART3 pins. If your custom board is not having SD interface you can disable it in device tree.

e.g.

diff --git a/arch/arm/boot/dts/vf-colibri-eval-v3.dtsi b/arch/arm/boot/dts/vf-colibri-eval-v3.dtsi
index 8392dcd..5a23ab4 100644
--- a/arch/arm/boot/dts/vf-colibri-eval-v3.dtsi
+++ b/arch/arm/boot/dts/vf-colibri-eval-v3.dtsi
@@ -114,7 +114,7 @@
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_esdhc1>;
 	bus-width = <4>;
-	status = "okay";
+	status = "disabled";
 };
 
 &fec1 {
@@ -174,6 +174,14 @@
 	status = "okay";
 };
 
+&uart3 {
+	status = "okay";
+};
+
+&uart4 {
+	status = "okay";
+};
+
 &usbdev0 {
 	extcon = <&extcon_usbc_det>, <&extcon_usbc_det>;
 };
diff --git a/arch/arm/boot/dts/vf-colibri.dtsi b/arch/arm/boot/dts/vf-colibri.dtsi
index d62c4f6..2d5c10b 100644
--- a/arch/arm/boot/dts/vf-colibri.dtsi
+++ b/arch/arm/boot/dts/vf-colibri.dtsi
@@ -137,6 +137,16 @@
 	pinctrl-0 = <&pinctrl_uart2>;
 };
 
+&uart3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart3>;
+};
+
+&uart4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart4>;
+};
+
 &usbdev0 {
 	disable-over-current;
 	dr_mode = "otg";
@@ -186,8 +196,6 @@
 				VF610_PAD_PTA17__GPIO_7		0x22ed
 				VF610_PAD_PTA20__GPIO_10	0x22ed
 				VF610_PAD_PTA21__GPIO_11	0x22ed
-				VF610_PAD_PTA30__GPIO_20	0x22ed
-				VF610_PAD_PTA31__GPIO_21	0x22ed
 				VF610_PAD_PTB6__GPIO_28		0x22ed
 				VF610_PAD_PTB7__GPIO_29		0x22ed
 				VF610_PAD_PTB12__GPIO_34	0x22ed
@@ -376,6 +384,20 @@
 			>;
 		};
 
+		pinctrl_uart3: uart3grp {
+			fsl,pins = <
+				VF610_PAD_PTA30__UART3_TX		0x21a2
+				VF610_PAD_PTA31__UART3_RX		0x21a1
+			>;
+		};
+
+		pinctrl_uart4: uart4grp {
+			fsl,pins = <
+				VF610_PAD_PTA28__UART4_TX		0x21a2
+				VF610_PAD_PTA29__UART4_RX		0x21a1
+			>;
+		};
+
 		pinctrl_usbc_det: gpio_usbc_det {
 			fsl,pins = <
 				VF610_PAD_PTC29__GPIO_102		0x22ed

Thank you bhuvanchandra. I had solved out that issue. :slight_smile:

You are welcome! and glad to hear that you solved the issue.