Lines Matching refs:desc
131 static inline void append_dec_op1(u32 *desc, u32 type) in append_dec_op1() argument
137 append_operation(desc, type | OP_ALG_AS_INITFINAL | in append_dec_op1()
142 jump_cmd = append_jump(desc, JUMP_TEST_ALL | JUMP_COND_SHRD); in append_dec_op1()
143 append_operation(desc, type | OP_ALG_AS_INITFINAL | in append_dec_op1()
145 uncond_jump_cmd = append_jump(desc, JUMP_TEST_ALL); in append_dec_op1()
146 set_jump_tgt_here(desc, jump_cmd); in append_dec_op1()
147 append_operation(desc, type | OP_ALG_AS_INITFINAL | in append_dec_op1()
149 set_jump_tgt_here(desc, uncond_jump_cmd); in append_dec_op1()
156 static inline void aead_append_src_dst(u32 *desc, u32 msg_type) in aead_append_src_dst() argument
158 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | KEY_VLF); in aead_append_src_dst()
159 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_BOTH | in aead_append_src_dst()
167 static inline void ablkcipher_append_src_dst(u32 *desc) in ablkcipher_append_src_dst() argument
169 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in ablkcipher_append_src_dst()
170 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in ablkcipher_append_src_dst()
171 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | in ablkcipher_append_src_dst()
173 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | KEY_VLF); in ablkcipher_append_src_dst()
198 static void append_key_aead(u32 *desc, struct caam_ctx *ctx, in append_key_aead() argument
213 append_key_as_imm(desc, ctx->key, ctx->split_key_pad_len, in append_key_aead()
216 append_key_as_imm(desc, (void *)ctx->key + in append_key_aead()
220 append_key(desc, ctx->key_dma, ctx->split_key_len, CLASS_2 | in append_key_aead()
222 append_key(desc, ctx->key_dma + ctx->split_key_pad_len, in append_key_aead()
230 append_load_imm_u32(desc, *nonce, LDST_CLASS_IND_CCB | in append_key_aead()
232 append_move(desc, in append_key_aead()
240 static void init_sh_desc_key_aead(u32 *desc, struct caam_ctx *ctx, in init_sh_desc_key_aead() argument
246 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in init_sh_desc_key_aead()
249 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in init_sh_desc_key_aead()
252 append_key_aead(desc, ctx, keys_fit_inline, is_rfc3686); in init_sh_desc_key_aead()
254 set_jump_tgt_here(desc, key_jump_cmd); in init_sh_desc_key_aead()
263 u32 *desc; in aead_null_set_sh_desc() local
274 desc = ctx->sh_desc_enc; in aead_null_set_sh_desc()
276 init_sh_desc(desc, HDR_SHARE_SERIAL); in aead_null_set_sh_desc()
279 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in aead_null_set_sh_desc()
282 append_key_as_imm(desc, ctx->key, ctx->split_key_pad_len, in aead_null_set_sh_desc()
286 append_key(desc, ctx->key_dma, ctx->split_key_len, CLASS_2 | in aead_null_set_sh_desc()
288 set_jump_tgt_here(desc, key_jump_cmd); in aead_null_set_sh_desc()
291 append_math_sub(desc, REG3, SEQINLEN, REG0, CAAM_CMD_SZ); in aead_null_set_sh_desc()
294 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in aead_null_set_sh_desc()
295 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in aead_null_set_sh_desc()
302 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | in aead_null_set_sh_desc()
305 write_move_cmd = append_move(desc, MOVE_SRC_MATH3 | in aead_null_set_sh_desc()
311 append_operation(desc, ctx->class2_alg_type | in aead_null_set_sh_desc()
315 aead_append_src_dst(desc, FIFOLD_TYPE_MSG | FIFOLD_TYPE_FLUSH1); in aead_null_set_sh_desc()
317 set_move_tgt_here(desc, read_move_cmd); in aead_null_set_sh_desc()
318 set_move_tgt_here(desc, write_move_cmd); in aead_null_set_sh_desc()
319 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in aead_null_set_sh_desc()
320 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO | in aead_null_set_sh_desc()
324 append_seq_store(desc, ctx->authsize, LDST_CLASS_2_CCB | in aead_null_set_sh_desc()
327 ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, in aead_null_set_sh_desc()
328 desc_bytes(desc), in aead_null_set_sh_desc()
337 DUMP_PREFIX_ADDRESS, 16, 4, desc, in aead_null_set_sh_desc()
338 desc_bytes(desc), 1); in aead_null_set_sh_desc()
350 desc = ctx->sh_desc_dec; in aead_null_set_sh_desc()
353 init_sh_desc(desc, HDR_SHARE_SERIAL); in aead_null_set_sh_desc()
356 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in aead_null_set_sh_desc()
359 append_key_as_imm(desc, ctx->key, ctx->split_key_pad_len, in aead_null_set_sh_desc()
363 append_key(desc, ctx->key_dma, ctx->split_key_len, CLASS_2 | in aead_null_set_sh_desc()
365 set_jump_tgt_here(desc, key_jump_cmd); in aead_null_set_sh_desc()
368 append_operation(desc, ctx->class2_alg_type | in aead_null_set_sh_desc()
372 append_math_sub(desc, REG2, SEQOUTLEN, REG0, CAAM_CMD_SZ); in aead_null_set_sh_desc()
375 append_math_add(desc, VARSEQINLEN, ZERO, REG2, CAAM_CMD_SZ); in aead_null_set_sh_desc()
376 append_math_add(desc, VARSEQOUTLEN, ZERO, REG2, CAAM_CMD_SZ); in aead_null_set_sh_desc()
383 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | in aead_null_set_sh_desc()
386 write_move_cmd = append_move(desc, MOVE_SRC_MATH2 | in aead_null_set_sh_desc()
392 aead_append_src_dst(desc, FIFOLD_TYPE_MSG | FIFOLD_TYPE_FLUSH1); in aead_null_set_sh_desc()
398 jump_cmd = append_jump(desc, JUMP_TEST_ALL); in aead_null_set_sh_desc()
399 set_jump_tgt_here(desc, jump_cmd); in aead_null_set_sh_desc()
401 set_move_tgt_here(desc, read_move_cmd); in aead_null_set_sh_desc()
402 set_move_tgt_here(desc, write_move_cmd); in aead_null_set_sh_desc()
403 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in aead_null_set_sh_desc()
404 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO | in aead_null_set_sh_desc()
406 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO); in aead_null_set_sh_desc()
409 append_seq_fifo_load(desc, ctx->authsize, FIFOLD_CLASS_CLASS2 | in aead_null_set_sh_desc()
412 ctx->sh_desc_dec_dma = dma_map_single(jrdev, desc, in aead_null_set_sh_desc()
413 desc_bytes(desc), in aead_null_set_sh_desc()
422 DUMP_PREFIX_ADDRESS, 16, 4, desc, in aead_null_set_sh_desc()
423 desc_bytes(desc), 1); in aead_null_set_sh_desc()
439 u32 *desc; in aead_set_sh_desc() local
478 desc = ctx->sh_desc_enc; in aead_set_sh_desc()
481 init_sh_desc_key_aead(desc, ctx, keys_fit_inline, is_rfc3686); in aead_set_sh_desc()
484 append_operation(desc, ctx->class2_alg_type | in aead_set_sh_desc()
488 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in aead_set_sh_desc()
489 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in aead_set_sh_desc()
492 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in aead_set_sh_desc()
495 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS2 | FIFOLD_TYPE_MSG | in aead_set_sh_desc()
500 append_load_imm_u32(desc, be32_to_cpu(1), LDST_IMM | in aead_set_sh_desc()
507 append_operation(desc, ctx->class1_alg_type | in aead_set_sh_desc()
511 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in aead_set_sh_desc()
512 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in aead_set_sh_desc()
513 aead_append_src_dst(desc, FIFOLD_TYPE_MSG1OUT2); in aead_set_sh_desc()
516 append_seq_store(desc, ctx->authsize, LDST_CLASS_2_CCB | in aead_set_sh_desc()
519 ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, in aead_set_sh_desc()
520 desc_bytes(desc), in aead_set_sh_desc()
528 DUMP_PREFIX_ADDRESS, 16, 4, desc, in aead_set_sh_desc()
529 desc_bytes(desc), 1); in aead_set_sh_desc()
545 desc = ctx->sh_desc_dec; in aead_set_sh_desc()
548 init_sh_desc_key_aead(desc, ctx, keys_fit_inline, is_rfc3686); in aead_set_sh_desc()
551 append_operation(desc, ctx->class2_alg_type | in aead_set_sh_desc()
555 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in aead_set_sh_desc()
556 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in aead_set_sh_desc()
559 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in aead_set_sh_desc()
562 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS2 | FIFOLD_TYPE_MSG | in aead_set_sh_desc()
567 append_load_imm_u32(desc, be32_to_cpu(1), LDST_IMM | in aead_set_sh_desc()
575 append_operation(desc, ctx->class1_alg_type | in aead_set_sh_desc()
578 append_dec_op1(desc, ctx->class1_alg_type); in aead_set_sh_desc()
581 append_math_add(desc, VARSEQINLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in aead_set_sh_desc()
582 append_math_add(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in aead_set_sh_desc()
583 aead_append_src_dst(desc, FIFOLD_TYPE_MSG); in aead_set_sh_desc()
586 append_seq_fifo_load(desc, ctx->authsize, FIFOLD_CLASS_CLASS2 | in aead_set_sh_desc()
589 ctx->sh_desc_dec_dma = dma_map_single(jrdev, desc, in aead_set_sh_desc()
590 desc_bytes(desc), in aead_set_sh_desc()
598 DUMP_PREFIX_ADDRESS, 16, 4, desc, in aead_set_sh_desc()
599 desc_bytes(desc), 1); in aead_set_sh_desc()
617 desc = ctx->sh_desc_givenc; in aead_set_sh_desc()
620 init_sh_desc_key_aead(desc, ctx, keys_fit_inline, is_rfc3686); in aead_set_sh_desc()
629 append_load_imm_u32(desc, geniv, LDST_CLASS_IND_CCB | in aead_set_sh_desc()
631 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in aead_set_sh_desc()
632 append_move(desc, MOVE_WAITCOMP | in aead_set_sh_desc()
636 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO); in aead_set_sh_desc()
640 append_move(desc, MOVE_SRC_CLASS1CTX | MOVE_DEST_OUTFIFO | in aead_set_sh_desc()
645 append_operation(desc, ctx->class2_alg_type | in aead_set_sh_desc()
649 append_math_sub_imm_u32(desc, REG3, SEQOUTLEN, IMM, ctx->authsize); in aead_set_sh_desc()
652 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in aead_set_sh_desc()
653 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in aead_set_sh_desc()
656 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in aead_set_sh_desc()
659 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS2 | FIFOLD_TYPE_MSG | in aead_set_sh_desc()
665 append_load_imm_u32(desc, moveiv, LDST_CLASS_IND_CCB | in aead_set_sh_desc()
667 append_load_imm_u32(desc, ivsize, LDST_CLASS_2_CCB | in aead_set_sh_desc()
672 append_load_imm_u32(desc, be32_to_cpu(1), LDST_IMM | in aead_set_sh_desc()
679 append_operation(desc, ctx->class1_alg_type | in aead_set_sh_desc()
683 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in aead_set_sh_desc()
686 append_seq_fifo_load(desc, ivsize, in aead_set_sh_desc()
690 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in aead_set_sh_desc()
691 aead_append_src_dst(desc, FIFOLD_TYPE_MSG1OUT2); in aead_set_sh_desc()
694 append_seq_store(desc, ctx->authsize, LDST_CLASS_2_CCB | in aead_set_sh_desc()
697 ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, in aead_set_sh_desc()
698 desc_bytes(desc), in aead_set_sh_desc()
706 DUMP_PREFIX_ADDRESS, 16, 4, desc, in aead_set_sh_desc()
707 desc_bytes(desc), 1); in aead_set_sh_desc()
732 u32 *desc; in gcm_set_sh_desc() local
746 desc = ctx->sh_desc_enc; in gcm_set_sh_desc()
748 init_sh_desc(desc, HDR_SHARE_SERIAL); in gcm_set_sh_desc()
751 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in gcm_set_sh_desc()
754 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in gcm_set_sh_desc()
757 append_key(desc, ctx->key_dma, ctx->enckeylen, in gcm_set_sh_desc()
759 set_jump_tgt_here(desc, key_jump_cmd); in gcm_set_sh_desc()
762 append_operation(desc, ctx->class1_alg_type | in gcm_set_sh_desc()
766 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in gcm_set_sh_desc()
767 zero_assoc_jump_cmd2 = append_jump(desc, JUMP_TEST_ALL | in gcm_set_sh_desc()
771 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in gcm_set_sh_desc()
772 zero_assoc_jump_cmd1 = append_jump(desc, JUMP_TEST_ALL | in gcm_set_sh_desc()
775 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in gcm_set_sh_desc()
778 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in gcm_set_sh_desc()
781 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG3, CAAM_CMD_SZ); in gcm_set_sh_desc()
784 zero_payload_jump_cmd = append_jump(desc, JUMP_TEST_ALL | in gcm_set_sh_desc()
788 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in gcm_set_sh_desc()
790 set_jump_tgt_here(desc, zero_assoc_jump_cmd1); in gcm_set_sh_desc()
792 append_math_sub(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in gcm_set_sh_desc()
795 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in gcm_set_sh_desc()
798 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in gcm_set_sh_desc()
802 append_jump(desc, JUMP_TEST_ALL | 2); in gcm_set_sh_desc()
805 set_jump_tgt_here(desc, zero_payload_jump_cmd); in gcm_set_sh_desc()
808 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in gcm_set_sh_desc()
812 set_jump_tgt_here(desc, zero_assoc_jump_cmd2); in gcm_set_sh_desc()
815 append_seq_store(desc, ctx->authsize, LDST_CLASS_1_CCB | in gcm_set_sh_desc()
818 ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, in gcm_set_sh_desc()
819 desc_bytes(desc), in gcm_set_sh_desc()
827 DUMP_PREFIX_ADDRESS, 16, 4, desc, in gcm_set_sh_desc()
828 desc_bytes(desc), 1); in gcm_set_sh_desc()
840 desc = ctx->sh_desc_dec; in gcm_set_sh_desc()
842 init_sh_desc(desc, HDR_SHARE_SERIAL); in gcm_set_sh_desc()
845 key_jump_cmd = append_jump(desc, JUMP_JSL | in gcm_set_sh_desc()
849 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in gcm_set_sh_desc()
852 append_key(desc, ctx->key_dma, ctx->enckeylen, in gcm_set_sh_desc()
854 set_jump_tgt_here(desc, key_jump_cmd); in gcm_set_sh_desc()
857 append_operation(desc, ctx->class1_alg_type | in gcm_set_sh_desc()
861 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in gcm_set_sh_desc()
862 zero_assoc_jump_cmd1 = append_jump(desc, JUMP_TEST_ALL | in gcm_set_sh_desc()
865 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in gcm_set_sh_desc()
868 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in gcm_set_sh_desc()
871 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in gcm_set_sh_desc()
874 set_jump_tgt_here(desc, zero_assoc_jump_cmd1); in gcm_set_sh_desc()
877 append_math_sub(desc, VARSEQINLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in gcm_set_sh_desc()
880 zero_payload_jump_cmd = append_jump(desc, JUMP_TEST_ALL | in gcm_set_sh_desc()
883 append_math_sub(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in gcm_set_sh_desc()
886 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in gcm_set_sh_desc()
889 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in gcm_set_sh_desc()
893 set_jump_tgt_here(desc, zero_payload_jump_cmd); in gcm_set_sh_desc()
896 append_seq_fifo_load(desc, ctx->authsize, FIFOLD_CLASS_CLASS1 | in gcm_set_sh_desc()
899 ctx->sh_desc_dec_dma = dma_map_single(jrdev, desc, in gcm_set_sh_desc()
900 desc_bytes(desc), in gcm_set_sh_desc()
908 DUMP_PREFIX_ADDRESS, 16, 4, desc, in gcm_set_sh_desc()
909 desc_bytes(desc), 1); in gcm_set_sh_desc()
931 u32 *desc; in rfc4106_set_sh_desc() local
945 desc = ctx->sh_desc_enc; in rfc4106_set_sh_desc()
947 init_sh_desc(desc, HDR_SHARE_SERIAL); in rfc4106_set_sh_desc()
950 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in rfc4106_set_sh_desc()
953 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in rfc4106_set_sh_desc()
956 append_key(desc, ctx->key_dma, ctx->enckeylen, in rfc4106_set_sh_desc()
958 set_jump_tgt_here(desc, key_jump_cmd); in rfc4106_set_sh_desc()
961 append_operation(desc, ctx->class1_alg_type | in rfc4106_set_sh_desc()
964 append_math_sub_imm_u32(desc, VARSEQINLEN, REG3, IMM, 8); in rfc4106_set_sh_desc()
965 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in rfc4106_set_sh_desc()
968 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in rfc4106_set_sh_desc()
972 append_seq_fifo_load(desc, 8, FIFOLD_CLASS_SKIP); in rfc4106_set_sh_desc()
975 append_math_sub(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in rfc4106_set_sh_desc()
978 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLD_TYPE_MSG); in rfc4106_set_sh_desc()
981 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in rfc4106_set_sh_desc()
984 append_math_sub(desc, VARSEQOUTLEN, VARSEQINLEN, REG0, CAAM_CMD_SZ); in rfc4106_set_sh_desc()
987 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in rfc4106_set_sh_desc()
990 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in rfc4106_set_sh_desc()
994 append_seq_store(desc, ctx->authsize, LDST_CLASS_1_CCB | in rfc4106_set_sh_desc()
997 ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, in rfc4106_set_sh_desc()
998 desc_bytes(desc), in rfc4106_set_sh_desc()
1006 DUMP_PREFIX_ADDRESS, 16, 4, desc, in rfc4106_set_sh_desc()
1007 desc_bytes(desc), 1); in rfc4106_set_sh_desc()
1019 desc = ctx->sh_desc_dec; in rfc4106_set_sh_desc()
1021 init_sh_desc(desc, HDR_SHARE_SERIAL); in rfc4106_set_sh_desc()
1024 key_jump_cmd = append_jump(desc, JUMP_JSL | in rfc4106_set_sh_desc()
1027 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in rfc4106_set_sh_desc()
1030 append_key(desc, ctx->key_dma, ctx->enckeylen, in rfc4106_set_sh_desc()
1032 set_jump_tgt_here(desc, key_jump_cmd); in rfc4106_set_sh_desc()
1035 append_operation(desc, ctx->class1_alg_type | in rfc4106_set_sh_desc()
1038 append_math_sub_imm_u32(desc, VARSEQINLEN, REG3, IMM, 8); in rfc4106_set_sh_desc()
1039 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in rfc4106_set_sh_desc()
1042 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in rfc4106_set_sh_desc()
1046 append_seq_fifo_load(desc, 8, FIFOLD_CLASS_SKIP); in rfc4106_set_sh_desc()
1049 append_math_sub(desc, VARSEQINLEN, SEQOUTLEN, REG3, CAAM_CMD_SZ); in rfc4106_set_sh_desc()
1052 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLD_TYPE_MSG); in rfc4106_set_sh_desc()
1055 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in rfc4106_set_sh_desc()
1058 append_math_sub(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in rfc4106_set_sh_desc()
1061 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in rfc4106_set_sh_desc()
1064 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in rfc4106_set_sh_desc()
1068 append_seq_fifo_load(desc, ctx->authsize, FIFOLD_CLASS_CLASS1 | in rfc4106_set_sh_desc()
1071 ctx->sh_desc_dec_dma = dma_map_single(jrdev, desc, in rfc4106_set_sh_desc()
1072 desc_bytes(desc), in rfc4106_set_sh_desc()
1080 DUMP_PREFIX_ADDRESS, 16, 4, desc, in rfc4106_set_sh_desc()
1081 desc_bytes(desc), 1); in rfc4106_set_sh_desc()
1105 u32 *desc; in rfc4543_set_sh_desc() local
1119 desc = ctx->sh_desc_enc; in rfc4543_set_sh_desc()
1121 init_sh_desc(desc, HDR_SHARE_SERIAL); in rfc4543_set_sh_desc()
1124 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in rfc4543_set_sh_desc()
1127 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in rfc4543_set_sh_desc()
1130 append_key(desc, ctx->key_dma, ctx->enckeylen, in rfc4543_set_sh_desc()
1132 set_jump_tgt_here(desc, key_jump_cmd); in rfc4543_set_sh_desc()
1135 append_operation(desc, ctx->class1_alg_type | in rfc4543_set_sh_desc()
1139 append_math_sub(desc, REG3, SEQINLEN, REG0, CAAM_CMD_SZ); in rfc4543_set_sh_desc()
1146 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | MOVE_DEST_MATH3 | in rfc4543_set_sh_desc()
1148 write_move_cmd = append_move(desc, MOVE_SRC_MATH3 | MOVE_DEST_DESCBUF | in rfc4543_set_sh_desc()
1152 append_math_sub(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in rfc4543_set_sh_desc()
1155 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in rfc4543_set_sh_desc()
1158 aead_append_src_dst(desc, FIFOLD_TYPE_AAD); in rfc4543_set_sh_desc()
1160 set_move_tgt_here(desc, read_move_cmd); in rfc4543_set_sh_desc()
1161 set_move_tgt_here(desc, write_move_cmd); in rfc4543_set_sh_desc()
1162 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in rfc4543_set_sh_desc()
1164 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO); in rfc4543_set_sh_desc()
1167 append_seq_store(desc, ctx->authsize, LDST_CLASS_1_CCB | in rfc4543_set_sh_desc()
1170 ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, in rfc4543_set_sh_desc()
1171 desc_bytes(desc), in rfc4543_set_sh_desc()
1179 DUMP_PREFIX_ADDRESS, 16, 4, desc, in rfc4543_set_sh_desc()
1180 desc_bytes(desc), 1); in rfc4543_set_sh_desc()
1192 desc = ctx->sh_desc_dec; in rfc4543_set_sh_desc()
1194 init_sh_desc(desc, HDR_SHARE_SERIAL); in rfc4543_set_sh_desc()
1197 key_jump_cmd = append_jump(desc, JUMP_JSL | in rfc4543_set_sh_desc()
1200 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in rfc4543_set_sh_desc()
1203 append_key(desc, ctx->key_dma, ctx->enckeylen, in rfc4543_set_sh_desc()
1205 set_jump_tgt_here(desc, key_jump_cmd); in rfc4543_set_sh_desc()
1208 append_operation(desc, ctx->class1_alg_type | in rfc4543_set_sh_desc()
1212 append_math_sub(desc, REG3, SEQOUTLEN, REG0, CAAM_CMD_SZ); in rfc4543_set_sh_desc()
1219 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | MOVE_DEST_MATH3 | in rfc4543_set_sh_desc()
1221 write_move_cmd = append_move(desc, MOVE_SRC_MATH3 | MOVE_DEST_DESCBUF | in rfc4543_set_sh_desc()
1225 append_math_sub(desc, VARSEQINLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in rfc4543_set_sh_desc()
1228 append_math_sub(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in rfc4543_set_sh_desc()
1231 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in rfc4543_set_sh_desc()
1234 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_BOTH | FIFOLDST_VLF | in rfc4543_set_sh_desc()
1237 set_move_tgt_here(desc, read_move_cmd); in rfc4543_set_sh_desc()
1238 set_move_tgt_here(desc, write_move_cmd); in rfc4543_set_sh_desc()
1239 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in rfc4543_set_sh_desc()
1241 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO); in rfc4543_set_sh_desc()
1242 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO); in rfc4543_set_sh_desc()
1245 append_seq_fifo_load(desc, ctx->authsize, FIFOLD_CLASS_CLASS1 | in rfc4543_set_sh_desc()
1248 ctx->sh_desc_dec_dma = dma_map_single(jrdev, desc, in rfc4543_set_sh_desc()
1249 desc_bytes(desc), in rfc4543_set_sh_desc()
1257 DUMP_PREFIX_ADDRESS, 16, 4, desc, in rfc4543_set_sh_desc()
1258 desc_bytes(desc), 1); in rfc4543_set_sh_desc()
1466 u32 *desc; in ablkcipher_setkey() local
1507 desc = ctx->sh_desc_enc; in ablkcipher_setkey()
1508 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in ablkcipher_setkey()
1510 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in ablkcipher_setkey()
1514 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in ablkcipher_setkey()
1521 append_load_imm_u32(desc, *nonce, LDST_CLASS_IND_CCB | in ablkcipher_setkey()
1523 append_move(desc, MOVE_WAITCOMP | in ablkcipher_setkey()
1530 set_jump_tgt_here(desc, key_jump_cmd); in ablkcipher_setkey()
1533 append_seq_load(desc, crt->ivsize, LDST_SRCDST_BYTE_CONTEXT | in ablkcipher_setkey()
1538 append_load_imm_u32(desc, be32_to_cpu(1), LDST_IMM | in ablkcipher_setkey()
1545 append_operation(desc, ctx->class1_alg_type | in ablkcipher_setkey()
1549 ablkcipher_append_src_dst(desc); in ablkcipher_setkey()
1551 ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, in ablkcipher_setkey()
1552 desc_bytes(desc), in ablkcipher_setkey()
1561 DUMP_PREFIX_ADDRESS, 16, 4, desc, in ablkcipher_setkey()
1562 desc_bytes(desc), 1); in ablkcipher_setkey()
1565 desc = ctx->sh_desc_dec; in ablkcipher_setkey()
1567 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in ablkcipher_setkey()
1569 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in ablkcipher_setkey()
1573 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in ablkcipher_setkey()
1580 append_load_imm_u32(desc, *nonce, LDST_CLASS_IND_CCB | in ablkcipher_setkey()
1582 append_move(desc, MOVE_WAITCOMP | in ablkcipher_setkey()
1589 set_jump_tgt_here(desc, key_jump_cmd); in ablkcipher_setkey()
1592 append_seq_load(desc, crt->ivsize, LDST_SRCDST_BYTE_CONTEXT | in ablkcipher_setkey()
1597 append_load_imm_u32(desc, be32_to_cpu(1), LDST_IMM | in ablkcipher_setkey()
1605 append_operation(desc, ctx->class1_alg_type | in ablkcipher_setkey()
1608 append_dec_op1(desc, ctx->class1_alg_type); in ablkcipher_setkey()
1611 ablkcipher_append_src_dst(desc); in ablkcipher_setkey()
1613 ctx->sh_desc_dec_dma = dma_map_single(jrdev, desc, in ablkcipher_setkey()
1614 desc_bytes(desc), in ablkcipher_setkey()
1624 DUMP_PREFIX_ADDRESS, 16, 4, desc, in ablkcipher_setkey()
1625 desc_bytes(desc), 1); in ablkcipher_setkey()
1628 desc = ctx->sh_desc_givenc; in ablkcipher_setkey()
1630 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in ablkcipher_setkey()
1632 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in ablkcipher_setkey()
1636 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in ablkcipher_setkey()
1643 append_load_imm_u32(desc, *nonce, LDST_CLASS_IND_CCB | in ablkcipher_setkey()
1645 append_move(desc, MOVE_WAITCOMP | in ablkcipher_setkey()
1651 set_jump_tgt_here(desc, key_jump_cmd); in ablkcipher_setkey()
1657 append_load_imm_u32(desc, geniv, LDST_CLASS_IND_CCB | in ablkcipher_setkey()
1659 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in ablkcipher_setkey()
1660 append_move(desc, MOVE_WAITCOMP | in ablkcipher_setkey()
1665 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO); in ablkcipher_setkey()
1668 append_seq_store(desc, crt->ivsize, in ablkcipher_setkey()
1674 append_load_imm_u32(desc, (u32)1, LDST_IMM | in ablkcipher_setkey()
1681 append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | JUMP_COND_NCP | in ablkcipher_setkey()
1685 append_operation(desc, ctx->class1_alg_type | in ablkcipher_setkey()
1689 ablkcipher_append_src_dst(desc); in ablkcipher_setkey()
1691 ctx->sh_desc_givenc_dma = dma_map_single(jrdev, desc, in ablkcipher_setkey()
1692 desc_bytes(desc), in ablkcipher_setkey()
1701 DUMP_PREFIX_ADDRESS, 16, 4, desc, in ablkcipher_setkey()
1702 desc_bytes(desc), 1); in ablkcipher_setkey()
1713 u32 *key_jump_cmd, *desc; in xts_ablkcipher_setkey() local
1732 desc = ctx->sh_desc_enc; in xts_ablkcipher_setkey()
1733 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in xts_ablkcipher_setkey()
1735 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in xts_ablkcipher_setkey()
1739 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in xts_ablkcipher_setkey()
1743 append_cmd(desc, CMD_LOAD | IMMEDIATE | LDST_SRCDST_BYTE_CONTEXT | in xts_ablkcipher_setkey()
1745 append_data(desc, (void *)§or_size, 8); in xts_ablkcipher_setkey()
1747 set_jump_tgt_here(desc, key_jump_cmd); in xts_ablkcipher_setkey()
1754 append_cmd(desc, CMD_SEQ_LOAD | LDST_SRCDST_BYTE_CONTEXT | in xts_ablkcipher_setkey()
1756 append_seq_fifo_load(desc, 8, FIFOLD_CLASS_SKIP); in xts_ablkcipher_setkey()
1759 append_operation(desc, ctx->class1_alg_type | OP_ALG_AS_INITFINAL | in xts_ablkcipher_setkey()
1763 ablkcipher_append_src_dst(desc); in xts_ablkcipher_setkey()
1765 ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, desc_bytes(desc), in xts_ablkcipher_setkey()
1774 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in xts_ablkcipher_setkey()
1778 desc = ctx->sh_desc_dec; in xts_ablkcipher_setkey()
1780 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in xts_ablkcipher_setkey()
1782 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in xts_ablkcipher_setkey()
1786 append_key_as_imm(desc, (void *)ctx->key, ctx->enckeylen, in xts_ablkcipher_setkey()
1790 append_cmd(desc, CMD_LOAD | IMMEDIATE | LDST_SRCDST_BYTE_CONTEXT | in xts_ablkcipher_setkey()
1792 append_data(desc, (void *)§or_size, 8); in xts_ablkcipher_setkey()
1794 set_jump_tgt_here(desc, key_jump_cmd); in xts_ablkcipher_setkey()
1801 append_cmd(desc, CMD_SEQ_LOAD | LDST_SRCDST_BYTE_CONTEXT | in xts_ablkcipher_setkey()
1803 append_seq_fifo_load(desc, 8, FIFOLD_CLASS_SKIP); in xts_ablkcipher_setkey()
1806 append_dec_op1(desc, ctx->class1_alg_type); in xts_ablkcipher_setkey()
1809 ablkcipher_append_src_dst(desc); in xts_ablkcipher_setkey()
1811 ctx->sh_desc_dec_dma = dma_map_single(jrdev, desc, desc_bytes(desc), in xts_ablkcipher_setkey()
1822 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in xts_ablkcipher_setkey()
1912 static void aead_encrypt_done(struct device *jrdev, u32 *desc, u32 err, in aead_encrypt_done() argument
1922 edesc = container_of(desc, struct aead_edesc, hw_desc[0]); in aead_encrypt_done()
1934 static void aead_decrypt_done(struct device *jrdev, u32 *desc, u32 err, in aead_decrypt_done() argument
1944 edesc = container_of(desc, struct aead_edesc, hw_desc[0]); in aead_decrypt_done()
1962 static void ablkcipher_encrypt_done(struct device *jrdev, u32 *desc, u32 err, in ablkcipher_encrypt_done() argument
1974 edesc = (struct ablkcipher_edesc *)((char *)desc - in ablkcipher_encrypt_done()
1995 static void ablkcipher_decrypt_done(struct device *jrdev, u32 *desc, u32 err, in ablkcipher_decrypt_done() argument
2007 edesc = (struct ablkcipher_edesc *)((char *)desc - in ablkcipher_decrypt_done()
2037 u32 *desc = edesc->hw_desc; in init_aead_job() local
2048 init_job_desc_shared(desc, ptr, len, HDR_SHARE_DEFER | HDR_REVERSE); in init_aead_job()
2059 append_seq_in_ptr(desc, src_dma, req->assoclen + req->cryptlen, in init_aead_job()
2077 append_seq_out_ptr(desc, dst_dma, in init_aead_job()
2081 append_seq_out_ptr(desc, dst_dma, in init_aead_job()
2086 append_math_add_imm_u32(desc, REG3, ZERO, IMM, req->assoclen); in init_aead_job()
2096 u32 *desc = edesc->hw_desc; in init_gcm_job() local
2108 append_cmd(desc, CMD_FIFO_LOAD | FIFOLD_CLASS_CLASS1 | IMMEDIATE | in init_gcm_job()
2112 append_data(desc, ctx->key + ctx->enckeylen, 4); in init_gcm_job()
2114 append_data(desc, req->iv, ivsize); in init_gcm_job()
2130 u32 *desc = edesc->hw_desc; in init_authenc_job() local
2151 append_load_as_imm(desc, req->iv, ivsize, in init_authenc_job()
2167 u32 *desc = edesc->hw_desc; in init_ablkcipher_job() local
2182 init_job_desc_shared(desc, ptr, len, HDR_SHARE_DEFER | HDR_REVERSE); in init_ablkcipher_job()
2192 append_seq_in_ptr(desc, src_dma, req->nbytes + ivsize, in_options); in init_ablkcipher_job()
2211 append_seq_out_ptr(desc, dst_dma, req->nbytes, out_options); in init_ablkcipher_job()
2224 u32 *desc = edesc->hw_desc; in init_ablkcipher_giv_job() local
2239 init_job_desc_shared(desc, ptr, len, HDR_SHARE_DEFER | HDR_REVERSE); in init_ablkcipher_giv_job()
2249 append_seq_in_ptr(desc, src_dma, req->nbytes, in_options); in init_ablkcipher_giv_job()
2259 append_seq_out_ptr(desc, dst_dma, req->nbytes + ivsize, out_options); in init_ablkcipher_giv_job()
2380 u32 *desc; in gcm_encrypt() local
2396 desc = edesc->hw_desc; in gcm_encrypt()
2397 ret = caam_jr_enqueue(jrdev, desc, aead_encrypt_done, req); in gcm_encrypt()
2423 u32 *desc; in aead_encrypt() local
2440 desc = edesc->hw_desc; in aead_encrypt()
2441 ret = caam_jr_enqueue(jrdev, desc, aead_encrypt_done, req); in aead_encrypt()
2459 u32 *desc; in gcm_decrypt() local
2475 desc = edesc->hw_desc; in gcm_decrypt()
2476 ret = caam_jr_enqueue(jrdev, desc, aead_decrypt_done, req); in gcm_decrypt()
2502 u32 *desc; in aead_decrypt() local
2525 desc = edesc->hw_desc; in aead_decrypt()
2526 ret = caam_jr_enqueue(jrdev, desc, aead_decrypt_done, req); in aead_decrypt()
2657 u32 *desc; in ablkcipher_encrypt() local
2674 desc = edesc->hw_desc; in ablkcipher_encrypt()
2675 ret = caam_jr_enqueue(jrdev, desc, ablkcipher_encrypt_done, req); in ablkcipher_encrypt()
2694 u32 *desc; in ablkcipher_decrypt() local
2706 desc = edesc->hw_desc; in ablkcipher_decrypt()
2713 ret = caam_jr_enqueue(jrdev, desc, ablkcipher_decrypt_done, req); in ablkcipher_decrypt()
2835 u32 *desc; in ablkcipher_givencrypt() local
2853 desc = edesc->hw_desc; in ablkcipher_givencrypt()
2854 ret = caam_jr_enqueue(jrdev, desc, ablkcipher_encrypt_done, req); in ablkcipher_givencrypt()