xref: /rk3399_rockchip-uboot/drivers/crypto/fsl/fsl_blob.c (revision 7ee8c4795d0ab0f1cd25496bfbcdedb184ef5a8d)
1c5de15cbSRuchika Gupta /*
2c5de15cbSRuchika Gupta  * Copyright 2014 Freescale Semiconductor, Inc.
3c5de15cbSRuchika Gupta  *
4c5de15cbSRuchika Gupta  * SPDX-License-Identifier:	GPL-2.0+
5c5de15cbSRuchika Gupta  *
6c5de15cbSRuchika Gupta  */
7c5de15cbSRuchika Gupta 
8c5de15cbSRuchika Gupta #include <common.h>
9c5de15cbSRuchika Gupta #include <malloc.h>
10c5de15cbSRuchika Gupta #include "jobdesc.h"
11c5de15cbSRuchika Gupta #include "desc.h"
12c5de15cbSRuchika Gupta #include "jr.h"
13c5de15cbSRuchika Gupta 
14*7ee8c479Sgaurav rana int blob_decap(u8 *key_mod, u8 *src, u8 *dst, u32 len)
15c5de15cbSRuchika Gupta {
16c5de15cbSRuchika Gupta 	int ret, i = 0;
17c5de15cbSRuchika Gupta 	u32 *desc;
18c5de15cbSRuchika Gupta 
19c5de15cbSRuchika Gupta 	printf("\nDecapsulating data to form blob\n");
20c5de15cbSRuchika Gupta 	desc = malloc(sizeof(int) * MAX_CAAM_DESCSIZE);
21c5de15cbSRuchika Gupta 	if (!desc) {
22c5de15cbSRuchika Gupta 		debug("Not enough memory for descriptor allocation\n");
23c5de15cbSRuchika Gupta 		return -1;
24c5de15cbSRuchika Gupta 	}
25c5de15cbSRuchika Gupta 
26c5de15cbSRuchika Gupta 	inline_cnstr_jobdesc_blob_decap(desc, key_mod, src, dst, len);
27c5de15cbSRuchika Gupta 
28c5de15cbSRuchika Gupta 	for (i = 0; i < 14; i++)
29c5de15cbSRuchika Gupta 		printf("%x\n", *(desc + i));
30c5de15cbSRuchika Gupta 	ret = run_descriptor_jr(desc);
31c5de15cbSRuchika Gupta 
32c5de15cbSRuchika Gupta 	if (ret)
33c5de15cbSRuchika Gupta 		printf("Error in Decapsulation %d\n", ret);
34c5de15cbSRuchika Gupta 
35c5de15cbSRuchika Gupta 	free(desc);
36c5de15cbSRuchika Gupta 	return ret;
37c5de15cbSRuchika Gupta }
38c5de15cbSRuchika Gupta 
39*7ee8c479Sgaurav rana int blob_encap(u8 *key_mod, u8 *src, u8 *dst, u32 len)
40c5de15cbSRuchika Gupta {
41c5de15cbSRuchika Gupta 	int ret, i = 0;
42c5de15cbSRuchika Gupta 	u32 *desc;
43c5de15cbSRuchika Gupta 
44c5de15cbSRuchika Gupta 	printf("\nEncapsulating data to form blob\n");
45c5de15cbSRuchika Gupta 	desc = malloc(sizeof(int) * MAX_CAAM_DESCSIZE);
46c5de15cbSRuchika Gupta 	if (!desc) {
47c5de15cbSRuchika Gupta 		debug("Not enough memory for descriptor allocation\n");
48c5de15cbSRuchika Gupta 		return -1;
49c5de15cbSRuchika Gupta 	}
50c5de15cbSRuchika Gupta 
51c5de15cbSRuchika Gupta 	inline_cnstr_jobdesc_blob_encap(desc, key_mod, src, dst, len);
52c5de15cbSRuchika Gupta 	for (i = 0; i < 14; i++)
53c5de15cbSRuchika Gupta 		printf("%x\n", *(desc + i));
54c5de15cbSRuchika Gupta 	ret = run_descriptor_jr(desc);
55c5de15cbSRuchika Gupta 
56c5de15cbSRuchika Gupta 	if (ret)
57c5de15cbSRuchika Gupta 		printf("Error in Encapsulation %d\n", ret);
58c5de15cbSRuchika Gupta 
59c5de15cbSRuchika Gupta 	free(desc);
60c5de15cbSRuchika Gupta 	return ret;
61c5de15cbSRuchika Gupta }
62