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.

TDA4VM: How to modify uart pin definition in linux *.dts

Part Number: TDA4VM

Dear Experts :

as title description, our uart pin definition as below 

/* This file was auto-generated by TI PinMux on 2021/8/9 at 下午5:04:53. */
/* This file should only be used as a reference. Some pins/peripherals, */
/* depending on your use case, may need additional configuration. */

&main_pmx0 {
	myuart0_pins_default: myuart0_pins_default {
		pinctrl-single,pins = <
			J721E_IOPAD(0x1e8, PIN_INPUT, 0) /* (AB2) UART0_RXD */
			J721E_IOPAD(0x1ec, PIN_OUTPUT, 0) /* (AB3) UART0_TXD */
		>;
	};

	myuart1_pins_default: myuart1_pins_default {
		pinctrl-single,pins = <
			J721E_IOPAD(0x1f8, PIN_INPUT, 0) /* (AA4) UART1_RXD */
			J721E_IOPAD(0x1fc, PIN_OUTPUT, 0) /* (AB4) UART1_TXD */
		>;
	};

};

How to add uart0 / uart1 in *.dts?  any examples?

k3-j721e-common-proc-board.dts ?

k3-j721e-main.dtsi ?

Many Thanks

Gibbs

  • Gibbs,

    Pinmuxing is a board related task. So the pins definition needs to be added here:

    k3-j721e-common-proc-board.dts.

    Example: 

    &main_pmx0 {
    sw10_button_pins_default: sw10_button_pins_default {
    pinctrl-single,pins = <
    J721E_IOPAD(0x0, PIN_INPUT, 7) /* (AC18) EXTINTn.GPIO0_0 */
    >;
    };

    dp0_pins_default: dp0_pins_default {
    pinctrl-single,pins = <
    J721E_IOPAD(0x1c4, PIN_INPUT, 5) /* SPI0_CS1.DP0_HPD */
    >;
    };

    main_i2c1_exp4_pins_default: main-i2c1-exp4-pins-default {
    pinctrl-single,pins = <
    J721E_IOPAD(0x230, PIN_INPUT, 7) /* (U2) ECAP0_IN_APWM_OUT.GPIO1_11 */
    >;
    };

    main_i2c0_pins_default: main-i2c0-pins-default {
    pinctrl-single,pins = <
    J721E_IOPAD(0x220, PIN_INPUT_PULLUP, 0) /* (AC5) I2C0_SCL */
    J721E_IOPAD(0x224, PIN_INPUT_PULLUP, 0) /* (AA5) I2C0_SDA */
    >;
    };

    ....

    We can see how the main_i2c1 pins are defined. Then used as below:

    &main_i2c0 {
    pinctrl-names = "default";
    pinctrl-0 = <&main_i2c0_pins_default>;
    clock-frequency = <400000>;

    You should do similar on UART. You can even look at UART example in other SoC dts files:

    arch/arm64/boot/dts/ti/k3-am654-base-board.dts

    &main_pmx0 {
    main_uart0_pins_default: main-uart0-pins-default {
    pinctrl-single,pins = <
    AM65X_IOPAD(0x01e4, PIN_INPUT, 0) /* (AF11) UART0_RXD */
    AM65X_IOPAD(0x01e8, PIN_OUTPUT, 0) /* (AE11) UART0_TXD */
    AM65X_IOPAD(0x01ec, PIN_INPUT, 0) /* (AG11) UART0_CTSn */
    AM65X_IOPAD(0x01f0, PIN_OUTPUT, 0) /* (AD11) UART0_RTSn */
    >;
    };

    If no other questions please click on verify answer.

    Best Regards,
    Keerthy

  • Hi, Keerthy

    I feel a little bit confuse

    I saw related code in "k3-j721e-main.dtsi", do I also need modify this part? or don't care?

    	main_uart0: serial@2800000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02800000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 146 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 146 0>;
    		clock-names = "fclk";
    	};
    
    	main_uart1: serial@2810000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02810000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 278 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 278 0>;
    		clock-names = "fclk";
    	};
    
    	main_uart2: serial@2820000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02820000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 279 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 279 0>;
    		clock-names = "fclk";
    	};
    
    	main_uart3: serial@2830000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02830000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 280 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 280 0>;
    		clock-names = "fclk";
    	};
    
    	main_uart4: serial@2840000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02840000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 281 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 281 0>;
    		clock-names = "fclk";
    	};
    
    	main_uart5: serial@2850000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02850000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 282 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 282 0>;
    		clock-names = "fclk";
    	};
    
    	main_uart6: serial@2860000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02860000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 283 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 283 0>;
    		clock-names = "fclk";
    	};
    
    	main_uart7: serial@2870000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02870000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 284 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 284 0>;
    		clock-names = "fclk";
    	};
    
    	main_uart8: serial@2880000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02880000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 285 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 285 0>;
    		clock-names = "fclk";
    	};
    
    	main_uart9: serial@2890000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02890000 0x00 0x100>;
    		reg-shift = <2>;
    		reg-io-width = <4>;
    		interrupts = <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		current-speed = <115200>;
    		power-domains = <&k3_pds 286 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 286 0>;
    		clock-names = "fclk";
    	};

    or Do I only need to add/modify code in "k3-j721e-common-proc-board.dts"  is fine?

    Where is original "pin(IOPAD) definition" for uart0 for linux console?

    Thanks

    Gibbs