hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/crypto/caam/desc.h
....@@ -4,6 +4,7 @@
44 * Definitions to support CAAM descriptor instruction generation
55 *
66 * Copyright 2008-2011 Freescale Semiconductor, Inc.
7
+ * Copyright 2018 NXP
78 */
89
910 #ifndef DESC_H
....@@ -17,7 +18,7 @@
1718 */
1819
1920 #define SEC4_SG_LEN_EXT 0x80000000 /* Entry points to table */
20
-#define SEC4_SG_LEN_FIN 0x40000000 /* Last ent in table */
21
+#define SEC4_SG_LEN_FIN 0x40000000 /* Last entry in table */
2122 #define SEC4_SG_BPID_MASK 0x000000ff
2223 #define SEC4_SG_BPID_SHIFT 16
2324 #define SEC4_SG_LEN_MASK 0x3fffffff /* Excludes EXT and FINAL */
....@@ -112,7 +113,7 @@
112113 */
113114 #define HDR_REVERSE 0x00000800
114115
115
-/* Propogate DNR property to SharedDesc */
116
+/* Propagate DNR property to SharedDesc */
116117 #define HDR_PROP_DNR 0x00000800
117118
118119 /* JobDesc/SharedDesc share property */
....@@ -242,6 +243,7 @@
242243 #define LDST_SRCDST_WORD_DESCBUF_SHARED (0x42 << LDST_SRCDST_SHIFT)
243244 #define LDST_SRCDST_WORD_DESCBUF_JOB_WE (0x45 << LDST_SRCDST_SHIFT)
244245 #define LDST_SRCDST_WORD_DESCBUF_SHARED_WE (0x46 << LDST_SRCDST_SHIFT)
246
+#define LDST_SRCDST_WORD_INFO_FIFO_SM (0x71 << LDST_SRCDST_SHIFT)
245247 #define LDST_SRCDST_WORD_INFO_FIFO (0x7a << LDST_SRCDST_SHIFT)
246248
247249 /* Offset in source/destination */
....@@ -283,6 +285,12 @@
283285 #define LDLEN_SET_OFIFO_OFF_RSVD (1 << 3)
284286 #define LDLEN_SET_OFIFO_OFFSET_SHIFT 0
285287 #define LDLEN_SET_OFIFO_OFFSET_MASK (3 << LDLEN_SET_OFIFO_OFFSET_SHIFT)
288
+
289
+/* Special Length definitions when dst=sm, nfifo-{sm,m} */
290
+#define LDLEN_MATH0 0
291
+#define LDLEN_MATH1 1
292
+#define LDLEN_MATH2 2
293
+#define LDLEN_MATH3 3
286294
287295 /*
288296 * FIFO_LOAD/FIFO_STORE/SEQ_FIFO_LOAD/SEQ_FIFO_STORE
....@@ -408,6 +416,7 @@
408416 #define FIFOST_TYPE_MESSAGE_DATA (0x30 << FIFOST_TYPE_SHIFT)
409417 #define FIFOST_TYPE_RNGSTORE (0x34 << FIFOST_TYPE_SHIFT)
410418 #define FIFOST_TYPE_RNGFIFO (0x35 << FIFOST_TYPE_SHIFT)
419
+#define FIFOST_TYPE_METADATA (0x3e << FIFOST_TYPE_SHIFT)
411420 #define FIFOST_TYPE_SKIP (0x3f << FIFOST_TYPE_SHIFT)
412421
413422 /*
....@@ -1133,6 +1142,12 @@
11331142 #define OP_ALG_TYPE_CLASS1 (2 << OP_ALG_TYPE_SHIFT)
11341143 #define OP_ALG_TYPE_CLASS2 (4 << OP_ALG_TYPE_SHIFT)
11351144
1145
+/* version register fields */
1146
+#define OP_VER_CCHA_NUM 0x000000ff /* Number CCHAs instantiated */
1147
+#define OP_VER_CCHA_MISC 0x0000ff00 /* CCHA Miscellaneous Information */
1148
+#define OP_VER_CCHA_REV 0x00ff0000 /* CCHA Revision Number */
1149
+#define OP_VER_CCHA_VID 0xff000000 /* CCHA Version ID */
1150
+
11361151 #define OP_ALG_ALGSEL_SHIFT 16
11371152 #define OP_ALG_ALGSEL_MASK (0xff << OP_ALG_ALGSEL_SHIFT)
11381153 #define OP_ALG_ALGSEL_SUBMASK (0x0f << OP_ALG_ALGSEL_SHIFT)
....@@ -1140,6 +1155,7 @@
11401155 #define OP_ALG_ALGSEL_DES (0x20 << OP_ALG_ALGSEL_SHIFT)
11411156 #define OP_ALG_ALGSEL_3DES (0x21 << OP_ALG_ALGSEL_SHIFT)
11421157 #define OP_ALG_ALGSEL_ARC4 (0x30 << OP_ALG_ALGSEL_SHIFT)
1158
+#define OP_ALG_CHA_MDHA (0x40 << OP_ALG_ALGSEL_SHIFT)
11431159 #define OP_ALG_ALGSEL_MD5 (0x40 << OP_ALG_ALGSEL_SHIFT)
11441160 #define OP_ALG_ALGSEL_SHA1 (0x41 << OP_ALG_ALGSEL_SHIFT)
11451161 #define OP_ALG_ALGSEL_SHA224 (0x42 << OP_ALG_ALGSEL_SHIFT)
....@@ -1152,6 +1168,8 @@
11521168 #define OP_ALG_ALGSEL_KASUMI (0x70 << OP_ALG_ALGSEL_SHIFT)
11531169 #define OP_ALG_ALGSEL_CRC (0x90 << OP_ALG_ALGSEL_SHIFT)
11541170 #define OP_ALG_ALGSEL_SNOW_F9 (0xA0 << OP_ALG_ALGSEL_SHIFT)
1171
+#define OP_ALG_ALGSEL_CHACHA20 (0xD0 << OP_ALG_ALGSEL_SHIFT)
1172
+#define OP_ALG_ALGSEL_POLY1305 (0xE0 << OP_ALG_ALGSEL_SHIFT)
11551173
11561174 #define OP_ALG_AAI_SHIFT 4
11571175 #define OP_ALG_AAI_MASK (0x1ff << OP_ALG_AAI_SHIFT)
....@@ -1199,6 +1217,11 @@
11991217 #define OP_ALG_AAI_RNG4_AI (0x80 << OP_ALG_AAI_SHIFT)
12001218 #define OP_ALG_AAI_RNG4_SK (0x100 << OP_ALG_AAI_SHIFT)
12011219
1220
+/* Chacha20 AAI set */
1221
+#define OP_ALG_AAI_AEAD (0x002 << OP_ALG_AAI_SHIFT)
1222
+#define OP_ALG_AAI_KEYSTREAM (0x001 << OP_ALG_AAI_SHIFT)
1223
+#define OP_ALG_AAI_BC8 (0x008 << OP_ALG_AAI_SHIFT)
1224
+
12021225 /* hmac/smac AAI set */
12031226 #define OP_ALG_AAI_HASH (0x00 << OP_ALG_AAI_SHIFT)
12041227 #define OP_ALG_AAI_HMAC (0x01 << OP_ALG_AAI_SHIFT)
....@@ -1230,6 +1253,8 @@
12301253 #define OP_ALG_ICV_MASK (1 << OP_ALG_ICV_SHIFT)
12311254 #define OP_ALG_ICV_OFF (0 << OP_ALG_ICV_SHIFT)
12321255 #define OP_ALG_ICV_ON (1 << OP_ALG_ICV_SHIFT)
1256
+
1257
+#define OP_ALG_PR_ON BIT(1)
12331258
12341259 #define OP_ALG_DIR_SHIFT 0
12351260 #define OP_ALG_DIR_MASK 1
....@@ -1387,6 +1412,7 @@
13871412 #define MOVE_SRC_MATH3 (0x07 << MOVE_SRC_SHIFT)
13881413 #define MOVE_SRC_INFIFO (0x08 << MOVE_SRC_SHIFT)
13891414 #define MOVE_SRC_INFIFO_CL (0x09 << MOVE_SRC_SHIFT)
1415
+#define MOVE_SRC_AUX_ABLK (0x0a << MOVE_SRC_SHIFT)
13901416
13911417 #define MOVE_DEST_SHIFT 16
13921418 #define MOVE_DEST_MASK (0x0f << MOVE_DEST_SHIFT)
....@@ -1413,6 +1439,10 @@
14131439
14141440 #define MOVELEN_MRSEL_SHIFT 0
14151441 #define MOVELEN_MRSEL_MASK (0x3 << MOVE_LEN_SHIFT)
1442
+#define MOVELEN_MRSEL_MATH0 (0 << MOVELEN_MRSEL_SHIFT)
1443
+#define MOVELEN_MRSEL_MATH1 (1 << MOVELEN_MRSEL_SHIFT)
1444
+#define MOVELEN_MRSEL_MATH2 (2 << MOVELEN_MRSEL_SHIFT)
1445
+#define MOVELEN_MRSEL_MATH3 (3 << MOVELEN_MRSEL_SHIFT)
14161446
14171447 /*
14181448 * MATH Command Constructs
....@@ -1589,6 +1619,7 @@
15891619 #define NFIFOENTRY_DTYPE_IV (0x2 << NFIFOENTRY_DTYPE_SHIFT)
15901620 #define NFIFOENTRY_DTYPE_SAD (0x3 << NFIFOENTRY_DTYPE_SHIFT)
15911621 #define NFIFOENTRY_DTYPE_ICV (0xA << NFIFOENTRY_DTYPE_SHIFT)
1622
+#define NFIFOENTRY_DTYPE_POLY (0xB << NFIFOENTRY_DTYPE_SHIFT)
15921623 #define NFIFOENTRY_DTYPE_SKIP (0xE << NFIFOENTRY_DTYPE_SHIFT)
15931624 #define NFIFOENTRY_DTYPE_MSG (0xF << NFIFOENTRY_DTYPE_SHIFT)
15941625