[PATCH 05/37] imx: Ensure CAAM clock is enabled prior getting out_jr_size

Peng Fan (OSS) peng.fan at oss.nxp.com
Thu Mar 25 10:30:04 CET 2021


From: Breno Lima <breno.lima at nxp.com>

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 <breno.lima at nxp.com>
Reviewed-by: Ye Li <ye.li at nxp.com>
Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
 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 5bf92cbecf..9a965576c7 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 6e567027c0..dd506a16e8 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.25.1



More information about the U-Boot mailing list