xref: /optee_os/core/drivers/crypto/caam/hal/imx_8m/hal_cfg.c (revision 75be62aebb3981aa5e6c6b7159228af77d46374f)
1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3  * Copyright 2024 NXP
4  *
5  * Brief   CAAM Configuration.
6  */
7 #include <caam_hal_cfg.h>
8 #include <caam_hal_jr.h>
9 #include <kernel/dt.h>
10 #include <registers/jr_regs.h>
11 
caam_hal_cfg_hab_jr_mgmt(struct caam_jrcfg * jrcfg)12 void caam_hal_cfg_hab_jr_mgmt(struct caam_jrcfg *jrcfg)
13 {
14 	void *fdt = NULL;
15 	struct caam_jrcfg tmp_jrcfg = {
16 		.offset = (CFG_JR_HAB_INDEX + 1) * JRX_BLOCK_SIZE,
17 	};
18 
19 	fdt = get_dt();
20 	if (fdt) {
21 		/* Ensure Secure Job Ring is secure only into DTB */
22 		caam_hal_cfg_disable_jobring_dt(fdt, &tmp_jrcfg);
23 	}
24 
25 	caam_hal_jr_prepare_backup(jrcfg->base, tmp_jrcfg.offset);
26 }
27 
caam_hal_cfg_is_hab_jr(paddr_t jr_offset)28 bool caam_hal_cfg_is_hab_jr(paddr_t jr_offset)
29 {
30 	unsigned int jr_idx = JRX_IDX(jr_offset);
31 
32 	return jr_idx == CFG_JR_HAB_INDEX;
33 }
34