J722SXH01EVM: J722S EVM: Enable WKUP_UART for boot logs in SPL

Part Number: J722SXH01EVM

Tool/software:

Does this FAQ workable for J722?

 [FAQ] J721S2XSOMXEVM: Enable WKUPUART for boot logs in SPL ? 

There are 3 different patch for each device, there should be specific one for J722S?

Why need to build BL31 and BL32? 

  • Hi Tony,

    Does this FAQ workable for J722?

    I haven't added the patches for J722S. J722S will have a different patch needed.

    Why need to build BL31 and BL32? 

    It is rebuilt because we are changing the console uart parameter to use for loggging in both ATF and OPTEE.

    Regards

    Gokul

  • I haven't added the patches for J722S. J722S will have a different patch needed.

    Looking forward your help.

  • HI Tony,

    Please apply the below patch for switching the console uart to wkup uart.

    Uboot changes:

    From 60055683a6cf30ab2f7e05c6fdafc7e5a9e458ac Mon Sep 17 00:00:00 2001
    From: Gokul Praveen <g-praveen@ti.com>
    Date: Tue, 30 Sep 2025 12:13:42 +0530
    Subject: [PATCH] Enable WKUP UART IN J722S
    
    ---
     arch/arm/dts/k3-j722s-evm.dts        | 9 +++++----
     arch/arm/dts/k3-j722s-r5-evm.dts     | 4 ++--
     arch/arm/mach-k3/r5/j722s/clk-data.c | 5 +++++
     arch/arm/mach-k3/r5/j722s/dev-data.c | 1 +
     4 files changed, 13 insertions(+), 6 deletions(-)
    
    diff --git a/arch/arm/dts/k3-j722s-evm.dts b/arch/arm/dts/k3-j722s-evm.dts
    index d799be55..0b8181db 100644
    --- a/arch/arm/dts/k3-j722s-evm.dts
    +++ b/arch/arm/dts/k3-j722s-evm.dts
    @@ -19,8 +19,8 @@
     	model = "Texas Instruments J722S EVM";
     
     	aliases {
    -		serial0 = &wkup_uart0;
    -		serial2 = &main_uart0;
    +		serial0 = &main_uart0;
    +		serial2 = &wkup_uart0;
     		mmc0 = &sdhci0;
     		mmc1 = &sdhci1;
     		usb0 = &usb0;
    @@ -28,7 +28,7 @@
     	};
     
     	chosen {
    -		stdout-path = &main_uart0;
    +		stdout-path = &wkup_uart0;
     	};
     
     	memory@80000000 {
    @@ -338,7 +338,8 @@
     	/* WKUP UART0 is used by Device Manager firmware */
     	pinctrl-names = "default";
     	pinctrl-0 = <&wkup_uart0_pins_default>;
    -	status = "reserved";
    +	clock-frequency = <96000000>;	
    +	status = "okay";
     	bootph-all;
     };
     
    diff --git a/arch/arm/dts/k3-j722s-r5-evm.dts b/arch/arm/dts/k3-j722s-r5-evm.dts
    index b1788e40..b81b5a97 100644
    --- a/arch/arm/dts/k3-j722s-r5-evm.dts
    +++ b/arch/arm/dts/k3-j722s-r5-evm.dts
    @@ -14,8 +14,8 @@
     	aliases {
     		remoteproc0 = &sysctrler;
     		remoteproc1 = &a53_0;
    -		serial0 = &wkup_uart0;
    -		serial2 = &main_uart0;
    +		serial0 = &main_uart0;
    +		serial2 = &wkup_uart0;
     	};
     
     	a53_0: a53@0 {
     	
    diff --git a/board/ti/j722s/j722s.env b/board/ti/j722s/j722s.env
    index 4cc66e8d..58470990 100644
    --- a/board/ti/j722s/j722s.env
    +++ b/board/ti/j722s/j722s.env
    @@ -8,7 +8,7 @@
     
     name_kern=Image
     console=ttyS2,115200n8
    -args_all=setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x02800000
    +args_all=setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x42300000
            ${mtdparts}
     run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}
     
    diff --git a/arch/arm/mach-k3/r5/j722s/clk-data.c b/arch/arm/mach-k3/r5/j722s/clk-data.c
    index b4f27af3..ff1edbf3 100644
    --- a/arch/arm/mach-k3/r5/j722s/clk-data.c
    +++ b/arch/arm/mach-k3/r5/j722s/clk-data.c
    @@ -206,6 +206,7 @@ static const struct clk_data clk_list[] = {
     	CLK_MUX("main_usart0_fclk_sel_out0", main_usart0_fclk_sel_out0_parents, 2, 0x108280, 0, 1, 0),
     	CLK_DIV("sam62_pll_ctrl_wrap_main_0_chip_div24_clk_clk", "sam62_pll_ctrl_wrap_main_0_sysclkout_clk", 0x41011c, 0, 5, 0, 0),
     	CLK_DIV("sam62_pll_ctrl_wrap_mcu_0_chip_div24_clk_clk", "sam62_pll_ctrl_wrap_mcu_0_sysclkout_clk", 0x402011c, 0, 5, 0, 0),
    +	CLK_DIV("hsdiv4_16fft_mcu_0_hsdivout2_clk", "pllfracf2_ssmod_16fft_mcu_0_foutvcop_clk", 0x4040088, 0, 7, 0, 0),
     };
     
     static const struct dev_clk soc_dev_clk_data[] = {
    @@ -302,6 +303,10 @@ static const struct dev_clk soc_dev_clk_data[] = {
     	DEV_CLK(170, 1, "hsdiv0_16fft_main_12_hsdivout0_clk"),
     	DEV_CLK(170, 2, "board_0_tck_out"),
     	DEV_CLK(170, 3, "sam62_pll_ctrl_wrap_main_0_chip_div1_clk_clk"),
    +	DEV_CLK(114, 0, "hsdiv4_16fft_mcu_0_hsdivout2_clk"),
    +	DEV_CLK(114, 3, "wkup_clksel_out0"),
    +	DEV_CLK(114, 4, "hsdiv3_16fft_main_15_hsdivout0_clk"),
    +	DEV_CLK(114, 5, "hsdiv4_16fft_mcu_0_hsdivout0_clk"),	
     };
     
     const struct ti_k3_clk_platdata j722s_clk_platdata = {
    diff --git a/arch/arm/mach-k3/r5/j722s/dev-data.c b/arch/arm/mach-k3/r5/j722s/dev-data.c
    index 59176c98..ea2a69b9 100644
    --- a/arch/arm/mach-k3/r5/j722s/dev-data.c
    +++ b/arch/arm/mach-k3/r5/j722s/dev-data.c
    @@ -55,6 +55,7 @@ static struct ti_dev soc_dev_list[] = {
     	PSC_DEV(170, &soc_lpsc_list[10]),
     	PSC_DEV(177, &soc_lpsc_list[11]),
     	PSC_DEV(55, &soc_lpsc_list[12]),
    +	PSC_DEV(114, &soc_lpsc_list[0]),
     };
     
     const struct ti_k3_pd_platdata j722s_pd_platdata = {
    -- 
    2.34.1

    Build Steps:

    ============

    Building UBOOT:

    • Run make u-boot from the <SDK dir> and taken tiboot3.bin ,tispl.bin and u-boot,img from board-support/<TI UBOOT folder>/build folder.

    Kernel changes:

    From d61b6a289604ae25811b03e1091b3e8cd07b3c0c Mon Sep 17 00:00:00 2001
    From: Gokul Praveen <g-praveen@ti.com>
    Date: Tue, 30 Sep 2025 12:28:54 +0530
    Subject: [PATCH] ENable wkup uart in Linux for J722S
    
    ---
     arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi | 1 +
     arch/arm64/boot/dts/ti/k3-j722s-evm.dts     | 8 ++++----
     2 files changed, 5 insertions(+), 4 deletions(-)
    
    diff --git a/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi
    index c105ea4e9..1afae4262 100644
    --- a/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi
    +++ b/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi
    @@ -61,6 +61,7 @@ SYSC_OMAP2_SOFTRESET |
     		power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
     		clocks = <&k3_clks 114 0>;
     		clock-names = "fck";
    +		clock-frequency = <96000000>;	
     		#address-cells = <1>;
     		#size-cells = <1>;
     		ranges = <0 0 0x2b300000 0x100000>;
    diff --git a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
    index 146c5580f..c51918b5d 100644
    --- a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
    +++ b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
    @@ -18,15 +18,15 @@ / {
     	model = "Texas Instruments J722S EVM";
     
     	aliases {
    -		serial0 = &wkup_uart0;
    -		serial2 = &main_uart0;
    +		serial0 = &main_uart0;;
    +		serial2 = &wkup_uart0;
     		serial3 = &main_uart5;
     		mmc0 = &sdhci0;
     		mmc1 = &sdhci1;
     	};
     
     	chosen {
    -		stdout-path = &main_uart0;
    +		stdout-path = &wkup_uart0;
     	};
     
     	memory@80000000 {
    @@ -534,7 +534,7 @@ &wkup_uart0 {
     	/* WKUP UART0 is used by Device Manager firmware */
     	pinctrl-names = "default";
     	pinctrl-0 = <&wkup_uart0_pins_default>;
    -	status = "reserved";
    +	status = "okay";
     	bootph-all;
     };
     
    -- 
    2.34.1
    
    

    REgards

    Gokul