Lines Matching refs:desc
255 static unsigned int xcbc_setkey(struct cc_hw_desc *desc, in xcbc_setkey() argument
259 hw_desc_init(&desc[0]); in xcbc_setkey()
264 set_din_type(&desc[0], DMA_DLLI, in xcbc_setkey()
267 set_cipher_mode(&desc[0], DRV_CIPHER_ECB); in xcbc_setkey()
268 set_cipher_config0(&desc[0], DRV_CRYPTO_DIRECTION_ENCRYPT); in xcbc_setkey()
269 set_key_size_aes(&desc[0], ctx->auth_keylen); in xcbc_setkey()
270 set_flow_mode(&desc[0], S_DIN_to_AES); in xcbc_setkey()
271 set_setup_mode(&desc[0], SETUP_LOAD_KEY0); in xcbc_setkey()
273 hw_desc_init(&desc[1]); in xcbc_setkey()
274 set_din_const(&desc[1], 0x01010101, CC_AES_128_BIT_KEY_SIZE); in xcbc_setkey()
275 set_flow_mode(&desc[1], DIN_AES_DOUT); in xcbc_setkey()
276 set_dout_dlli(&desc[1], ctx->auth_state.xcbc.xcbc_keys_dma_addr, in xcbc_setkey()
279 hw_desc_init(&desc[2]); in xcbc_setkey()
280 set_din_const(&desc[2], 0x02020202, CC_AES_128_BIT_KEY_SIZE); in xcbc_setkey()
281 set_flow_mode(&desc[2], DIN_AES_DOUT); in xcbc_setkey()
282 set_dout_dlli(&desc[2], (ctx->auth_state.xcbc.xcbc_keys_dma_addr in xcbc_setkey()
286 hw_desc_init(&desc[3]); in xcbc_setkey()
287 set_din_const(&desc[3], 0x03030303, CC_AES_128_BIT_KEY_SIZE); in xcbc_setkey()
288 set_flow_mode(&desc[3], DIN_AES_DOUT); in xcbc_setkey()
289 set_dout_dlli(&desc[3], (ctx->auth_state.xcbc.xcbc_keys_dma_addr in xcbc_setkey()
296 static int hmac_setkey(struct cc_hw_desc *desc, struct cc_aead_ctx *ctx) in hmac_setkey() argument
312 hw_desc_init(&desc[idx]); in hmac_setkey()
313 set_cipher_mode(&desc[idx], hash_mode); in hmac_setkey()
314 set_din_sram(&desc[idx], in hmac_setkey()
318 set_flow_mode(&desc[idx], S_DIN_to_HASH); in hmac_setkey()
319 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0); in hmac_setkey()
323 hw_desc_init(&desc[idx]); in hmac_setkey()
324 set_cipher_mode(&desc[idx], hash_mode); in hmac_setkey()
325 set_din_const(&desc[idx], 0, ctx->hash_len); in hmac_setkey()
326 set_flow_mode(&desc[idx], S_DIN_to_HASH); in hmac_setkey()
327 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in hmac_setkey()
331 hw_desc_init(&desc[idx]); in hmac_setkey()
332 set_xor_val(&desc[idx], hmac_pad_const[i]); in hmac_setkey()
333 set_cipher_mode(&desc[idx], hash_mode); in hmac_setkey()
334 set_flow_mode(&desc[idx], S_DIN_to_HASH); in hmac_setkey()
335 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1); in hmac_setkey()
339 hw_desc_init(&desc[idx]); in hmac_setkey()
340 set_din_type(&desc[idx], DMA_DLLI, in hmac_setkey()
343 set_cipher_mode(&desc[idx], hash_mode); in hmac_setkey()
344 set_xor_active(&desc[idx]); in hmac_setkey()
345 set_flow_mode(&desc[idx], DIN_HASH); in hmac_setkey()
349 hw_desc_init(&desc[idx]); in hmac_setkey()
350 set_cipher_mode(&desc[idx], hash_mode); in hmac_setkey()
351 set_dout_dlli(&desc[idx], in hmac_setkey()
354 set_flow_mode(&desc[idx], S_HASH_to_DOUT); in hmac_setkey()
355 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0); in hmac_setkey()
356 set_cipher_config1(&desc[idx], HASH_PADDING_DISABLED); in hmac_setkey()
427 struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ]; in cc_get_plain_hmac_key() local
460 hw_desc_init(&desc[idx]); in cc_get_plain_hmac_key()
461 set_cipher_mode(&desc[idx], hashmode); in cc_get_plain_hmac_key()
462 set_din_sram(&desc[idx], larval_addr, digestsize); in cc_get_plain_hmac_key()
463 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_get_plain_hmac_key()
464 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0); in cc_get_plain_hmac_key()
468 hw_desc_init(&desc[idx]); in cc_get_plain_hmac_key()
469 set_cipher_mode(&desc[idx], hashmode); in cc_get_plain_hmac_key()
470 set_din_const(&desc[idx], 0, ctx->hash_len); in cc_get_plain_hmac_key()
471 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED); in cc_get_plain_hmac_key()
472 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_get_plain_hmac_key()
473 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_get_plain_hmac_key()
476 hw_desc_init(&desc[idx]); in cc_get_plain_hmac_key()
477 set_din_type(&desc[idx], DMA_DLLI, in cc_get_plain_hmac_key()
479 set_flow_mode(&desc[idx], DIN_HASH); in cc_get_plain_hmac_key()
483 hw_desc_init(&desc[idx]); in cc_get_plain_hmac_key()
484 set_cipher_mode(&desc[idx], hashmode); in cc_get_plain_hmac_key()
485 set_dout_dlli(&desc[idx], padded_authkey_dma_addr, in cc_get_plain_hmac_key()
487 set_flow_mode(&desc[idx], S_HASH_to_DOUT); in cc_get_plain_hmac_key()
488 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0); in cc_get_plain_hmac_key()
489 set_cipher_config1(&desc[idx], HASH_PADDING_DISABLED); in cc_get_plain_hmac_key()
490 set_cipher_config0(&desc[idx], in cc_get_plain_hmac_key()
494 hw_desc_init(&desc[idx]); in cc_get_plain_hmac_key()
495 set_din_const(&desc[idx], 0, (blocksize - digestsize)); in cc_get_plain_hmac_key()
496 set_flow_mode(&desc[idx], BYPASS); in cc_get_plain_hmac_key()
497 set_dout_dlli(&desc[idx], (padded_authkey_dma_addr + in cc_get_plain_hmac_key()
502 hw_desc_init(&desc[idx]); in cc_get_plain_hmac_key()
503 set_din_type(&desc[idx], DMA_DLLI, key_dma_addr, in cc_get_plain_hmac_key()
505 set_flow_mode(&desc[idx], BYPASS); in cc_get_plain_hmac_key()
506 set_dout_dlli(&desc[idx], padded_authkey_dma_addr, in cc_get_plain_hmac_key()
511 hw_desc_init(&desc[idx]); in cc_get_plain_hmac_key()
512 set_din_const(&desc[idx], 0, in cc_get_plain_hmac_key()
514 set_flow_mode(&desc[idx], BYPASS); in cc_get_plain_hmac_key()
515 set_dout_dlli(&desc[idx], in cc_get_plain_hmac_key()
523 hw_desc_init(&desc[idx]); in cc_get_plain_hmac_key()
524 set_din_const(&desc[idx], 0, (blocksize - keylen)); in cc_get_plain_hmac_key()
525 set_flow_mode(&desc[idx], BYPASS); in cc_get_plain_hmac_key()
526 set_dout_dlli(&desc[idx], padded_authkey_dma_addr, in cc_get_plain_hmac_key()
531 rc = cc_send_sync_request(ctx->drvdata, &cc_req, desc, idx); in cc_get_plain_hmac_key()
548 struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ]; in cc_aead_setkey() local
615 seq_len = hmac_setkey(desc, ctx); in cc_aead_setkey()
618 seq_len = xcbc_setkey(desc, ctx); in cc_aead_setkey()
631 rc = cc_send_sync_request(ctx->drvdata, &cc_req, desc, seq_len); in cc_aead_setkey()
732 struct cc_hw_desc desc[], unsigned int *seq_size) in cc_set_assoc_desc() argument
744 hw_desc_init(&desc[idx]); in cc_set_assoc_desc()
745 set_din_type(&desc[idx], DMA_DLLI, sg_dma_address(areq->src), in cc_set_assoc_desc()
747 set_flow_mode(&desc[idx], flow_mode); in cc_set_assoc_desc()
750 set_din_not_last_indication(&desc[idx]); in cc_set_assoc_desc()
754 hw_desc_init(&desc[idx]); in cc_set_assoc_desc()
755 set_din_type(&desc[idx], DMA_MLLI, areq_ctx->assoc.sram_addr, in cc_set_assoc_desc()
757 set_flow_mode(&desc[idx], flow_mode); in cc_set_assoc_desc()
760 set_din_not_last_indication(&desc[idx]); in cc_set_assoc_desc()
772 struct cc_hw_desc desc[], in cc_proc_authen_desc() argument
793 hw_desc_init(&desc[idx]); in cc_proc_authen_desc()
794 set_din_type(&desc[idx], DMA_DLLI, in cc_proc_authen_desc()
797 set_flow_mode(&desc[idx], flow_mode); in cc_proc_authen_desc()
820 hw_desc_init(&desc[idx]); in cc_proc_authen_desc()
821 set_din_type(&desc[idx], DMA_MLLI, mlli_addr, mlli_nents, in cc_proc_authen_desc()
823 set_flow_mode(&desc[idx], flow_mode); in cc_proc_authen_desc()
836 struct cc_hw_desc desc[], in cc_proc_cipher_desc() argument
852 hw_desc_init(&desc[idx]); in cc_proc_cipher_desc()
853 set_din_type(&desc[idx], DMA_DLLI, in cc_proc_cipher_desc()
857 set_dout_dlli(&desc[idx], in cc_proc_cipher_desc()
861 set_flow_mode(&desc[idx], flow_mode); in cc_proc_cipher_desc()
865 hw_desc_init(&desc[idx]); in cc_proc_cipher_desc()
866 set_din_type(&desc[idx], DMA_MLLI, areq_ctx->src.sram_addr, in cc_proc_cipher_desc()
868 set_dout_mlli(&desc[idx], areq_ctx->dst.sram_addr, in cc_proc_cipher_desc()
870 set_flow_mode(&desc[idx], flow_mode); in cc_proc_cipher_desc()
881 struct cc_hw_desc desc[], in cc_proc_digest_desc() argument
894 hw_desc_init(&desc[idx]); in cc_proc_digest_desc()
895 set_flow_mode(&desc[idx], S_HASH_to_DOUT); in cc_proc_digest_desc()
896 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0); in cc_proc_digest_desc()
897 set_dout_dlli(&desc[idx], req_ctx->icv_dma_addr, ctx->authsize, in cc_proc_digest_desc()
899 set_queue_last_ind(ctx->drvdata, &desc[idx]); in cc_proc_digest_desc()
901 set_aes_not_hash_mode(&desc[idx]); in cc_proc_digest_desc()
902 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC); in cc_proc_digest_desc()
904 set_cipher_config0(&desc[idx], in cc_proc_digest_desc()
906 set_cipher_mode(&desc[idx], hash_mode); in cc_proc_digest_desc()
910 hw_desc_init(&desc[idx]); in cc_proc_digest_desc()
911 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0); in cc_proc_digest_desc()
912 set_flow_mode(&desc[idx], S_HASH_to_DOUT); in cc_proc_digest_desc()
913 set_dout_dlli(&desc[idx], req_ctx->mac_buf_dma_addr, in cc_proc_digest_desc()
915 set_queue_last_ind(ctx->drvdata, &desc[idx]); in cc_proc_digest_desc()
916 set_cipher_config0(&desc[idx], in cc_proc_digest_desc()
918 set_cipher_config1(&desc[idx], HASH_PADDING_DISABLED); in cc_proc_digest_desc()
920 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC); in cc_proc_digest_desc()
921 set_aes_not_hash_mode(&desc[idx]); in cc_proc_digest_desc()
923 set_cipher_mode(&desc[idx], hash_mode); in cc_proc_digest_desc()
931 struct cc_hw_desc desc[], in cc_set_cipher_desc() argument
942 hw_desc_init(&desc[idx]); in cc_set_cipher_desc()
943 set_cipher_config0(&desc[idx], direct); in cc_set_cipher_desc()
944 set_flow_mode(&desc[idx], ctx->flow_mode); in cc_set_cipher_desc()
945 set_din_type(&desc[idx], DMA_DLLI, req_ctx->gen_ctx.iv_dma_addr, in cc_set_cipher_desc()
948 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1); in cc_set_cipher_desc()
950 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0); in cc_set_cipher_desc()
951 set_cipher_mode(&desc[idx], ctx->cipher_mode); in cc_set_cipher_desc()
955 hw_desc_init(&desc[idx]); in cc_set_cipher_desc()
956 set_cipher_config0(&desc[idx], direct); in cc_set_cipher_desc()
957 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_set_cipher_desc()
958 set_flow_mode(&desc[idx], ctx->flow_mode); in cc_set_cipher_desc()
960 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr, in cc_set_cipher_desc()
963 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_set_cipher_desc()
965 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr, in cc_set_cipher_desc()
967 set_key_size_des(&desc[idx], ctx->enc_keylen); in cc_set_cipher_desc()
969 set_cipher_mode(&desc[idx], ctx->cipher_mode); in cc_set_cipher_desc()
975 static void cc_proc_cipher(struct aead_request *req, struct cc_hw_desc desc[], in cc_proc_cipher() argument
985 cc_set_cipher_desc(req, desc, &idx); in cc_proc_cipher()
986 cc_proc_cipher_desc(req, data_flow_mode, desc, &idx); in cc_proc_cipher()
989 hw_desc_init(&desc[idx]); in cc_proc_cipher()
990 set_din_no_dma(&desc[idx], 0, 0xfffff0); in cc_proc_cipher()
991 set_dout_no_dma(&desc[idx], 0, 0, 1); in cc_proc_cipher()
998 static void cc_set_hmac_desc(struct aead_request *req, struct cc_hw_desc desc[], in cc_set_hmac_desc() argument
1010 hw_desc_init(&desc[idx]); in cc_set_hmac_desc()
1011 set_cipher_mode(&desc[idx], hash_mode); in cc_set_hmac_desc()
1012 set_din_type(&desc[idx], DMA_DLLI, in cc_set_hmac_desc()
1015 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_set_hmac_desc()
1016 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0); in cc_set_hmac_desc()
1020 hw_desc_init(&desc[idx]); in cc_set_hmac_desc()
1021 set_cipher_mode(&desc[idx], hash_mode); in cc_set_hmac_desc()
1022 set_din_sram(&desc[idx], cc_digest_len_addr(ctx->drvdata, hash_mode), in cc_set_hmac_desc()
1024 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_set_hmac_desc()
1025 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_set_hmac_desc()
1031 static void cc_set_xcbc_desc(struct aead_request *req, struct cc_hw_desc desc[], in cc_set_xcbc_desc() argument
1039 hw_desc_init(&desc[idx]); in cc_set_xcbc_desc()
1040 set_din_const(&desc[idx], 0, CC_AES_BLOCK_SIZE); in cc_set_xcbc_desc()
1041 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0); in cc_set_xcbc_desc()
1042 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC); in cc_set_xcbc_desc()
1043 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT); in cc_set_xcbc_desc()
1044 set_key_size_aes(&desc[idx], CC_AES_128_BIT_KEY_SIZE); in cc_set_xcbc_desc()
1045 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_set_xcbc_desc()
1046 set_aes_not_hash_mode(&desc[idx]); in cc_set_xcbc_desc()
1050 hw_desc_init(&desc[idx]); in cc_set_xcbc_desc()
1051 set_din_type(&desc[idx], DMA_DLLI, in cc_set_xcbc_desc()
1054 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_set_xcbc_desc()
1055 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC); in cc_set_xcbc_desc()
1056 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT); in cc_set_xcbc_desc()
1057 set_key_size_aes(&desc[idx], CC_AES_128_BIT_KEY_SIZE); in cc_set_xcbc_desc()
1058 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_set_xcbc_desc()
1059 set_aes_not_hash_mode(&desc[idx]); in cc_set_xcbc_desc()
1063 hw_desc_init(&desc[idx]); in cc_set_xcbc_desc()
1064 set_din_type(&desc[idx], DMA_DLLI, in cc_set_xcbc_desc()
1067 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1); in cc_set_xcbc_desc()
1068 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC); in cc_set_xcbc_desc()
1069 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT); in cc_set_xcbc_desc()
1070 set_key_size_aes(&desc[idx], CC_AES_128_BIT_KEY_SIZE); in cc_set_xcbc_desc()
1071 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_set_xcbc_desc()
1072 set_aes_not_hash_mode(&desc[idx]); in cc_set_xcbc_desc()
1076 hw_desc_init(&desc[idx]); in cc_set_xcbc_desc()
1077 set_din_type(&desc[idx], DMA_DLLI, in cc_set_xcbc_desc()
1080 set_setup_mode(&desc[idx], SETUP_LOAD_STATE2); in cc_set_xcbc_desc()
1081 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC); in cc_set_xcbc_desc()
1082 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT); in cc_set_xcbc_desc()
1083 set_key_size_aes(&desc[idx], CC_AES_128_BIT_KEY_SIZE); in cc_set_xcbc_desc()
1084 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_set_xcbc_desc()
1085 set_aes_not_hash_mode(&desc[idx]); in cc_set_xcbc_desc()
1092 struct cc_hw_desc desc[], in cc_proc_header_desc() argument
1100 cc_set_assoc_desc(req, DIN_HASH, desc, &idx); in cc_proc_header_desc()
1107 struct cc_hw_desc desc[], in cc_proc_scheme_desc() argument
1119 hw_desc_init(&desc[idx]); in cc_proc_scheme_desc()
1120 set_cipher_mode(&desc[idx], hash_mode); in cc_proc_scheme_desc()
1121 set_dout_sram(&desc[idx], aead_handle->sram_workspace_addr, in cc_proc_scheme_desc()
1123 set_flow_mode(&desc[idx], S_HASH_to_DOUT); in cc_proc_scheme_desc()
1124 set_setup_mode(&desc[idx], SETUP_WRITE_STATE1); in cc_proc_scheme_desc()
1125 set_cipher_do(&desc[idx], DO_PAD); in cc_proc_scheme_desc()
1129 hw_desc_init(&desc[idx]); in cc_proc_scheme_desc()
1130 set_dout_sram(&desc[idx], aead_handle->sram_workspace_addr, in cc_proc_scheme_desc()
1132 set_flow_mode(&desc[idx], S_HASH_to_DOUT); in cc_proc_scheme_desc()
1133 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0); in cc_proc_scheme_desc()
1134 set_cipher_config0(&desc[idx], HASH_DIGEST_RESULT_LITTLE_ENDIAN); in cc_proc_scheme_desc()
1135 set_cipher_mode(&desc[idx], hash_mode); in cc_proc_scheme_desc()
1139 hw_desc_init(&desc[idx]); in cc_proc_scheme_desc()
1140 set_cipher_mode(&desc[idx], hash_mode); in cc_proc_scheme_desc()
1141 set_din_type(&desc[idx], DMA_DLLI, in cc_proc_scheme_desc()
1144 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_proc_scheme_desc()
1145 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0); in cc_proc_scheme_desc()
1149 hw_desc_init(&desc[idx]); in cc_proc_scheme_desc()
1150 set_cipher_mode(&desc[idx], hash_mode); in cc_proc_scheme_desc()
1151 set_din_sram(&desc[idx], cc_digest_len_addr(ctx->drvdata, hash_mode), in cc_proc_scheme_desc()
1153 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED); in cc_proc_scheme_desc()
1154 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_proc_scheme_desc()
1155 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_proc_scheme_desc()
1159 hw_desc_init(&desc[idx]); in cc_proc_scheme_desc()
1160 set_din_sram(&desc[idx], aead_handle->sram_workspace_addr, in cc_proc_scheme_desc()
1162 set_flow_mode(&desc[idx], DIN_HASH); in cc_proc_scheme_desc()
1169 struct cc_hw_desc desc[], unsigned int *seq_size) in cc_mlli_to_sram() argument
1183 hw_desc_init(&desc[*seq_size]); in cc_mlli_to_sram()
1184 set_din_type(&desc[*seq_size], DMA_DLLI, in cc_mlli_to_sram()
1187 set_dout_sram(&desc[*seq_size], in cc_mlli_to_sram()
1190 set_flow_mode(&desc[*seq_size], BYPASS); in cc_mlli_to_sram()
1220 static void cc_hmac_authenc(struct aead_request *req, struct cc_hw_desc desc[], in cc_hmac_authenc() argument
1235 cc_set_hmac_desc(req, desc, seq_size); in cc_hmac_authenc()
1236 cc_set_cipher_desc(req, desc, seq_size); in cc_hmac_authenc()
1237 cc_proc_header_desc(req, desc, seq_size); in cc_hmac_authenc()
1238 cc_proc_cipher_desc(req, data_flow_mode, desc, seq_size); in cc_hmac_authenc()
1239 cc_proc_scheme_desc(req, desc, seq_size); in cc_hmac_authenc()
1240 cc_proc_digest_desc(req, desc, seq_size); in cc_hmac_authenc()
1251 cc_proc_cipher(req, desc, seq_size, data_flow_mode); in cc_hmac_authenc()
1253 cc_set_hmac_desc(req, desc, seq_size); in cc_hmac_authenc()
1254 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct); in cc_hmac_authenc()
1255 cc_proc_scheme_desc(req, desc, seq_size); in cc_hmac_authenc()
1256 cc_proc_digest_desc(req, desc, seq_size); in cc_hmac_authenc()
1260 cc_set_hmac_desc(req, desc, seq_size); in cc_hmac_authenc()
1261 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct); in cc_hmac_authenc()
1262 cc_proc_scheme_desc(req, desc, seq_size); in cc_hmac_authenc()
1264 cc_proc_cipher(req, desc, seq_size, data_flow_mode); in cc_hmac_authenc()
1268 cc_proc_digest_desc(req, desc, seq_size); in cc_hmac_authenc()
1273 cc_xcbc_authenc(struct aead_request *req, struct cc_hw_desc desc[], in cc_xcbc_authenc() argument
1288 cc_set_xcbc_desc(req, desc, seq_size); in cc_xcbc_authenc()
1289 cc_set_cipher_desc(req, desc, seq_size); in cc_xcbc_authenc()
1290 cc_proc_header_desc(req, desc, seq_size); in cc_xcbc_authenc()
1291 cc_proc_cipher_desc(req, data_flow_mode, desc, seq_size); in cc_xcbc_authenc()
1292 cc_proc_digest_desc(req, desc, seq_size); in cc_xcbc_authenc()
1303 cc_proc_cipher(req, desc, seq_size, data_flow_mode); in cc_xcbc_authenc()
1305 cc_set_xcbc_desc(req, desc, seq_size); in cc_xcbc_authenc()
1306 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct); in cc_xcbc_authenc()
1307 cc_proc_digest_desc(req, desc, seq_size); in cc_xcbc_authenc()
1310 cc_set_xcbc_desc(req, desc, seq_size); in cc_xcbc_authenc()
1311 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct); in cc_xcbc_authenc()
1313 cc_proc_cipher(req, desc, seq_size, data_flow_mode); in cc_xcbc_authenc()
1317 cc_proc_digest_desc(req, desc, seq_size); in cc_xcbc_authenc()
1419 static int cc_ccm(struct aead_request *req, struct cc_hw_desc desc[], in cc_ccm() argument
1438 hw_desc_init(&desc[idx]); in cc_ccm()
1439 set_cipher_mode(&desc[idx], DRV_CIPHER_CTR); in cc_ccm()
1440 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr, in cc_ccm()
1443 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_ccm()
1444 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_ccm()
1445 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT); in cc_ccm()
1446 set_flow_mode(&desc[idx], S_DIN_to_AES); in cc_ccm()
1450 hw_desc_init(&desc[idx]); in cc_ccm()
1451 set_cipher_mode(&desc[idx], DRV_CIPHER_CTR); in cc_ccm()
1452 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_ccm()
1453 set_din_type(&desc[idx], DMA_DLLI, in cc_ccm()
1455 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT); in cc_ccm()
1456 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1); in cc_ccm()
1457 set_flow_mode(&desc[idx], S_DIN_to_AES); in cc_ccm()
1461 hw_desc_init(&desc[idx]); in cc_ccm()
1462 set_cipher_mode(&desc[idx], DRV_CIPHER_CBC_MAC); in cc_ccm()
1463 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr, in cc_ccm()
1466 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_ccm()
1467 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_ccm()
1468 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT); in cc_ccm()
1469 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_ccm()
1470 set_aes_not_hash_mode(&desc[idx]); in cc_ccm()
1474 hw_desc_init(&desc[idx]); in cc_ccm()
1475 set_cipher_mode(&desc[idx], DRV_CIPHER_CBC_MAC); in cc_ccm()
1476 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_ccm()
1477 set_din_type(&desc[idx], DMA_DLLI, req_ctx->mac_buf_dma_addr, in cc_ccm()
1479 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT); in cc_ccm()
1480 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0); in cc_ccm()
1481 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_ccm()
1482 set_aes_not_hash_mode(&desc[idx]); in cc_ccm()
1487 cc_set_assoc_desc(req, DIN_HASH, desc, &idx); in cc_ccm()
1489 hw_desc_init(&desc[idx]); in cc_ccm()
1490 set_din_type(&desc[idx], DMA_DLLI, in cc_ccm()
1493 set_flow_mode(&desc[idx], DIN_HASH); in cc_ccm()
1499 cc_proc_cipher_desc(req, cipher_flow_mode, desc, &idx); in cc_ccm()
1502 hw_desc_init(&desc[idx]); in cc_ccm()
1503 set_cipher_mode(&desc[idx], DRV_CIPHER_CBC_MAC); in cc_ccm()
1504 set_dout_dlli(&desc[idx], req_ctx->mac_buf_dma_addr, ctx->authsize, in cc_ccm()
1506 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0); in cc_ccm()
1507 set_cipher_config0(&desc[idx], HASH_DIGEST_RESULT_LITTLE_ENDIAN); in cc_ccm()
1508 set_flow_mode(&desc[idx], S_HASH_to_DOUT); in cc_ccm()
1509 set_aes_not_hash_mode(&desc[idx]); in cc_ccm()
1513 hw_desc_init(&desc[idx]); in cc_ccm()
1514 set_cipher_mode(&desc[idx], DRV_CIPHER_CTR); in cc_ccm()
1515 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT); in cc_ccm()
1516 set_din_type(&desc[idx], DMA_DLLI, req_ctx->ccm_iv0_dma_addr, in cc_ccm()
1518 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_ccm()
1519 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1); in cc_ccm()
1520 set_flow_mode(&desc[idx], S_DIN_to_AES); in cc_ccm()
1523 hw_desc_init(&desc[idx]); in cc_ccm()
1524 set_din_no_dma(&desc[idx], 0, 0xfffff0); in cc_ccm()
1525 set_dout_no_dma(&desc[idx], 0, 0, 1); in cc_ccm()
1529 hw_desc_init(&desc[idx]); in cc_ccm()
1530 set_din_type(&desc[idx], DMA_DLLI, req_ctx->mac_buf_dma_addr, in cc_ccm()
1532 set_dout_dlli(&desc[idx], mac_result, ctx->authsize, NS_BIT, 1); in cc_ccm()
1533 set_queue_last_ind(ctx->drvdata, &desc[idx]); in cc_ccm()
1534 set_flow_mode(&desc[idx], DIN_AES_DOUT); in cc_ccm()
1625 struct cc_hw_desc desc[], unsigned int *seq_size) in cc_set_ghash_desc() argument
1633 hw_desc_init(&desc[idx]); in cc_set_ghash_desc()
1634 set_cipher_mode(&desc[idx], DRV_CIPHER_ECB); in cc_set_ghash_desc()
1635 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT); in cc_set_ghash_desc()
1636 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr, in cc_set_ghash_desc()
1638 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_set_ghash_desc()
1639 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_set_ghash_desc()
1640 set_flow_mode(&desc[idx], S_DIN_to_AES); in cc_set_ghash_desc()
1644 hw_desc_init(&desc[idx]); in cc_set_ghash_desc()
1645 set_din_const(&desc[idx], 0x0, AES_BLOCK_SIZE); in cc_set_ghash_desc()
1646 set_dout_dlli(&desc[idx], req_ctx->hkey_dma_addr, AES_BLOCK_SIZE, in cc_set_ghash_desc()
1648 set_flow_mode(&desc[idx], DIN_AES_DOUT); in cc_set_ghash_desc()
1652 hw_desc_init(&desc[idx]); in cc_set_ghash_desc()
1653 set_din_no_dma(&desc[idx], 0, 0xfffff0); in cc_set_ghash_desc()
1654 set_dout_no_dma(&desc[idx], 0, 0, 1); in cc_set_ghash_desc()
1658 hw_desc_init(&desc[idx]); in cc_set_ghash_desc()
1659 set_din_type(&desc[idx], DMA_DLLI, req_ctx->hkey_dma_addr, in cc_set_ghash_desc()
1661 set_dout_no_dma(&desc[idx], 0, 0, 1); in cc_set_ghash_desc()
1662 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_set_ghash_desc()
1663 set_aes_not_hash_mode(&desc[idx]); in cc_set_ghash_desc()
1664 set_cipher_mode(&desc[idx], DRV_HASH_HW_GHASH); in cc_set_ghash_desc()
1665 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED); in cc_set_ghash_desc()
1666 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_set_ghash_desc()
1674 hw_desc_init(&desc[idx]); in cc_set_ghash_desc()
1675 set_din_no_dma(&desc[idx], 0, 0xfffff0); in cc_set_ghash_desc()
1676 set_dout_no_dma(&desc[idx], 0, 0, 1); in cc_set_ghash_desc()
1677 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_set_ghash_desc()
1678 set_aes_not_hash_mode(&desc[idx]); in cc_set_ghash_desc()
1679 set_cipher_mode(&desc[idx], DRV_HASH_HW_GHASH); in cc_set_ghash_desc()
1680 set_cipher_do(&desc[idx], 1); //1=AES_SK RKEK in cc_set_ghash_desc()
1681 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT); in cc_set_ghash_desc()
1682 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED); in cc_set_ghash_desc()
1683 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_set_ghash_desc()
1689 hw_desc_init(&desc[idx]); in cc_set_ghash_desc()
1690 set_din_const(&desc[idx], 0x0, AES_BLOCK_SIZE); in cc_set_ghash_desc()
1691 set_dout_no_dma(&desc[idx], 0, 0, 1); in cc_set_ghash_desc()
1692 set_flow_mode(&desc[idx], S_DIN_to_HASH); in cc_set_ghash_desc()
1693 set_aes_not_hash_mode(&desc[idx]); in cc_set_ghash_desc()
1694 set_cipher_mode(&desc[idx], DRV_HASH_HW_GHASH); in cc_set_ghash_desc()
1695 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED); in cc_set_ghash_desc()
1696 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0); in cc_set_ghash_desc()
1702 static void cc_set_gctr_desc(struct aead_request *req, struct cc_hw_desc desc[], in cc_set_gctr_desc() argument
1711 hw_desc_init(&desc[idx]); in cc_set_gctr_desc()
1712 set_cipher_mode(&desc[idx], DRV_CIPHER_GCTR); in cc_set_gctr_desc()
1713 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT); in cc_set_gctr_desc()
1714 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr, in cc_set_gctr_desc()
1716 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_set_gctr_desc()
1717 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); in cc_set_gctr_desc()
1718 set_flow_mode(&desc[idx], S_DIN_to_AES); in cc_set_gctr_desc()
1723 hw_desc_init(&desc[idx]); in cc_set_gctr_desc()
1724 set_cipher_mode(&desc[idx], DRV_CIPHER_GCTR); in cc_set_gctr_desc()
1725 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_set_gctr_desc()
1726 set_din_type(&desc[idx], DMA_DLLI, in cc_set_gctr_desc()
1729 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT); in cc_set_gctr_desc()
1730 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1); in cc_set_gctr_desc()
1731 set_flow_mode(&desc[idx], S_DIN_to_AES); in cc_set_gctr_desc()
1739 struct cc_hw_desc desc[], in cc_proc_gcm_result() argument
1755 hw_desc_init(&desc[idx]); in cc_proc_gcm_result()
1756 set_din_type(&desc[idx], DMA_DLLI, req_ctx->gcm_block_len_dma_addr, in cc_proc_gcm_result()
1758 set_flow_mode(&desc[idx], DIN_HASH); in cc_proc_gcm_result()
1762 hw_desc_init(&desc[idx]); in cc_proc_gcm_result()
1763 set_cipher_mode(&desc[idx], DRV_HASH_HW_GHASH); in cc_proc_gcm_result()
1764 set_din_no_dma(&desc[idx], 0, 0xfffff0); in cc_proc_gcm_result()
1765 set_dout_dlli(&desc[idx], req_ctx->mac_buf_dma_addr, AES_BLOCK_SIZE, in cc_proc_gcm_result()
1767 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0); in cc_proc_gcm_result()
1768 set_flow_mode(&desc[idx], S_HASH_to_DOUT); in cc_proc_gcm_result()
1769 set_aes_not_hash_mode(&desc[idx]); in cc_proc_gcm_result()
1774 hw_desc_init(&desc[idx]); in cc_proc_gcm_result()
1775 set_cipher_mode(&desc[idx], DRV_CIPHER_GCTR); in cc_proc_gcm_result()
1776 set_key_size_aes(&desc[idx], ctx->enc_keylen); in cc_proc_gcm_result()
1777 set_din_type(&desc[idx], DMA_DLLI, req_ctx->gcm_iv_inc1_dma_addr, in cc_proc_gcm_result()
1779 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT); in cc_proc_gcm_result()
1780 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1); in cc_proc_gcm_result()
1781 set_flow_mode(&desc[idx], S_DIN_to_AES); in cc_proc_gcm_result()
1785 hw_desc_init(&desc[idx]); in cc_proc_gcm_result()
1786 set_din_no_dma(&desc[idx], 0, 0xfffff0); in cc_proc_gcm_result()
1787 set_dout_no_dma(&desc[idx], 0, 0, 1); in cc_proc_gcm_result()
1791 hw_desc_init(&desc[idx]); in cc_proc_gcm_result()
1792 set_cipher_mode(&desc[idx], DRV_CIPHER_GCTR); in cc_proc_gcm_result()
1793 set_din_type(&desc[idx], DMA_DLLI, req_ctx->mac_buf_dma_addr, in cc_proc_gcm_result()
1795 set_dout_dlli(&desc[idx], mac_result, ctx->authsize, NS_BIT, 1); in cc_proc_gcm_result()
1796 set_queue_last_ind(ctx->drvdata, &desc[idx]); in cc_proc_gcm_result()
1797 set_flow_mode(&desc[idx], DIN_AES_DOUT); in cc_proc_gcm_result()
1803 static int cc_gcm(struct aead_request *req, struct cc_hw_desc desc[], in cc_gcm() argument
1817 cc_proc_cipher_desc(req, BYPASS, desc, seq_size); in cc_gcm()
1818 cc_set_ghash_desc(req, desc, seq_size); in cc_gcm()
1820 cc_set_assoc_desc(req, DIN_HASH, desc, seq_size); in cc_gcm()
1821 cc_set_gctr_desc(req, desc, seq_size); in cc_gcm()
1822 cc_proc_gcm_result(req, desc, seq_size); in cc_gcm()
1827 cc_set_ghash_desc(req, desc, seq_size); in cc_gcm()
1830 cc_set_assoc_desc(req, DIN_HASH, desc, seq_size); in cc_gcm()
1831 cc_set_gctr_desc(req, desc, seq_size); in cc_gcm()
1834 cc_proc_cipher_desc(req, cipher_flow_mode, desc, seq_size); in cc_gcm()
1835 cc_proc_gcm_result(req, desc, seq_size); in cc_gcm()
1909 struct cc_hw_desc desc[MAX_AEAD_PROCESS_SEQ]; in cc_proc_aead() local
1998 cc_mlli_to_sram(req, desc, &seq_len); in cc_proc_aead()
2004 cc_hmac_authenc(req, desc, &seq_len); in cc_proc_aead()
2007 cc_xcbc_authenc(req, desc, &seq_len); in cc_proc_aead()
2011 cc_ccm(req, desc, &seq_len); in cc_proc_aead()
2013 cc_gcm(req, desc, &seq_len); in cc_proc_aead()
2024 rc = cc_send_request(ctx->drvdata, &cc_req, desc, seq_len, &req->base); in cc_proc_aead()