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.

How to control UART1,UART4,UART5 and UART6

Dear TI ,

k3-am62-main.dtsi:

k3-am62x-sk-common.dtsi:

k3-am625-skeleton.dts:

  • Dear TI ,

    HW : TI AM62x

    I modify some device tree (k3-am62-main.dtsi , k3-am62x-sk-common.dtsi and k3-am625-skeleton.dts)

    I run command as follows:

    stty -F /dev/ttyS5 -echo -onlcr 115200
    cat /dev/ttyS5 &
    echo hello > /dev/ttyS5

    I don't see any message. Please tell me how to modify device tree .

  • Dear Ti,

    dmesg | grep serial

  • Hi Albert,

    The dmesg log seems showing some pinmux are defined by multiple interfaces. Please review your device tree pinmux settings to ensure a PIN is only used by one interface.

    And if any UART pin has mode0 in MMC pins, please disable the corresponding MMC interface in the device tree.

  • Dear Bin,

    I think UART5 is OK because it is not related to mmc .

    stty -F /dev/ttyS5 -echo -onlcr 115200
    cat /dev/ttyS5 &
    echo hello > /dev/ttyS5

    it doesn't show any message . Please help to solve this problem.

  • Dear Bin,

    I modify as follows:

    k3-am62-main.dtsi:

    main_uart1: serial@2810000 {
    compatible = "ti,am64-uart", "ti,am654-uart";
    reg = <0x00 0x02810000 0x00 0x100>;
    interrupts = <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>;
    power-domains = <&k3_pds 152 TI_SCI_PD_EXCLUSIVE>;
    clocks = <&k3_clks 152 0>;
    clock-names = "fclk";

    main_uart1_pins_default: main-uart1-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x1ac, PIN_OUTPUT, 2) /* (E19) UART1_RXD */
    AM62X_IOPAD(0x1b0, PIN_INPUT, 2) /* (A20) UART1_TXD */

    >;
    };
    };

    main_uart4: serial@2840000 {
    compatible = "ti,am64-uart", "ti,am654-uart";
    reg = <0x00 0x02840000 0x00 0x100>;
    interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>;
    power-domains = <&k3_pds 155 TI_SCI_PD_EXCLUSIVE>;
    clocks = <&k3_clks 155 0>;
    clock-names = "fclk";

    main_uart4_pins_default: main-uart4-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x124, PIN_OUTPUT, 3) /* (A23) UART4_RXD */
    AM62X_IOPAD(0x128, PIN_INPUT, 3) /* (B23) UART4_TXD */
    >;
    };
    };

    main_uart5: serial@2850000 {
    compatible = "ti,am64-uart", "ti,am654-uart";
    reg = <0x00 0x02850000 0x00 0x100>;
    interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
    power-domains = <&k3_pds 156 TI_SCI_PD_EXCLUSIVE>;
    clocks = <&k3_clks 156 0>;
    clock-names = "fclk";

    main_uart5_pins_default: main-uart5-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x108, PIN_OUTPUT, 3) /* (D24) UART5_RXD */
    AM62X_IOPAD(0x10C, PIN_INPUT, 3) /* (E23) UART5_TXD */
    >;
    };
    };

    main_uart6: serial@2860000 {
    compatible = "ti,am64-uart", "ti,am654-uart";
    reg = <0x00 0x02860000 0x00 0x100>;
    interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
    power-domains = <&k3_pds 158 TI_SCI_PD_EXCLUSIVE>;
    clocks = <&k3_clks 158 0>;
    clock-names = "fclk";

    main_uart6_pins_default: main-uart6-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x118, PIN_OUTPUT, 3) /* (D25) UART6_RXD */
    AM62X_IOPAD(0x120, PIN_INPUT, 3) /* (C24) UART6_TXD */
    >;
    };
    };

    /*
    sdhci2: mmc@fa20000 {
    compatible = "ti,am62-sdhci";
    reg = <0x00 0xfa20000 0x00 0x260>, <0x00 0xfa28000 0x00 0x134>;
    interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
    power-domains = <&k3_pds 184 TI_SCI_PD_EXCLUSIVE>;
    clocks = <&k3_clks 184 5>, <&k3_clks 184 6>;
    clock-names = "clk_ahb", "clk_xin";
    ti,trm-icp = <0x2>;
    ti,otap-del-sel-legacy = <0x8>;
    ti,otap-del-sel-sd-hs = <0x0>;
    ti,otap-del-sel-sdr12 = <0x0>;
    ti,otap-del-sel-sdr25 = <0x0>;
    ti,otap-del-sel-sdr50 = <0x8>;
    ti,otap-del-sel-sdr104 = <0x7>;
    ti,otap-del-sel-ddr50 = <0x8>;
    ti,itap-del-sel-legacy = <0xa>;
    ti,itap-del-sel-sd-hs = <0xa>;
    ti,itap-del-sel-sdr12 = <0xA>;
    ti,itap-del-sel-sdr25 = <0x1>;
    ti,clkbuf-sel = <0x7>;
    };
    */

    test result:

    Please help fix this issue .

  • I modify the device tree again.

    k3-am625-skeleton.dts:

    &main_pmx0 {
    main_uart0_pins_default: main-uart0-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14) UART0_RXD */
    AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14) UART0_TXD */
    >;
    };
    main_uart1_pins_default: main-uart1-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x1ac, PIN_OUTPUT, 2) /* (E19) UART1_RXD */
    AM62X_IOPAD(0x1b0, PIN_INPUT, 2) /* (A20) UART1_TXD */

    >;
    };
    main_uart4_pins_default: main-uart4-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x124, PIN_OUTPUT, 3) /* (A23) UART4_RXD */
    AM62X_IOPAD(0x128, PIN_INPUT, 3) /* (B23) UART4_TXD */
    >;
    };

    main_uart5_pins_default: main-uart5-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x108, PIN_OUTPUT, 3) /* (D24) UART5_RXD */
    AM62X_IOPAD(0x10C, PIN_INPUT, 3) /* (E23) UART5_TXD */
    >;
    };

    main_uart6_pins_default: main-uart6-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x118, PIN_OUTPUT, 3) /* (D25) UART6_RXD */
    AM62X_IOPAD(0x120, PIN_INPUT, 3) /* (C24) UART6_TXD */
    >;
    };
    };

    k3-am62-main.dtsi:

    /*
    sdhci2: mmc@fa20000 {
    compatible = "ti,am62-sdhci";
    reg = <0x00 0xfa20000 0x00 0x260>, <0x00 0xfa28000 0x00 0x134>;
    interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
    power-domains = <&k3_pds 184 TI_SCI_PD_EXCLUSIVE>;
    clocks = <&k3_clks 184 5>, <&k3_clks 184 6>;
    clock-names = "clk_ahb", "clk_xin";
    ti,trm-icp = <0x2>;
    ti,otap-del-sel-legacy = <0x8>;
    ti,otap-del-sel-sd-hs = <0x0>;
    ti,otap-del-sel-sdr12 = <0x0>;
    ti,otap-del-sel-sdr25 = <0x0>;
    ti,otap-del-sel-sdr50 = <0x8>;
    ti,otap-del-sel-sdr104 = <0x7>;
    ti,otap-del-sel-ddr50 = <0x8>;
    ti,itap-del-sel-legacy = <0xa>;
    ti,itap-del-sel-sd-hs = <0xa>;
    ti,itap-del-sel-sdr12 = <0xA>;
    ti,itap-del-sel-sdr25 = <0x1>;
    ti,clkbuf-sel = <0x7>;
    };
    */

    dmesg | grep serial 

    echo hello > /dev/ttyS1 . It can't show any message .

    Please help fix this issue .

  • Hi Albert,

    I see you are doing uart external loopback test. Did you connect the RXD and TXD pins together? If you connect a scope to the UART TXD pin, do you see the charactor bits on the scope?

  • Dear Bin,

    About /dev/ttyS1, run echo hello > /dev/ttyS1 command . Measure UARt1_TXD , there is  waveform output . But Measure UARt1_RXD , there is not  waveform output . UART1_TXD and UART1_RXD is connected .

    Please check if my tree is correct ?

    k3-am625-skeleton.dts:

    &main_pmx0 {
    main_uart0_pins_default: main-uart0-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14) UART0_RXD */
    AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14) UART0_TXD */
    >;
    };
    main_uart1_pins_default: main-uart1-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x1ac, PIN_OUTPUT, 2) /* (E19) UART1_RXD */
    AM62X_IOPAD(0x1b0, PIN_INPUT, 2) /* (A20) UART1_TXD */

    >;
    };
    main_uart4_pins_default: main-uart4-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x124, PIN_OUTPUT, 3) /* (A23) UART4_RXD */
    AM62X_IOPAD(0x128, PIN_INPUT, 3) /* (B23) UART4_TXD */
    >;
    };

    main_uart5_pins_default: main-uart5-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x108, PIN_OUTPUT, 3) /* (D24) UART5_RXD */
    AM62X_IOPAD(0x10C, PIN_INPUT, 3) /* (E23) UART5_TXD */
    >;
    };

    main_uart6_pins_default: main-uart6-pins-default {
    pinctrl-single,pins = <
    AM62X_IOPAD(0x118, PIN_OUTPUT, 3) /* (D25) UART6_RXD */
    AM62X_IOPAD(0x120, PIN_INPUT, 3) /* (C24) UART6_TXD */
    >;
    };
    };

  • Dear Bin ,

    I have fixed this issue . Thank you!

  • Hi Albert,

    Do you mind to explain what the issue was?