xref: /optee_os/core/drivers/crypto/caam/hal/ls/hal_jr.c (revision 2d7a8964dfcbe6c3494a0889831818dd8f153f4a)
1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3  * Copyright 2019 NXP
4  *
5  * Brief   CAAM Job Rings Hardware Abstration Layer.
6  *         Implementation of primitives to access HW.
7  */
8 #include <caam_common.h>
9 #include <caam_hal_jr.h>
10 #include <caam_io.h>
11 #include <registers/ctrl_regs.h>
12 #include <registers/jr_regs.h>
13 
caam_hal_jr_setowner(vaddr_t ctrl_base,paddr_t jr_offset,enum caam_jr_owner owner)14 enum caam_status caam_hal_jr_setowner(vaddr_t ctrl_base, paddr_t jr_offset,
15 				      enum caam_jr_owner owner)
16 {
17 	uint32_t val = 0;
18 	unsigned int jr_idx = JRX_IDX(jr_offset);
19 
20 	if (owner == JROWN_ARM_S) {
21 		/* Read the Job Ring Lock bit */
22 		val = io_caam_read32(ctrl_base + JRxMIDR_MS(jr_idx));
23 		HAL_TRACE("JR%" PRIu32 "MIDR_MS value 0x%" PRIx32, jr_idx, val);
24 		val |= JRxMIDR_MS_TZ;
25 
26 		io_caam_write32(ctrl_base + JRxMIDR_MS(jr_idx), val);
27 	}
28 
29 	return CAAM_NO_ERROR;
30 }
31 
caam_hal_jr_prepare_backup(vaddr_t ctrl_base __unused,paddr_t jr_offset __unused)32 void caam_hal_jr_prepare_backup(vaddr_t ctrl_base __unused,
33 				paddr_t jr_offset __unused)
34 {
35 }
36