This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM4372: Receiving Data on Uart 2,3,4

Part Number: AM4372


Tool/software: Linux

Hello,

I have some problems with my UART-Interfaces on my custom board.

If I connect Tx/Rx of the same UART-Interface (In the following example UART4), I can see in /proc/tty/driver/serial that I have received data.

echo "test" > /dev/ttyS4

serial file:
serinfo:1.0 driver revision:
0: uart:8250 mmio:0x44E09000 irq:30 tx:9066 rx:195 RTS|CTS|DTR|DSR|CD           
1: uart:8250 mmio:0x48022000 irq:31 tx:0 rx:0 CTS|DSR|CD|RI                     
2: uart:8250 mmio:0x48024000 irq:32 tx:0 rx:0 CTS|DSR                           
3: uart:8250 mmio:0x481A6000 irq:33 tx:0 rx:0 CTS|DSR                           
4: uart:8250 mmio:0x481A8000 irq:34 tx:6 rx:6 CTS|DSR                           
5: uart:unknown port:00000000 irq:0                                             
6: uart:unknown port:00000000 irq:0                                             
7: uart:unknown port:00000000 irq:0                                             
8: uart:unknown port:00000000 irq:0                                             
9: uart:unknown port:00000000 irq:0  


If I now connect uart2 or uart3 Tx to uart4 Rx no data is recognized:

serialfile:
serinfo:1.0 driver revision:
0: uart:8250 mmio:0x44E09000 irq:30 tx:9066 rx:195 RTS|CTS|DTR|DSR|CD           
1: uart:8250 mmio:0x48022000 irq:31 tx:0 rx:0 CTS|DSR|CD|RI                     
2: uart:8250 mmio:0x48024000 irq:32 tx:6 rx:0 CTS|DSR                           
3: uart:8250 mmio:0x481A6000 irq:33 tx:0 rx:0 CTS|DSR                           
4: uart:8250 mmio:0x481A8000 irq:34 tx:0 rx:0 CTS|DSR                           
5: uart:unknown port:00000000 irq:0                                             
6: uart:unknown port:00000000 irq:0                                             
7: uart:unknown port:00000000 irq:0                                             
8: uart:unknown port:00000000 irq:0                                             
9: uart:unknown port:00000000 irq:0 

This behavior is the same on all Uart2-4 Interfaces.

I have also tried to read the input file of the uart with cat /dev/ttyS2 and send Data from Host-PC but it does not work either. I also measured the with an analyzer, the voltage level, baudrate are okey.

Reference-Board: AM437x-GP-EVM

Ti-processor-sdk version: 05.01.00.11

Linux version: 04.14.67

The Kernel-Image is build with the following default config: tisdk_am437x-evm_defconfig

Devicetree-Snippet (made with pinmux tool):

	uart3pins_default: uart3pins_default {
		pinctrl-single,pins = <
			0x228 ( PIN_INPUT | MUX_MODE0 ) /* (H25) uart3_rxd.uart3_rxd */
			0x22c ( PIN_OUTPUT | MUX_MODE0 ) /* (H24) uart3_txd.uart3_txd */
		>;
	};

	uart4pins_default: uart4pins_default {
		pinctrl-single,pins = <
			0x168 ( PIN_INPUT | MUX_MODE1 ) /* (L25) uart0_ctsn.uart4_rxd */
			0x16c ( PIN_OUTPUT | MUX_MODE1 ) /* (J25) uart0_rtsn.uart4_txd */
		>;
	};

	uart2pins_default: uart2pins_default {
		pinctrl-single,pins = <
			0x150 ( PIN_INPUT | MUX_MODE1 ) /* (P23) spi0_sclk.uart2_rxd */
			0x154 ( PIN_OUTPUT | MUX_MODE1 ) /* (T22) spi0_d0.uart2_txd */
		>;
	};

&uart2 {  
        pinctrl-names = "default";  
        pinctrl-0 = <&uart2pins_default>;  
        status = "okay";  
}; 

&uart3 {  
        pinctrl-names = "default";  
        pinctrl-0 = <&uart3pins_default>;  
        status = "okay";  
}; 

&uart4 {  
        pinctrl-names = "default";  
        pinctrl-0 = <&uart4pins_default>;  
        status = "okay";  
};

Am I doing anything wrong? Do I have to enable something in the driver?

Thanks!