From 6d7b27033726fe32583ced72f144c288699eed04 Mon Sep 17 00:00:00 2001 From: Breno Lima Date: Thu, 25 Mar 2021 17:30:04 +0800 Subject: [PATCH] imx: Ensure CAAM clock is enabled prior getting out_jr_size Prior calling sec_in32() we have to ensure CAAM clock is enabled, the function sec_in32() is reading CAAM registers and if CAAM clock is disabled the system will hang. Signed-off-by: Breno Lima Reviewed-by: Ye Li Signed-off-by: Peng Fan --- arch/arm/mach-imx/cmd_dek.c | 6 +++--- arch/arm/mach-imx/cmd_mfgprot.c | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-imx/cmd_dek.c b/arch/arm/mach-imx/cmd_dek.c index 5bf92cb..9a96557 100644 --- a/arch/arm/mach-imx/cmd_dek.c +++ b/arch/arm/mach-imx/cmd_dek.c @@ -28,12 +28,12 @@ static int blob_encap_dek(const u8 *src, u8 *dst, u32 len) int ret = 0; u32 jr_size = 4; + hab_caam_clock_enable(1); + u32 out_jr_size = sec_in32(CONFIG_SYS_FSL_JR0_ADDR + FSL_CAAM_ORSR_JRa_OFFSET); - if (out_jr_size != jr_size) { - hab_caam_clock_enable(1); + if (out_jr_size != jr_size) sec_init(); - } if (!((len == 128) | (len == 192) | (len == 256))) { debug("Invalid DEK size. Valid sizes are 128, 192 and 256b\n"); diff --git a/arch/arm/mach-imx/cmd_mfgprot.c b/arch/arm/mach-imx/cmd_mfgprot.c index 6e56702..dd506a1 100644 --- a/arch/arm/mach-imx/cmd_mfgprot.c +++ b/arch/arm/mach-imx/cmd_mfgprot.c @@ -42,13 +42,14 @@ static int do_mfgprot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) /* Enable HAB clock */ u32 jr_size = 4; + + hab_caam_clock_enable(1); + u32 out_jr_size = sec_in32(CONFIG_SYS_FSL_JR0_ADDR + FSL_CAAM_ORSR_JRa_OFFSET); - if (out_jr_size != jr_size) { - hab_caam_clock_enable(1); + if (out_jr_size != jr_size) sec_init(); - } if (strcmp(sel, pubk) == 0) { dst_ptr = malloc_cache_aligned(FSL_CAAM_MP_PUBK_BYTES); -- 2.7.4