[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