Unable to correspond to "func" and "uart_tx"

Hi,Experts.
We use the carrier board designed by ourselves, but only uart1 can be used for testing, and we use the loop test. I can be sure that the board is fine because it has been tested on Xavier.
I can’t find anything about serial in dmesg, nor with sudo demsg | grep serial and sudo demsg | grep 310000
It can be found that the uart2_tx function is rsvd1 not uartb, but uart2_cts is uartb. The rest is the same, only uart1_tx and rx are correctly corresponding to uart1

120 (uart2_tx_px4):
        pull=0
        tristate=0
        enable-input=0
        open-drain=1
        io-reset=1
        rcv-sel=1
        io-hv=1
        loopback=0
        schmitt=0
        pull-down-strength=0
        pull-up-strength=0
        drive-type=0
        func=rsvd1
        pad-power=0
121 (uart2_rx_px5):
        pull=0
        tristate=1
        enable-input=1
        open-drain=1
        io-reset=1
        rcv-sel=1
        io-hv=1
        loopback=0
        schmitt=0
        pull-down-strength=0
        pull-up-strength=0
        drive-type=0
        func=rsvd1
        pad-power=0
122 (uart2_rts_px6):
        pull=0
        tristate=0
        enable-input=0
        open-drain=0
        io-reset=0
        rcv-sel=0
        io-hv=0
        loopback=0
        schmitt=0
        pull-down-strength=0
        pull-up-strength=0
        drive-type=0
        func=uartb
        pad-power=0
123 (uart2_cts_px7):
        pull=0
        tristate=1
        enable-input=1
        open-drain=0
        io-reset=0
        rcv-sel=0
        io-hv=0
        loopback=0
        schmitt=0
        pull-down-strength=0
        pull-up-strength=0
        drive-type=0
        func=uartb
        pad-power=0
1 (uart3_rx_pcc6):
        func=uartc
2 (uart3_tx_pcc5):
        func=uartc
120 (uart2_tx_px4):
121 (uart2_rx_px5):
122 (uart2_rts_px6):
        func=uartb
123 (uart2_cts_px7):
        func=uartb
124 (uart5_tx_py5):
125 (uart5_rx_py6):
126 (uart5_rts_py7):
127 (uart5_cts_pz0):
152 (uart1_cts_pr5):
        func=uarta
153 (uart1_rts_pr4):
154 (uart1_rx_pr3):
        func=uarta
155 (uart1_tx_pr2):
        func=uarta
157 (uart4_cts_ph6):
158 (uart4_rts_ph5):
159 (uart4_rx_ph4):
160 (uart4_tx_ph3):

maybe that’s the problem.Here is my pinmux file about the uart2 and uart1.

			uart2_tx_px4 {
				nvidia,pins = "uart2_tx_px4";
				nvidia,function = "uartb";
				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};

			uart2_rx_px5 {
				nvidia,pins = "uart2_rx_px5";
				nvidia,function = "uartb";
				nvidia,pull = <TEGRA_PIN_PULL_UP>;
				nvidia,tristate = <TEGRA_PIN_ENABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};

			uart2_rts_px6 {
				nvidia,pins = "uart2_rts_px6";
				nvidia,function = "uartb";
				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};

			uart2_cts_px7 {
				nvidia,pins = "uart2_cts_px7";
				nvidia,function = "uartb";
				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
				nvidia,tristate = <TEGRA_PIN_ENABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};
			uart1_tx_pr2 {
				nvidia,pins = "uart1_tx_pr2";
				nvidia,function = "uarta";
				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};

			uart1_rx_pr3 {
				nvidia,pins = "uart1_rx_pr3";
				nvidia,function = "uarta";
				nvidia,pull = <TEGRA_PIN_PULL_UP>;
				nvidia,tristate = <TEGRA_PIN_ENABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};

			uart1_rts_pr4 {
				nvidia,pins = "uart1_rts_pr4";
				nvidia,function = "uarta";
				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};

			uart1_cts_pr5 {
				nvidia,pins = "uart1_cts_pr5";
				nvidia,function = "uarta";
				nvidia,pull = <TEGRA_PIN_PULL_UP>;
				nvidia,tristate = <TEGRA_PIN_ENABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};

By the way, i can find the ttyTHS0,1,3,4 in the /dev. Please tell me how to make func correspond to uart . Thanks a lot !

Hi cc15,

Please refer to the following table from Jetson AGX Orin Product Design Guide for UART.

and also refer to the pinmux table and tegra234-soc-uart.dtsi.
You would get the following information of UART, there are 5 UART.

Module-UART# => SoC-UART#(used pins): <uart*>@<address>(serial#) - <node>

  • UART1 => UART1(PR02, PR03, PR04, PR05): uarta@3100000 (serial0) - /dev/ttyTHS0
  • UART2 => UART5(PY05, PY06, PY07, PZ00): uarte@3140000 (serial4) - /dev/ttyTHS4
  • UART3 => UART3(PCC05, PCC06): uartc@c280000 (serial2) - /dev/ttyTCU0
  • UART4 => UART4(PH03, PH04, PH05, PH06): uartd@3130000 (serial3) - /dev/ttyTHS3
  • UART5 => UART2(PX04, PX05, PX06, PX07): uartb@3110000 (serial1) - /dev/ttyTHS1

If you want to use any UART, please make sure to enable it in device tree and configure in pinmux correctly.

HI,KevinFFF.
Thank you for your reply. I will try it after the bussniss trip.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.