summaryrefslogtreecommitdiff
path: root/drivers/crypto/caam
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/crypto/caam')
-rw-r--r--drivers/crypto/caam/caamalg.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c
index e820381..ea44991 100644
--- a/drivers/crypto/caam/caamalg.c
+++ b/drivers/crypto/caam/caamalg.c
@@ -884,6 +884,10 @@ static int tls_set_sh_desc(struct crypto_aead *aead)
/* VSOL = payloadlen + icvlen + padlen */
append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, 4);
+#ifdef __LITTLE_ENDIAN
+ append_moveb(desc, MOVE_WAITCOMP |
+ MOVE_SRC_MATH0 | MOVE_DEST_MATH0 | 8);
+#endif
/* update Len field */
append_math_sub(desc, REG0, REG0, REG2, 8);
@@ -933,9 +937,15 @@ static int tls_set_sh_desc(struct crypto_aead *aead)
* SEQ OUT PTR command, Output Pointer (2 words) and
* Output Length into math registers.
*/
+#ifdef __LITTLE_ENDIAN
+ append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF |
+ MOVE_DEST_MATH0 | (55 * 4 << MOVE_OFFSET_SHIFT) |
+ 20);
+#else
append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF |
MOVE_DEST_MATH0 | (54 * 4 << MOVE_OFFSET_SHIFT) |
20);
+#endif
/* Transform SEQ OUT PTR command in SEQ IN PTR command */
append_math_and_imm_u32(desc, REG0, REG0, IMM,
~(CMD_SEQ_IN_PTR ^ CMD_SEQ_OUT_PTR));
@@ -946,9 +956,15 @@ static int tls_set_sh_desc(struct crypto_aead *aead)
(4 << LDST_OFFSET_SHIFT));
append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 1);
/* Move the updated fields back to the Job Descriptor */
+#ifdef __LITTLE_ENDIAN
+ append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 |
+ MOVE_DEST_DESCBUF | (55 * 4 << MOVE_OFFSET_SHIFT) |
+ 24);
+#else
append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 |
MOVE_DEST_DESCBUF | (54 * 4 << MOVE_OFFSET_SHIFT) |
24);
+#endif
/*
* Read the new SEQ IN PTR command, Input Pointer, Input Length
* and then jump back to the next command from the
@@ -960,9 +976,15 @@ static int tls_set_sh_desc(struct crypto_aead *aead)
* Move the SEQ OUT PTR command, Output Pointer (1 word) and
* Output Length into math registers.
*/
+#ifdef __LITTLE_ENDIAN
+ append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF |
+ MOVE_DEST_MATH0 | (54 * 4 << MOVE_OFFSET_SHIFT) |
+ 12);
+#else
append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF |
MOVE_DEST_MATH0 | (53 * 4 << MOVE_OFFSET_SHIFT) |
12);
+#endif
/* Transform SEQ OUT PTR command in SEQ IN PTR command */
append_math_and_imm_u64(desc, REG0, REG0, IMM,
~(((u64)(CMD_SEQ_IN_PTR ^ CMD_SEQ_OUT_PTR)) << 32));
@@ -973,9 +995,15 @@ static int tls_set_sh_desc(struct crypto_aead *aead)
(4 << LDST_OFFSET_SHIFT));
append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 1);
/* Move the updated fields back to the Job Descriptor */
+#ifdef __LITTLE_ENDIAN
+ append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 |
+ MOVE_DEST_DESCBUF | (54 * 4 << MOVE_OFFSET_SHIFT) |
+ 16);
+#else
append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 |
MOVE_DEST_DESCBUF | (53 * 4 << MOVE_OFFSET_SHIFT) |
16);
+#endif
/*
* Read the new SEQ IN PTR command, Input Pointer, Input Length
* and then jump back to the next command from the