xref: /optee_os/core/drivers/crypto/caam/include/caam_desc_ccb_defines.h (revision 84c0a67b92bd8185c1c41186dcbb149f0909f849)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright 2018-2021 NXP
4  *
5  * Brief   Define the CCB Registers to use in the CAAM descriptor
6  */
7 #ifndef __CAAM_DESC_CCB_DEFINES_H__
8 #define __CAAM_DESC_CCB_DEFINES_H__
9 
10 /* CCB CHA Control Register */
11 #define CCTRL_ULOAD_PKHA_B  BIT32(27)
12 #define CCTRL_ULOAD_PKHA_A  BIT32(26)
13 
14 /* CCB Clear Written Register */
15 #define CLR_WR_IFIFO_NFIFO BIT32(31)
16 #define CLR_WR_RST_C1_CHA  BIT32(29)
17 #define CLR_WR_RST_C2_CHA  BIT32(28)
18 #define CLR_WR_RST_C1_DNE  BIT32(27)
19 #define CLR_WR_RST_C2_CTX  BIT32(21)
20 #define CLR_WR_RST_C2_DSZ  BIT32(18)
21 #define CLR_WR_RST_C1_DSZ  BIT32(2)
22 #define CLR_WR_RST_C1_MDE  BIT32(0)
23 
24 /* CCB NFIFO */
25 #define NFIFO_CLASS(cla)       SHIFT_U32(NFIFO_CLASS_##cla & 0x3, 30)
26 #define NFIFO_CLASS_DECO       0x0
27 #define NFIFO_CLASS_C1         0x1
28 #define NFIFO_CLASS_BOTH       0x3
29 
30 #define NFIFO_LC2	       BIT32(29)
31 #define NFIFO_LC1              BIT32(28)
32 #define NFIFO_FC1              BIT32(26)
33 
34 #define NFIFO_STYPE(src)       SHIFT_U32(NFIFO_STYPE_##src & 0x3, 24)
35 #define NFIFO_STYPE_IFIFO      0x0
36 #define NFIFO_STYPE_PAD        0x2
37 
38 #define NFIFO_DTYPE(data)      SHIFT_U32(NFIFO_DTYPE_##data & 0xF, 20)
39 #define NFIFO_DTYPE_AAD        0x1
40 #define NFIFO_DTYPE_MSG        0xF
41 #define NFIFO_DTYPE_PKHA_N     0x8
42 #define NFIFO_DTYPE_PKHA_A     0xC
43 
44 #define NFIFO_PTYPE(pad)       SHIFT_U32(NFIFO_PTYPE_##pad & 0x7, 16)
45 #define NFIFO_PTYPE_ZERO       0x0
46 #define NFIFO_PTYPE_RND        0x3
47 
48 #define NFIFO_DATA_LENGTH(len) SHIFT_U32((len) & 0xFFF, 0)
49 #define NFIFO_PAD_LENGTH(len)  SHIFT_U32((len) & 0x7F, 0)
50 
51 /*
52  * CCB NFIFO Entry to pad data with pad type
53  */
54 #define NFIFO_PAD(cla, options, data, pad, len)                                \
55 	(NFIFO_CLASS(cla) | (options) | NFIFO_STYPE(PAD) | NFIFO_DTYPE(data) | \
56 	 NFIFO_PTYPE(pad) | NFIFO_PAD_LENGTH(len))
57 
58 /*
59  * CCB NFIFO Entry to move data from src to data
60  */
61 #define NFIFO_NOPAD(cla, options, src, data, len)                              \
62 	(NFIFO_CLASS(cla) | (options) | NFIFO_STYPE(src) | NFIFO_DTYPE(data) | \
63 	 NFIFO_PTYPE(ZERO) | NFIFO_DATA_LENGTH(len))
64 
65 #endif /* __CAAM_DESC_CCB_DEFINES_H__ */
66