Lines Matching refs:desc

251 static unsigned int xcbc_setkey(struct cc_hw_desc *desc,
255 hw_desc_init(&desc[0]);
260 set_din_type(&desc[0], DMA_DLLI,
263 set_cipher_mode(&desc[0], DRV_CIPHER_ECB);
264 set_cipher_config0(&desc[0], DRV_CRYPTO_DIRECTION_ENCRYPT);
265 set_key_size_aes(&desc[0], ctx->auth_keylen);
266 set_flow_mode(&desc[0], S_DIN_to_AES);
267 set_setup_mode(&desc[0], SETUP_LOAD_KEY0);
269 hw_desc_init(&desc[1]);
270 set_din_const(&desc[1], 0x01010101, CC_AES_128_BIT_KEY_SIZE);
271 set_flow_mode(&desc[1], DIN_AES_DOUT);
272 set_dout_dlli(&desc[1], ctx->auth_state.xcbc.xcbc_keys_dma_addr,
275 hw_desc_init(&desc[2]);
276 set_din_const(&desc[2], 0x02020202, CC_AES_128_BIT_KEY_SIZE);
277 set_flow_mode(&desc[2], DIN_AES_DOUT);
278 set_dout_dlli(&desc[2], (ctx->auth_state.xcbc.xcbc_keys_dma_addr
282 hw_desc_init(&desc[3]);
283 set_din_const(&desc[3], 0x03030303, CC_AES_128_BIT_KEY_SIZE);
284 set_flow_mode(&desc[3], DIN_AES_DOUT);
285 set_dout_dlli(&desc[3], (ctx->auth_state.xcbc.xcbc_keys_dma_addr
292 static unsigned int hmac_setkey(struct cc_hw_desc *desc,
309 hw_desc_init(&desc[idx]);
310 set_cipher_mode(&desc[idx], hash_mode);
311 set_din_sram(&desc[idx],
315 set_flow_mode(&desc[idx], S_DIN_to_HASH);
316 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0);
320 hw_desc_init(&desc[idx]);
321 set_cipher_mode(&desc[idx], hash_mode);
322 set_din_const(&desc[idx], 0, ctx->hash_len);
323 set_flow_mode(&desc[idx], S_DIN_to_HASH);
324 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
328 hw_desc_init(&desc[idx]);
329 set_xor_val(&desc[idx], hmac_pad_const[i]);
330 set_cipher_mode(&desc[idx], hash_mode);
331 set_flow_mode(&desc[idx], S_DIN_to_HASH);
332 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1);
336 hw_desc_init(&desc[idx]);
337 set_din_type(&desc[idx], DMA_DLLI,
340 set_cipher_mode(&desc[idx], hash_mode);
341 set_xor_active(&desc[idx]);
342 set_flow_mode(&desc[idx], DIN_HASH);
346 hw_desc_init(&desc[idx]);
347 set_cipher_mode(&desc[idx], hash_mode);
348 set_dout_dlli(&desc[idx],
351 set_flow_mode(&desc[idx], S_HASH_to_DOUT);
352 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0);
353 set_cipher_config1(&desc[idx], HASH_PADDING_DISABLED);
424 struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ];
456 hw_desc_init(&desc[idx]);
457 set_cipher_mode(&desc[idx], hashmode);
460 set_din_sram(&desc[idx], larval_addr, digestsize);
461 set_flow_mode(&desc[idx], S_DIN_to_HASH);
462 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0);
466 hw_desc_init(&desc[idx]);
467 set_cipher_mode(&desc[idx], hashmode);
468 set_din_const(&desc[idx], 0, ctx->hash_len);
469 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED);
470 set_flow_mode(&desc[idx], S_DIN_to_HASH);
471 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
474 hw_desc_init(&desc[idx]);
475 set_din_type(&desc[idx], DMA_DLLI,
477 set_flow_mode(&desc[idx], DIN_HASH);
481 hw_desc_init(&desc[idx]);
482 set_cipher_mode(&desc[idx], hashmode);
483 set_dout_dlli(&desc[idx], padded_authkey_dma_addr,
485 set_flow_mode(&desc[idx], S_HASH_to_DOUT);
486 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0);
487 set_cipher_config1(&desc[idx], HASH_PADDING_DISABLED);
488 set_cipher_config0(&desc[idx],
492 hw_desc_init(&desc[idx]);
493 set_din_const(&desc[idx], 0, (blocksize - digestsize));
494 set_flow_mode(&desc[idx], BYPASS);
495 set_dout_dlli(&desc[idx], (padded_authkey_dma_addr +
500 hw_desc_init(&desc[idx]);
501 set_din_type(&desc[idx], DMA_DLLI, key_dma_addr,
503 set_flow_mode(&desc[idx], BYPASS);
504 set_dout_dlli(&desc[idx], padded_authkey_dma_addr,
509 hw_desc_init(&desc[idx]);
510 set_din_const(&desc[idx], 0,
512 set_flow_mode(&desc[idx], BYPASS);
513 set_dout_dlli(&desc[idx],
521 hw_desc_init(&desc[idx]);
522 set_din_const(&desc[idx], 0, (blocksize - keylen));
523 set_flow_mode(&desc[idx], BYPASS);
524 set_dout_dlli(&desc[idx], padded_authkey_dma_addr,
529 rc = cc_send_sync_request(ctx->drvdata, &cc_req, desc, idx);
546 struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ];
612 seq_len = hmac_setkey(desc, ctx);
615 seq_len = xcbc_setkey(desc, ctx);
627 rc = cc_send_sync_request(ctx->drvdata, &cc_req, desc, seq_len);
722 struct cc_hw_desc desc[], unsigned int *seq_size)
734 hw_desc_init(&desc[idx]);
735 set_din_type(&desc[idx], DMA_DLLI, sg_dma_address(areq->src),
737 set_flow_mode(&desc[idx], flow_mode);
740 set_din_not_last_indication(&desc[idx]);
744 hw_desc_init(&desc[idx]);
745 set_din_type(&desc[idx], DMA_MLLI, areq_ctx->assoc.sram_addr,
747 set_flow_mode(&desc[idx], flow_mode);
750 set_din_not_last_indication(&desc[idx]);
762 struct cc_hw_desc desc[],
783 hw_desc_init(&desc[idx]);
784 set_din_type(&desc[idx], DMA_DLLI,
787 set_flow_mode(&desc[idx], flow_mode);
810 hw_desc_init(&desc[idx]);
811 set_din_type(&desc[idx], DMA_MLLI, mlli_addr, mlli_nents,
813 set_flow_mode(&desc[idx], flow_mode);
826 struct cc_hw_desc desc[],
842 hw_desc_init(&desc[idx]);
843 set_din_type(&desc[idx], DMA_DLLI,
847 set_dout_dlli(&desc[idx],
851 set_flow_mode(&desc[idx], flow_mode);
855 hw_desc_init(&desc[idx]);
856 set_din_type(&desc[idx], DMA_MLLI, areq_ctx->src.sram_addr,
858 set_dout_mlli(&desc[idx], areq_ctx->dst.sram_addr,
860 set_flow_mode(&desc[idx], flow_mode);
871 struct cc_hw_desc desc[],
884 hw_desc_init(&desc[idx]);
885 set_flow_mode(&desc[idx], S_HASH_to_DOUT);
886 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0);
887 set_dout_dlli(&desc[idx], req_ctx->icv_dma_addr, ctx->authsize,
889 set_queue_last_ind(ctx->drvdata, &desc[idx]);
891 set_aes_not_hash_mode(&desc[idx]);
892 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC);
894 set_cipher_config0(&desc[idx],
896 set_cipher_mode(&desc[idx], hash_mode);
900 hw_desc_init(&desc[idx]);
901 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0);
902 set_flow_mode(&desc[idx], S_HASH_to_DOUT);
903 set_dout_dlli(&desc[idx], req_ctx->mac_buf_dma_addr,
905 set_queue_last_ind(ctx->drvdata, &desc[idx]);
906 set_cipher_config0(&desc[idx],
908 set_cipher_config1(&desc[idx], HASH_PADDING_DISABLED);
910 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC);
911 set_aes_not_hash_mode(&desc[idx]);
913 set_cipher_mode(&desc[idx], hash_mode);
921 struct cc_hw_desc desc[],
932 hw_desc_init(&desc[idx]);
933 set_cipher_config0(&desc[idx], direct);
934 set_flow_mode(&desc[idx], ctx->flow_mode);
935 set_din_type(&desc[idx], DMA_DLLI, req_ctx->gen_ctx.iv_dma_addr,
938 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1);
940 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0);
941 set_cipher_mode(&desc[idx], ctx->cipher_mode);
945 hw_desc_init(&desc[idx]);
946 set_cipher_config0(&desc[idx], direct);
947 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
948 set_flow_mode(&desc[idx], ctx->flow_mode);
950 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr,
953 set_key_size_aes(&desc[idx], ctx->enc_keylen);
955 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr,
957 set_key_size_des(&desc[idx], ctx->enc_keylen);
959 set_cipher_mode(&desc[idx], ctx->cipher_mode);
965 static void cc_proc_cipher(struct aead_request *req, struct cc_hw_desc desc[],
975 cc_set_cipher_desc(req, desc, &idx);
976 cc_proc_cipher_desc(req, data_flow_mode, desc, &idx);
979 hw_desc_init(&desc[idx]);
980 set_din_no_dma(&desc[idx], 0, 0xfffff0);
981 set_dout_no_dma(&desc[idx], 0, 0, 1);
988 static void cc_set_hmac_desc(struct aead_request *req, struct cc_hw_desc desc[],
1000 hw_desc_init(&desc[idx]);
1001 set_cipher_mode(&desc[idx], hash_mode);
1002 set_din_type(&desc[idx], DMA_DLLI,
1005 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1006 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0);
1010 hw_desc_init(&desc[idx]);
1011 set_cipher_mode(&desc[idx], hash_mode);
1012 set_din_sram(&desc[idx], cc_digest_len_addr(ctx->drvdata, hash_mode),
1014 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1015 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
1021 static void cc_set_xcbc_desc(struct aead_request *req, struct cc_hw_desc desc[],
1029 hw_desc_init(&desc[idx]);
1030 set_din_const(&desc[idx], 0, CC_AES_BLOCK_SIZE);
1031 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0);
1032 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC);
1033 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT);
1034 set_key_size_aes(&desc[idx], CC_AES_128_BIT_KEY_SIZE);
1035 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1036 set_aes_not_hash_mode(&desc[idx]);
1040 hw_desc_init(&desc[idx]);
1041 set_din_type(&desc[idx], DMA_DLLI,
1044 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
1045 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC);
1046 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT);
1047 set_key_size_aes(&desc[idx], CC_AES_128_BIT_KEY_SIZE);
1048 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1049 set_aes_not_hash_mode(&desc[idx]);
1053 hw_desc_init(&desc[idx]);
1054 set_din_type(&desc[idx], DMA_DLLI,
1057 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1);
1058 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC);
1059 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT);
1060 set_key_size_aes(&desc[idx], CC_AES_128_BIT_KEY_SIZE);
1061 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1062 set_aes_not_hash_mode(&desc[idx]);
1066 hw_desc_init(&desc[idx]);
1067 set_din_type(&desc[idx], DMA_DLLI,
1070 set_setup_mode(&desc[idx], SETUP_LOAD_STATE2);
1071 set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC);
1072 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT);
1073 set_key_size_aes(&desc[idx], CC_AES_128_BIT_KEY_SIZE);
1074 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1075 set_aes_not_hash_mode(&desc[idx]);
1082 struct cc_hw_desc desc[],
1090 cc_set_assoc_desc(req, DIN_HASH, desc, &idx);
1097 struct cc_hw_desc desc[],
1109 hw_desc_init(&desc[idx]);
1110 set_cipher_mode(&desc[idx], hash_mode);
1111 set_dout_sram(&desc[idx], aead_handle->sram_workspace_addr,
1113 set_flow_mode(&desc[idx], S_HASH_to_DOUT);
1114 set_setup_mode(&desc[idx], SETUP_WRITE_STATE1);
1115 set_cipher_do(&desc[idx], DO_PAD);
1119 hw_desc_init(&desc[idx]);
1120 set_dout_sram(&desc[idx], aead_handle->sram_workspace_addr,
1122 set_flow_mode(&desc[idx], S_HASH_to_DOUT);
1123 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0);
1124 set_cipher_config0(&desc[idx], HASH_DIGEST_RESULT_LITTLE_ENDIAN);
1125 set_cipher_mode(&desc[idx], hash_mode);
1129 hw_desc_init(&desc[idx]);
1130 set_cipher_mode(&desc[idx], hash_mode);
1131 set_din_type(&desc[idx], DMA_DLLI,
1134 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1135 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0);
1139 hw_desc_init(&desc[idx]);
1140 set_cipher_mode(&desc[idx], hash_mode);
1141 set_din_sram(&desc[idx], cc_digest_len_addr(ctx->drvdata, hash_mode),
1143 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED);
1144 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1145 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
1149 hw_desc_init(&desc[idx]);
1150 set_din_sram(&desc[idx], aead_handle->sram_workspace_addr,
1152 set_flow_mode(&desc[idx], DIN_HASH);
1159 struct cc_hw_desc desc[], unsigned int *seq_size)
1173 hw_desc_init(&desc[*seq_size]);
1174 set_din_type(&desc[*seq_size], DMA_DLLI,
1177 set_dout_sram(&desc[*seq_size],
1180 set_flow_mode(&desc[*seq_size], BYPASS);
1210 static void cc_hmac_authenc(struct aead_request *req, struct cc_hw_desc desc[],
1225 cc_set_hmac_desc(req, desc, seq_size);
1226 cc_set_cipher_desc(req, desc, seq_size);
1227 cc_proc_header_desc(req, desc, seq_size);
1228 cc_proc_cipher_desc(req, data_flow_mode, desc, seq_size);
1229 cc_proc_scheme_desc(req, desc, seq_size);
1230 cc_proc_digest_desc(req, desc, seq_size);
1241 cc_proc_cipher(req, desc, seq_size, data_flow_mode);
1243 cc_set_hmac_desc(req, desc, seq_size);
1244 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct);
1245 cc_proc_scheme_desc(req, desc, seq_size);
1246 cc_proc_digest_desc(req, desc, seq_size);
1250 cc_set_hmac_desc(req, desc, seq_size);
1251 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct);
1252 cc_proc_scheme_desc(req, desc, seq_size);
1254 cc_proc_cipher(req, desc, seq_size, data_flow_mode);
1258 cc_proc_digest_desc(req, desc, seq_size);
1263 cc_xcbc_authenc(struct aead_request *req, struct cc_hw_desc desc[],
1278 cc_set_xcbc_desc(req, desc, seq_size);
1279 cc_set_cipher_desc(req, desc, seq_size);
1280 cc_proc_header_desc(req, desc, seq_size);
1281 cc_proc_cipher_desc(req, data_flow_mode, desc, seq_size);
1282 cc_proc_digest_desc(req, desc, seq_size);
1293 cc_proc_cipher(req, desc, seq_size, data_flow_mode);
1295 cc_set_xcbc_desc(req, desc, seq_size);
1296 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct);
1297 cc_proc_digest_desc(req, desc, seq_size);
1300 cc_set_xcbc_desc(req, desc, seq_size);
1301 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct);
1303 cc_proc_cipher(req, desc, seq_size, data_flow_mode);
1307 cc_proc_digest_desc(req, desc, seq_size);
1409 static int cc_ccm(struct aead_request *req, struct cc_hw_desc desc[],
1428 hw_desc_init(&desc[idx]);
1429 set_cipher_mode(&desc[idx], DRV_CIPHER_CTR);
1430 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr,
1433 set_key_size_aes(&desc[idx], ctx->enc_keylen);
1434 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
1435 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT);
1436 set_flow_mode(&desc[idx], S_DIN_to_AES);
1440 hw_desc_init(&desc[idx]);
1441 set_cipher_mode(&desc[idx], DRV_CIPHER_CTR);
1442 set_key_size_aes(&desc[idx], ctx->enc_keylen);
1443 set_din_type(&desc[idx], DMA_DLLI,
1445 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT);
1446 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1);
1447 set_flow_mode(&desc[idx], S_DIN_to_AES);
1451 hw_desc_init(&desc[idx]);
1452 set_cipher_mode(&desc[idx], DRV_CIPHER_CBC_MAC);
1453 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr,
1456 set_key_size_aes(&desc[idx], ctx->enc_keylen);
1457 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
1458 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT);
1459 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1460 set_aes_not_hash_mode(&desc[idx]);
1464 hw_desc_init(&desc[idx]);
1465 set_cipher_mode(&desc[idx], DRV_CIPHER_CBC_MAC);
1466 set_key_size_aes(&desc[idx], ctx->enc_keylen);
1467 set_din_type(&desc[idx], DMA_DLLI, req_ctx->mac_buf_dma_addr,
1469 set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT);
1470 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0);
1471 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1472 set_aes_not_hash_mode(&desc[idx]);
1477 cc_set_assoc_desc(req, DIN_HASH, desc, &idx);
1479 hw_desc_init(&desc[idx]);
1480 set_din_type(&desc[idx], DMA_DLLI,
1483 set_flow_mode(&desc[idx], DIN_HASH);
1489 cc_proc_cipher_desc(req, cipher_flow_mode, desc, &idx);
1492 hw_desc_init(&desc[idx]);
1493 set_cipher_mode(&desc[idx], DRV_CIPHER_CBC_MAC);
1494 set_dout_dlli(&desc[idx], req_ctx->mac_buf_dma_addr, ctx->authsize,
1496 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0);
1497 set_cipher_config0(&desc[idx], HASH_DIGEST_RESULT_LITTLE_ENDIAN);
1498 set_flow_mode(&desc[idx], S_HASH_to_DOUT);
1499 set_aes_not_hash_mode(&desc[idx]);
1503 hw_desc_init(&desc[idx]);
1504 set_cipher_mode(&desc[idx], DRV_CIPHER_CTR);
1505 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT);
1506 set_din_type(&desc[idx], DMA_DLLI, req_ctx->ccm_iv0_dma_addr,
1508 set_key_size_aes(&desc[idx], ctx->enc_keylen);
1509 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1);
1510 set_flow_mode(&desc[idx], S_DIN_to_AES);
1513 hw_desc_init(&desc[idx]);
1514 set_din_no_dma(&desc[idx], 0, 0xfffff0);
1515 set_dout_no_dma(&desc[idx], 0, 0, 1);
1519 hw_desc_init(&desc[idx]);
1520 set_din_type(&desc[idx], DMA_DLLI, req_ctx->mac_buf_dma_addr,
1522 set_dout_dlli(&desc[idx], mac_result, ctx->authsize, NS_BIT, 1);
1523 set_queue_last_ind(ctx->drvdata, &desc[idx]);
1524 set_flow_mode(&desc[idx], DIN_AES_DOUT);
1614 struct cc_hw_desc desc[], unsigned int *seq_size)
1622 hw_desc_init(&desc[idx]);
1623 set_cipher_mode(&desc[idx], DRV_CIPHER_ECB);
1624 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT);
1625 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr,
1627 set_key_size_aes(&desc[idx], ctx->enc_keylen);
1628 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
1629 set_flow_mode(&desc[idx], S_DIN_to_AES);
1633 hw_desc_init(&desc[idx]);
1634 set_din_const(&desc[idx], 0x0, AES_BLOCK_SIZE);
1635 set_dout_dlli(&desc[idx], req_ctx->hkey_dma_addr, AES_BLOCK_SIZE,
1637 set_flow_mode(&desc[idx], DIN_AES_DOUT);
1641 hw_desc_init(&desc[idx]);
1642 set_din_no_dma(&desc[idx], 0, 0xfffff0);
1643 set_dout_no_dma(&desc[idx], 0, 0, 1);
1647 hw_desc_init(&desc[idx]);
1648 set_din_type(&desc[idx], DMA_DLLI, req_ctx->hkey_dma_addr,
1650 set_dout_no_dma(&desc[idx], 0, 0, 1);
1651 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1652 set_aes_not_hash_mode(&desc[idx]);
1653 set_cipher_mode(&desc[idx], DRV_HASH_HW_GHASH);
1654 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED);
1655 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
1663 hw_desc_init(&desc[idx]);
1664 set_din_no_dma(&desc[idx], 0, 0xfffff0);
1665 set_dout_no_dma(&desc[idx], 0, 0, 1);
1666 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1667 set_aes_not_hash_mode(&desc[idx]);
1668 set_cipher_mode(&desc[idx], DRV_HASH_HW_GHASH);
1669 set_cipher_do(&desc[idx], 1); //1=AES_SK RKEK
1670 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT);
1671 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED);
1672 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
1678 hw_desc_init(&desc[idx]);
1679 set_din_const(&desc[idx], 0x0, AES_BLOCK_SIZE);
1680 set_dout_no_dma(&desc[idx], 0, 0, 1);
1681 set_flow_mode(&desc[idx], S_DIN_to_HASH);
1682 set_aes_not_hash_mode(&desc[idx]);
1683 set_cipher_mode(&desc[idx], DRV_HASH_HW_GHASH);
1684 set_cipher_config1(&desc[idx], HASH_PADDING_ENABLED);
1685 set_setup_mode(&desc[idx], SETUP_LOAD_STATE0);
1691 static void cc_set_gctr_desc(struct aead_request *req, struct cc_hw_desc desc[],
1700 hw_desc_init(&desc[idx]);
1701 set_cipher_mode(&desc[idx], DRV_CIPHER_GCTR);
1702 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT);
1703 set_din_type(&desc[idx], DMA_DLLI, ctx->enckey_dma_addr,
1705 set_key_size_aes(&desc[idx], ctx->enc_keylen);
1706 set_setup_mode(&desc[idx], SETUP_LOAD_KEY0);
1707 set_flow_mode(&desc[idx], S_DIN_to_AES);
1712 hw_desc_init(&desc[idx]);
1713 set_cipher_mode(&desc[idx], DRV_CIPHER_GCTR);
1714 set_key_size_aes(&desc[idx], ctx->enc_keylen);
1715 set_din_type(&desc[idx], DMA_DLLI,
1718 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT);
1719 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1);
1720 set_flow_mode(&desc[idx], S_DIN_to_AES);
1728 struct cc_hw_desc desc[],
1744 hw_desc_init(&desc[idx]);
1745 set_din_type(&desc[idx], DMA_DLLI, req_ctx->gcm_block_len_dma_addr,
1747 set_flow_mode(&desc[idx], DIN_HASH);
1751 hw_desc_init(&desc[idx]);
1752 set_cipher_mode(&desc[idx], DRV_HASH_HW_GHASH);
1753 set_din_no_dma(&desc[idx], 0, 0xfffff0);
1754 set_dout_dlli(&desc[idx], req_ctx->mac_buf_dma_addr, AES_BLOCK_SIZE,
1756 set_setup_mode(&desc[idx], SETUP_WRITE_STATE0);
1757 set_flow_mode(&desc[idx], S_HASH_to_DOUT);
1758 set_aes_not_hash_mode(&desc[idx]);
1763 hw_desc_init(&desc[idx]);
1764 set_cipher_mode(&desc[idx], DRV_CIPHER_GCTR);
1765 set_key_size_aes(&desc[idx], ctx->enc_keylen);
1766 set_din_type(&desc[idx], DMA_DLLI, req_ctx->gcm_iv_inc1_dma_addr,
1768 set_cipher_config0(&desc[idx], DRV_CRYPTO_DIRECTION_ENCRYPT);
1769 set_setup_mode(&desc[idx], SETUP_LOAD_STATE1);
1770 set_flow_mode(&desc[idx], S_DIN_to_AES);
1774 hw_desc_init(&desc[idx]);
1775 set_din_no_dma(&desc[idx], 0, 0xfffff0);
1776 set_dout_no_dma(&desc[idx], 0, 0, 1);
1780 hw_desc_init(&desc[idx]);
1781 set_cipher_mode(&desc[idx], DRV_CIPHER_GCTR);
1782 set_din_type(&desc[idx], DMA_DLLI, req_ctx->mac_buf_dma_addr,
1784 set_dout_dlli(&desc[idx], mac_result, ctx->authsize, NS_BIT, 1);
1785 set_queue_last_ind(ctx->drvdata, &desc[idx]);
1786 set_flow_mode(&desc[idx], DIN_AES_DOUT);
1792 static int cc_gcm(struct aead_request *req, struct cc_hw_desc desc[],
1800 cc_proc_cipher_desc(req, BYPASS, desc, seq_size);
1801 cc_set_ghash_desc(req, desc, seq_size);
1803 cc_set_assoc_desc(req, DIN_HASH, desc, seq_size);
1804 cc_set_gctr_desc(req, desc, seq_size);
1805 cc_proc_gcm_result(req, desc, seq_size);
1816 cc_set_ghash_desc(req, desc, seq_size);
1819 cc_set_assoc_desc(req, DIN_HASH, desc, seq_size);
1820 cc_set_gctr_desc(req, desc, seq_size);
1823 cc_proc_cipher_desc(req, cipher_flow_mode, desc, seq_size);
1824 cc_proc_gcm_result(req, desc, seq_size);
1896 struct cc_hw_desc desc[MAX_AEAD_PROCESS_SEQ];
1984 cc_mlli_to_sram(req, desc, &seq_len);
1989 cc_hmac_authenc(req, desc, &seq_len);
1992 cc_xcbc_authenc(req, desc, &seq_len);
1996 cc_ccm(req, desc, &seq_len);
1998 cc_gcm(req, desc, &seq_len);
2009 rc = cc_send_request(ctx->drvdata, &cc_req, desc, seq_len, &req->base);