diff options
author | Ye Li <ye.li@nxp.com> | 2023-01-31 16:42:17 +0800 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2023-03-29 20:15:42 +0200 |
commit | 8b956bdddd308137b848e5ca87da0115abdb86d7 (patch) | |
tree | a23dcd24db5e381fc86d2e0671d291d1782514e0 /arch/arm/include | |
parent | aec9b5de44b0c310c1dda82ad0ad7a8bac292db0 (diff) | |
download | u-boot-8b956bdddd308137b848e5ca87da0115abdb86d7.zip u-boot-8b956bdddd308137b848e5ca87da0115abdb86d7.tar.gz u-boot-8b956bdddd308137b848e5ca87da0115abdb86d7.tar.bz2 |
imx: imx8ulp: Adjust handshake to sync TRDC and XRDC completion
To fit the DBD_EN fused part, we re-design the TRDC and XRDC assignment.
M33 will be the TRDC owner and needs to configure TRDC. A35 is the
XRDC owner, ATF will configure XRDC.
The handshake between U-boot and M33 image is used to sync TRDC and
XRDC configuration completion. Once the handshake is done, A35 and M33
can access the allowed resources in others domain.
The handshake is needed when M33 is booted or DBD_EN fused, because both
cases will enable the TRDC. If handshake is timeout, the boot will hang.
We use SIM GPR0 to pass the info from SPL to u-boot, because before the
handshake, u-boot can't access SEC SIM and FSB.
Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Jacky Bai <ping.bai@nxp.com>
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/arch-imx8ulp/sys_proto.h | 1 | ||||
-rw-r--r-- | arch/arm/include/asm/global_data.h | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/include/asm/arch-imx8ulp/sys_proto.h b/arch/arm/include/asm/arch-imx8ulp/sys_proto.h index ff49c62..5bbae21 100644 --- a/arch/arm/include/asm/arch-imx8ulp/sys_proto.h +++ b/arch/arm/include/asm/arch-imx8ulp/sys_proto.h @@ -14,6 +14,7 @@ int xrdc_config_pdac_openacc(u32 bridge, u32 index); void set_lpav_qos(void); void load_lposc_fuse(void); bool m33_image_booted(void); +bool is_m33_handshake_necessary(void); int m33_image_handshake(ulong timeout_ms); int imx8ulp_dm_post_init(void); #endif diff --git a/arch/arm/include/asm/global_data.h b/arch/arm/include/asm/global_data.h index 9e746e3..8698783 100644 --- a/arch/arm/include/asm/global_data.h +++ b/arch/arm/include/asm/global_data.h @@ -97,6 +97,9 @@ struct arch_global_data { u32 uid[4]; #endif +#ifdef CONFIG_ARCH_IMX8ULP + bool m33_handshake_done; +#endif }; #include <asm-generic/global_data.h> |