Lines Matching refs:op
191 static int ccp_do_cmd(struct ccp_op *op, u32 *cr, unsigned int cr_count) in ccp_do_cmd() argument
193 struct ccp_cmd_queue *cmd_q = op->cmd_q; in ccp_do_cmd()
207 | (op->jobid << REQ0_JOBID_SHIFT) in ccp_do_cmd()
210 if (op->soc) in ccp_do_cmd()
214 if (op->ioc || !cmd_q->free_slots) in ccp_do_cmd()
239 | op->jobid; in ccp_do_cmd()
245 } else if (op->soc) { in ccp_do_cmd()
249 | op->jobid; in ccp_do_cmd()
262 static int ccp_perform_aes(struct ccp_op *op) in ccp_perform_aes() argument
268 | (op->u.aes.type << REQ1_AES_TYPE_SHIFT) in ccp_perform_aes()
269 | (op->u.aes.mode << REQ1_AES_MODE_SHIFT) in ccp_perform_aes()
270 | (op->u.aes.action << REQ1_AES_ACTION_SHIFT) in ccp_perform_aes()
271 | (op->ksb_key << REQ1_KEY_KSB_SHIFT); in ccp_perform_aes()
272 cr[1] = op->src.u.dma.length - 1; in ccp_perform_aes()
273 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_aes()
274 cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) in ccp_perform_aes()
276 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_aes()
277 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_aes()
279 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_aes()
281 if (op->u.aes.mode == CCP_AES_MODE_CFB) in ccp_perform_aes()
284 if (op->eom) in ccp_perform_aes()
287 if (op->init) in ccp_perform_aes()
290 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_aes()
293 static int ccp_perform_xts_aes(struct ccp_op *op) in ccp_perform_xts_aes() argument
299 | (op->u.xts.action << REQ1_AES_ACTION_SHIFT) in ccp_perform_xts_aes()
300 | (op->u.xts.unit_size << REQ1_XTS_AES_SIZE_SHIFT) in ccp_perform_xts_aes()
301 | (op->ksb_key << REQ1_KEY_KSB_SHIFT); in ccp_perform_xts_aes()
302 cr[1] = op->src.u.dma.length - 1; in ccp_perform_xts_aes()
303 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_xts_aes()
304 cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) in ccp_perform_xts_aes()
306 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_xts_aes()
307 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_xts_aes()
309 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_xts_aes()
311 if (op->eom) in ccp_perform_xts_aes()
314 if (op->init) in ccp_perform_xts_aes()
317 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_xts_aes()
320 static int ccp_perform_sha(struct ccp_op *op) in ccp_perform_sha() argument
326 | (op->u.sha.type << REQ1_SHA_TYPE_SHIFT) in ccp_perform_sha()
328 cr[1] = op->src.u.dma.length - 1; in ccp_perform_sha()
329 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_sha()
330 cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) in ccp_perform_sha()
332 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_sha()
334 if (op->eom) { in ccp_perform_sha()
336 cr[4] = lower_32_bits(op->u.sha.msg_bits); in ccp_perform_sha()
337 cr[5] = upper_32_bits(op->u.sha.msg_bits); in ccp_perform_sha()
343 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_sha()
346 static int ccp_perform_rsa(struct ccp_op *op) in ccp_perform_rsa() argument
352 | (op->u.rsa.mod_size << REQ1_RSA_MOD_SIZE_SHIFT) in ccp_perform_rsa()
353 | (op->ksb_key << REQ1_KEY_KSB_SHIFT) in ccp_perform_rsa()
355 cr[1] = op->u.rsa.input_len - 1; in ccp_perform_rsa()
356 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_rsa()
357 cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) in ccp_perform_rsa()
359 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_rsa()
360 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_rsa()
362 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_rsa()
364 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_rsa()
367 static int ccp_perform_passthru(struct ccp_op *op) in ccp_perform_passthru() argument
373 | (op->u.passthru.bit_mod << REQ1_PT_BW_SHIFT) in ccp_perform_passthru()
374 | (op->u.passthru.byte_swap << REQ1_PT_BS_SHIFT); in ccp_perform_passthru()
376 if (op->src.type == CCP_MEMTYPE_SYSTEM) in ccp_perform_passthru()
377 cr[1] = op->src.u.dma.length - 1; in ccp_perform_passthru()
379 cr[1] = op->dst.u.dma.length - 1; in ccp_perform_passthru()
381 if (op->src.type == CCP_MEMTYPE_SYSTEM) { in ccp_perform_passthru()
382 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_passthru()
384 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_passthru()
386 if (op->u.passthru.bit_mod != CCP_PASSTHRU_BITWISE_NOOP) in ccp_perform_passthru()
387 cr[3] |= (op->ksb_key << REQ4_KSB_SHIFT); in ccp_perform_passthru()
389 cr[2] = op->src.u.ksb * CCP_KSB_BYTES; in ccp_perform_passthru()
393 if (op->dst.type == CCP_MEMTYPE_SYSTEM) { in ccp_perform_passthru()
394 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_passthru()
396 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_passthru()
398 cr[4] = op->dst.u.ksb * CCP_KSB_BYTES; in ccp_perform_passthru()
402 if (op->eom) in ccp_perform_passthru()
405 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_passthru()
408 static int ccp_perform_ecc(struct ccp_op *op) in ccp_perform_ecc() argument
415 | (op->u.ecc.function << REQ1_ECC_FUNCTION_SHIFT) in ccp_perform_ecc()
417 cr[1] = op->src.u.dma.length - 1; in ccp_perform_ecc()
418 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_ecc()
420 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_ecc()
421 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_ecc()
423 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_ecc()
425 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_ecc()
751 struct ccp_op *op, unsigned int block_size, in ccp_prepare_data() argument
779 op->soc = 0; in ccp_prepare_data()
787 op->soc = 1; in ccp_prepare_data()
788 op->src.u.dma.address = src->dm_wa.dma.address; in ccp_prepare_data()
789 op->src.u.dma.offset = 0; in ccp_prepare_data()
790 op->src.u.dma.length = (blocksize_op) ? block_size : cp_len; in ccp_prepare_data()
795 op->src.u.dma.address = sg_dma_address(src->sg_wa.sg); in ccp_prepare_data()
796 op->src.u.dma.offset = src->sg_wa.sg_used; in ccp_prepare_data()
797 op->src.u.dma.length = op_len & ~(block_size - 1); in ccp_prepare_data()
799 ccp_update_sg_workarea(&src->sg_wa, op->src.u.dma.length); in ccp_prepare_data()
808 op->soc = 1; in ccp_prepare_data()
809 op->dst.u.dma.address = dst->dm_wa.dma.address; in ccp_prepare_data()
810 op->dst.u.dma.offset = 0; in ccp_prepare_data()
811 op->dst.u.dma.length = op->src.u.dma.length; in ccp_prepare_data()
816 op->dst.u.dma.address = sg_dma_address(dst->sg_wa.sg); in ccp_prepare_data()
817 op->dst.u.dma.offset = dst->sg_wa.sg_used; in ccp_prepare_data()
818 op->dst.u.dma.length = op->src.u.dma.length; in ccp_prepare_data()
824 struct ccp_op *op) in ccp_process_data() argument
826 op->init = 0; in ccp_process_data()
829 if (op->dst.u.dma.address == dst->dm_wa.dma.address) in ccp_process_data()
833 op->dst.u.dma.length); in ccp_process_data()
841 struct ccp_op op; in ccp_copy_to_from_ksb() local
843 memset(&op, 0, sizeof(op)); in ccp_copy_to_from_ksb()
845 op.cmd_q = cmd_q; in ccp_copy_to_from_ksb()
846 op.jobid = jobid; in ccp_copy_to_from_ksb()
847 op.eom = 1; in ccp_copy_to_from_ksb()
850 op.soc = 1; in ccp_copy_to_from_ksb()
851 op.src.type = CCP_MEMTYPE_KSB; in ccp_copy_to_from_ksb()
852 op.src.u.ksb = ksb; in ccp_copy_to_from_ksb()
853 op.dst.type = CCP_MEMTYPE_SYSTEM; in ccp_copy_to_from_ksb()
854 op.dst.u.dma.address = wa->dma.address; in ccp_copy_to_from_ksb()
855 op.dst.u.dma.length = wa->length; in ccp_copy_to_from_ksb()
857 op.src.type = CCP_MEMTYPE_SYSTEM; in ccp_copy_to_from_ksb()
858 op.src.u.dma.address = wa->dma.address; in ccp_copy_to_from_ksb()
859 op.src.u.dma.length = wa->length; in ccp_copy_to_from_ksb()
860 op.dst.type = CCP_MEMTYPE_KSB; in ccp_copy_to_from_ksb()
861 op.dst.u.ksb = ksb; in ccp_copy_to_from_ksb()
864 op.u.passthru.byte_swap = byte_swap; in ccp_copy_to_from_ksb()
866 return ccp_perform_passthru(&op); in ccp_copy_to_from_ksb()
889 struct ccp_op op; in ccp_run_aes_cmac_cmd() local
919 memset(&op, 0, sizeof(op)); in ccp_run_aes_cmac_cmd()
920 op.cmd_q = cmd_q; in ccp_run_aes_cmac_cmd()
921 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_aes_cmac_cmd()
922 op.ksb_key = cmd_q->ksb_key; in ccp_run_aes_cmac_cmd()
923 op.ksb_ctx = cmd_q->ksb_ctx; in ccp_run_aes_cmac_cmd()
924 op.init = 1; in ccp_run_aes_cmac_cmd()
925 op.u.aes.type = aes->type; in ccp_run_aes_cmac_cmd()
926 op.u.aes.mode = aes->mode; in ccp_run_aes_cmac_cmd()
927 op.u.aes.action = aes->action; in ccp_run_aes_cmac_cmd()
942 ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, in ccp_run_aes_cmac_cmd()
961 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmac_cmd()
975 ccp_prepare_data(&src, NULL, &op, AES_BLOCK_SIZE, true); in ccp_run_aes_cmac_cmd()
977 op.eom = 1; in ccp_run_aes_cmac_cmd()
980 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, in ccp_run_aes_cmac_cmd()
981 op.ksb_ctx, in ccp_run_aes_cmac_cmd()
990 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmac_cmd()
998 ret = ccp_perform_aes(&op); in ccp_run_aes_cmac_cmd()
1004 ccp_process_data(&src, NULL, &op); in ccp_run_aes_cmac_cmd()
1010 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmac_cmd()
1038 struct ccp_op op; in ccp_run_aes_cmd() local
1072 memset(&op, 0, sizeof(op)); in ccp_run_aes_cmd()
1073 op.cmd_q = cmd_q; in ccp_run_aes_cmd()
1074 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_aes_cmd()
1075 op.ksb_key = cmd_q->ksb_key; in ccp_run_aes_cmd()
1076 op.ksb_ctx = cmd_q->ksb_ctx; in ccp_run_aes_cmd()
1077 op.init = (aes->mode == CCP_AES_MODE_ECB) ? 0 : 1; in ccp_run_aes_cmd()
1078 op.u.aes.type = aes->type; in ccp_run_aes_cmd()
1079 op.u.aes.mode = aes->mode; in ccp_run_aes_cmd()
1080 op.u.aes.action = aes->action; in ccp_run_aes_cmd()
1095 ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, in ccp_run_aes_cmd()
1116 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmd()
1148 ccp_prepare_data(&src, &dst, &op, AES_BLOCK_SIZE, true); in ccp_run_aes_cmd()
1150 op.eom = 1; in ccp_run_aes_cmd()
1157 op.soc = 1; in ccp_run_aes_cmd()
1160 ret = ccp_perform_aes(&op); in ccp_run_aes_cmd()
1166 ccp_process_data(&src, &dst, &op); in ccp_run_aes_cmd()
1173 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmd()
1207 struct ccp_op op; in ccp_run_xts_aes_cmd() local
1249 memset(&op, 0, sizeof(op)); in ccp_run_xts_aes_cmd()
1250 op.cmd_q = cmd_q; in ccp_run_xts_aes_cmd()
1251 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_xts_aes_cmd()
1252 op.ksb_key = cmd_q->ksb_key; in ccp_run_xts_aes_cmd()
1253 op.ksb_ctx = cmd_q->ksb_ctx; in ccp_run_xts_aes_cmd()
1254 op.init = 1; in ccp_run_xts_aes_cmd()
1255 op.u.xts.action = xts->action; in ccp_run_xts_aes_cmd()
1256 op.u.xts.unit_size = xts->unit_size; in ccp_run_xts_aes_cmd()
1272 ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, in ccp_run_xts_aes_cmd()
1290 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_xts_aes_cmd()
1321 ccp_prepare_data(&src, &dst, &op, unit_size, true); in ccp_run_xts_aes_cmd()
1323 op.eom = 1; in ccp_run_xts_aes_cmd()
1325 ret = ccp_perform_xts_aes(&op); in ccp_run_xts_aes_cmd()
1331 ccp_process_data(&src, &dst, &op); in ccp_run_xts_aes_cmd()
1337 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_xts_aes_cmd()
1369 struct ccp_op op; in ccp_run_sha_cmd() local
1422 memset(&op, 0, sizeof(op)); in ccp_run_sha_cmd()
1423 op.cmd_q = cmd_q; in ccp_run_sha_cmd()
1424 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_sha_cmd()
1425 op.ksb_ctx = cmd_q->ksb_ctx; in ccp_run_sha_cmd()
1426 op.u.sha.type = sha->type; in ccp_run_sha_cmd()
1427 op.u.sha.msg_bits = sha->msg_bits; in ccp_run_sha_cmd()
1461 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_sha_cmd()
1475 ccp_prepare_data(&src, NULL, &op, CCP_SHA_BLOCKSIZE, false); in ccp_run_sha_cmd()
1477 op.eom = 1; in ccp_run_sha_cmd()
1479 ret = ccp_perform_sha(&op); in ccp_run_sha_cmd()
1485 ccp_process_data(&src, NULL, &op); in ccp_run_sha_cmd()
1491 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_sha_cmd()
1574 struct ccp_op op; in ccp_run_rsa_cmd() local
1595 memset(&op, 0, sizeof(op)); in ccp_run_rsa_cmd()
1596 op.cmd_q = cmd_q; in ccp_run_rsa_cmd()
1597 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_rsa_cmd()
1598 op.ksb_key = ccp_alloc_ksb(cmd_q->ccp, ksb_count); in ccp_run_rsa_cmd()
1599 if (!op.ksb_key) in ccp_run_rsa_cmd()
1616 ret = ccp_copy_to_ksb(cmd_q, &exp, op.jobid, op.ksb_key, in ccp_run_rsa_cmd()
1648 op.soc = 1; in ccp_run_rsa_cmd()
1649 op.src.u.dma.address = src.dma.address; in ccp_run_rsa_cmd()
1650 op.src.u.dma.offset = 0; in ccp_run_rsa_cmd()
1651 op.src.u.dma.length = i_len; in ccp_run_rsa_cmd()
1652 op.dst.u.dma.address = dst.dm_wa.dma.address; in ccp_run_rsa_cmd()
1653 op.dst.u.dma.offset = 0; in ccp_run_rsa_cmd()
1654 op.dst.u.dma.length = o_len; in ccp_run_rsa_cmd()
1656 op.u.rsa.mod_size = rsa->key_size; in ccp_run_rsa_cmd()
1657 op.u.rsa.input_len = i_len; in ccp_run_rsa_cmd()
1659 ret = ccp_perform_rsa(&op); in ccp_run_rsa_cmd()
1677 ccp_free_ksb(cmd_q->ccp, op.ksb_key, ksb_count); in ccp_run_rsa_cmd()
1688 struct ccp_op op; in ccp_run_passthru_cmd() local
1708 memset(&op, 0, sizeof(op)); in ccp_run_passthru_cmd()
1709 op.cmd_q = cmd_q; in ccp_run_passthru_cmd()
1710 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_passthru_cmd()
1714 op.ksb_key = cmd_q->ksb_key; in ccp_run_passthru_cmd()
1724 ret = ccp_copy_to_ksb(cmd_q, &mask, op.jobid, op.ksb_key, in ccp_run_passthru_cmd()
1770 op.eom = 1; in ccp_run_passthru_cmd()
1771 op.soc = 1; in ccp_run_passthru_cmd()
1774 op.src.type = CCP_MEMTYPE_SYSTEM; in ccp_run_passthru_cmd()
1775 op.src.u.dma.address = sg_dma_address(src.sg_wa.sg); in ccp_run_passthru_cmd()
1776 op.src.u.dma.offset = 0; in ccp_run_passthru_cmd()
1777 op.src.u.dma.length = sg_dma_len(src.sg_wa.sg); in ccp_run_passthru_cmd()
1779 op.dst.type = CCP_MEMTYPE_SYSTEM; in ccp_run_passthru_cmd()
1780 op.dst.u.dma.address = sg_dma_address(dst.sg_wa.sg); in ccp_run_passthru_cmd()
1781 op.dst.u.dma.offset = dst.sg_wa.sg_used; in ccp_run_passthru_cmd()
1782 op.dst.u.dma.length = op.src.u.dma.length; in ccp_run_passthru_cmd()
1784 ret = ccp_perform_passthru(&op); in ccp_run_passthru_cmd()
1816 struct ccp_op op; in ccp_run_ecc_mm_cmd() local
1833 memset(&op, 0, sizeof(op)); in ccp_run_ecc_mm_cmd()
1834 op.cmd_q = cmd_q; in ccp_run_ecc_mm_cmd()
1835 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_ecc_mm_cmd()
1886 op.soc = 1; in ccp_run_ecc_mm_cmd()
1887 op.src.u.dma.address = src.dma.address; in ccp_run_ecc_mm_cmd()
1888 op.src.u.dma.offset = 0; in ccp_run_ecc_mm_cmd()
1889 op.src.u.dma.length = src.length; in ccp_run_ecc_mm_cmd()
1890 op.dst.u.dma.address = dst.dma.address; in ccp_run_ecc_mm_cmd()
1891 op.dst.u.dma.offset = 0; in ccp_run_ecc_mm_cmd()
1892 op.dst.u.dma.length = dst.length; in ccp_run_ecc_mm_cmd()
1894 op.u.ecc.function = cmd->u.ecc.function; in ccp_run_ecc_mm_cmd()
1896 ret = ccp_perform_ecc(&op); in ccp_run_ecc_mm_cmd()
1925 struct ccp_op op; in ccp_run_ecc_pm_cmd() local
1958 memset(&op, 0, sizeof(op)); in ccp_run_ecc_pm_cmd()
1959 op.cmd_q = cmd_q; in ccp_run_ecc_pm_cmd()
1960 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_ecc_pm_cmd()
2050 op.soc = 1; in ccp_run_ecc_pm_cmd()
2051 op.src.u.dma.address = src.dma.address; in ccp_run_ecc_pm_cmd()
2052 op.src.u.dma.offset = 0; in ccp_run_ecc_pm_cmd()
2053 op.src.u.dma.length = src.length; in ccp_run_ecc_pm_cmd()
2054 op.dst.u.dma.address = dst.dma.address; in ccp_run_ecc_pm_cmd()
2055 op.dst.u.dma.offset = 0; in ccp_run_ecc_pm_cmd()
2056 op.dst.u.dma.length = dst.length; in ccp_run_ecc_pm_cmd()
2058 op.u.ecc.function = cmd->u.ecc.function; in ccp_run_ecc_pm_cmd()
2060 ret = ccp_perform_ecc(&op); in ccp_run_ecc_pm_cmd()