1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3  * Copyright 2018-2019 NXP
4  *
5  * Brief   This driver interfaces TEE Cryptographic API crypto_*
6  */
7 #include <crypto/crypto.h>
8 #include <drvcrypt.h>
9 #include <initcall.h>
10 
11 static void *crypt_algo[CRYPTO_MAX_ALGO];
12 
drvcrypt_register(enum drvcrypt_algo_id algo_id,void * ops)13 TEE_Result drvcrypt_register(enum drvcrypt_algo_id algo_id, void *ops)
14 {
15 	if (!crypt_algo[algo_id]) {
16 		CRYPTO_TRACE("Registering module id %d with 0x%p", algo_id,
17 			     ops);
18 		crypt_algo[algo_id] = ops;
19 		return TEE_SUCCESS;
20 	}
21 
22 	CRYPTO_TRACE("Fail to register module id %d with 0x%p", algo_id, ops);
23 	return TEE_ERROR_GENERIC;
24 }
25 
drvcrypt_register_change(enum drvcrypt_algo_id algo_id,void * ops)26 void drvcrypt_register_change(enum drvcrypt_algo_id algo_id, void *ops)
27 {
28 	CRYPTO_TRACE("Change registered module id %d with 0x%p", algo_id, ops);
29 	crypt_algo[algo_id] = ops;
30 }
31 
drvcrypt_get_ops(enum drvcrypt_algo_id algo_id)32 void *drvcrypt_get_ops(enum drvcrypt_algo_id algo_id)
33 {
34 	return crypt_algo[algo_id];
35 }
36