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 <[email protected]>

Signed-off-by: Markus Schneider-Pargmann (TI.com) <[email protected]>
---
  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)

Reply via email to