[PATCH v7 03/13] arm: mach-k3: Remove CANUART IO isolation

Kumar, Udit u-kumar1 at ti.com
Sat Dec 13 07:31:22 CET 2025


Thanks Markus,

On 12/10/2025 7:38 PM, Markus Schneider-Pargmann (TI.com) wrote:
> After leaving the Partial-IO mode or other deep sleep states, the IO
> isolation needs to be removed. This routine is shared by at least am62,
> am62a and am62p.
>
> The original function for testing was developed by
> Akashdeep Kaur <a-kaur at ti.com>
>
> Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp at baylibre.com>
> ---
>   arch/arm/mach-k3/am62ax/am62a7_init.c    |  4 +++
>   arch/arm/mach-k3/am62px/am62p5_init.c    |  4 +++
>   arch/arm/mach-k3/am62x/am625_init.c      |  4 +++
>   arch/arm/mach-k3/common.c                | 59 ++++++++++++++++++++++++++++++++
>   arch/arm/mach-k3/common.h                |  1 +
>   arch/arm/mach-k3/include/mach/hardware.h | 26 ++++++++++++++
>   6 files changed, 98 insertions(+)
>
> diff --git a/arch/arm/mach-k3/am62ax/am62a7_init.c b/arch/arm/mach-k3/am62ax/am62a7_init.c
> index 7de234611639d119db5c7a718738a02cedf8028c..24fdfdd7f1d9146f0cb6dde333d2bb54df96700d 100644
> --- a/arch/arm/mach-k3/am62ax/am62a7_init.c
> +++ b/arch/arm/mach-k3/am62ax/am62a7_init.c
> @@ -101,6 +101,10 @@ void board_init_f(ulong dummy)
>   	/* Init DM early */
>   	spl_early_init();
>   
> +	ret = wkup_ctrl_remove_can_io_isolation_if_set();
> +	if (ret)
> +		panic("Failed to remove can IO isolation when set %d\n", ret);

> +
> [..]
>   

>   	if (strncmp(data->header, K3_ROM_BOOT_HEADER_MAGIC, 7))
> diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h
> index 55fe1f06d8b04a0bc27a88bb63a1fdc0b1eb383f..a68924a2123961642b63401f3600ac825fb62da5 100644
> --- a/arch/arm/mach-k3/common.h
> +++ b/arch/arm/mach-k3/common.h
> @@ -52,6 +52,7 @@ void do_board_detect(void);
>   void ti_secure_image_check_binary(void **p_image, size_t *p_size);
>   int shutdown_mcu_r5_core1(void);
>   bool wkup_ctrl_is_lpm_exit(void);
> +int wkup_ctrl_remove_can_io_isolation_if_set(void);
>   
>   #if IS_ENABLED(CONFIG_SPL_OS_BOOT_SECURE) && !IS_ENABLED(CONFIG_ARM64)
>   int k3_r5_falcon_bootmode(void);
> diff --git a/arch/arm/mach-k3/include/mach/hardware.h b/arch/arm/mach-k3/include/mach/hardware.h
> index 6f425d03be5d9cbc03a0daac5e9b10fadd176335..8b5698ba8e99e32d9b41e8e476ed433481726b8a 100644
> --- a/arch/arm/mach-k3/include/mach/hardware.h
> +++ b/arch/arm/mach-k3/include/mach/hardware.h
> @@ -117,6 +117,32 @@ K3_SOC_ID(j722s, J722S)
>   #define CTRLMMR_LOCK_KICK1			0x100c
>   #define CTRLMMR_LOCK_KICK1_UNLOCK_VAL		0xd172bc5a
>   
> +/*
> + * Shared WKUP_CTRL_MMR0 definitions used to remove IO isolation
> + */
> +#define WKUP_CTRL_MMR_PMCTRL_IO_0				0x18084

This is specific to few SOCs, and not common for all ,

So, please make some Base-SOC file, which can share this definition

e.g J7200 SOC

at register 0x4301_8084 h has CTRLMMR_WKUP_POR_POKLVB_UV_CTRL register.

and does not share below bits.



> +#define WKUP_CTRL_MMR_PMCTRL_IO_0_ISOCLK_OVRD_0			BIT(0)
> +#define WKUP_CTRL_MMR_PMCTRL_IO_0_ISOOVR_EXTEND_0		BIT(4)
> +#define WKUP_CTRL_MMR_PMCTRL_IO_0_ISO_BYPASS_OVR_0		BIT(6)
> +#define WKUP_CTRL_MMR_PMCTRL_IO_0_WUCLK_CTRL_0			BIT(8)
> +#define WKUP_CTRL_MMR_PMCTRL_IO_0_GLOBAL_WUEN_0			BIT(16)
> +#define WKUP_CTRL_MMR_PMCTRL_IO_0_IO_ISO_CTRL_0			BIT(24)
> +#define WKUP_CTRL_MMR_PMCTRL_IO_0_WRITE_MASK ( \
> +		WKUP_CTRL_MMR_PMCTRL_IO_0_ISOCLK_OVRD_0 |	\
> +		WKUP_CTRL_MMR_PMCTRL_IO_0_ISOOVR_EXTEND_0 |	\
> +		WKUP_CTRL_MMR_PMCTRL_IO_0_ISO_BYPASS_OVR_0 |	\
> +		WKUP_CTRL_MMR_PMCTRL_IO_0_WUCLK_CTRL_0 |	\
> +		WKUP_CTRL_MMR_PMCTRL_IO_0_GLOBAL_WUEN_0 |	\
> +		WKUP_CTRL_MMR_PMCTRL_IO_0_IO_ISO_CTRL_0)
> +
> +#define WKUP_CTRL_MMR_PMCTRL_IO_GLB				0x1809c
> +#define WKUP_CTRL_MMR_DEEPSLEEP_CTRL				0x18160
> +
> +#define WKUP_CTRL_MMR_CANUART_WAKE_CTRL				0x18300
> +#define WKUP_CTRL_MMR_CANUART_WAKE_CTRL_MW			0x2aaaaaaa
> +#define WKUP_CTRL_MMR_CANUART_WAKE_CTRL_MW_SHIFT		1
> +#define WKUP_CTRL_MMR_CANUART_WAKE_CTRL_MW_LOAD_EN		BIT(0)
> +
>   #define WKUP_CTRL_MMR_CANUART_WAKE_STAT1			0x1830c
>   #define WKUP_CTRL_MMR_CANUART_WAKE_STAT1_CANUART_IO_MODE	BIT(0)
>   
>


More information about the U-Boot mailing list