Lines Matching refs:op
192 static int ccp_do_cmd(struct ccp_op *op, u32 *cr, unsigned int cr_count) in ccp_do_cmd() argument
194 struct ccp_cmd_queue *cmd_q = op->cmd_q; in ccp_do_cmd()
208 | (op->jobid << REQ0_JOBID_SHIFT) in ccp_do_cmd()
211 if (op->soc) in ccp_do_cmd()
215 if (op->ioc || !cmd_q->free_slots) in ccp_do_cmd()
240 | op->jobid; in ccp_do_cmd()
246 } else if (op->soc) { in ccp_do_cmd()
250 | op->jobid; in ccp_do_cmd()
263 static int ccp_perform_aes(struct ccp_op *op) in ccp_perform_aes() argument
269 | (op->u.aes.type << REQ1_AES_TYPE_SHIFT) in ccp_perform_aes()
270 | (op->u.aes.mode << REQ1_AES_MODE_SHIFT) in ccp_perform_aes()
271 | (op->u.aes.action << REQ1_AES_ACTION_SHIFT) in ccp_perform_aes()
272 | (op->ksb_key << REQ1_KEY_KSB_SHIFT); in ccp_perform_aes()
273 cr[1] = op->src.u.dma.length - 1; in ccp_perform_aes()
274 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_aes()
275 cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) in ccp_perform_aes()
277 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_aes()
278 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_aes()
280 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_aes()
282 if (op->u.aes.mode == CCP_AES_MODE_CFB) in ccp_perform_aes()
285 if (op->eom) in ccp_perform_aes()
288 if (op->init) in ccp_perform_aes()
291 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_aes()
294 static int ccp_perform_xts_aes(struct ccp_op *op) in ccp_perform_xts_aes() argument
300 | (op->u.xts.action << REQ1_AES_ACTION_SHIFT) in ccp_perform_xts_aes()
301 | (op->u.xts.unit_size << REQ1_XTS_AES_SIZE_SHIFT) in ccp_perform_xts_aes()
302 | (op->ksb_key << REQ1_KEY_KSB_SHIFT); in ccp_perform_xts_aes()
303 cr[1] = op->src.u.dma.length - 1; in ccp_perform_xts_aes()
304 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_xts_aes()
305 cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) in ccp_perform_xts_aes()
307 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_xts_aes()
308 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_xts_aes()
310 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_xts_aes()
312 if (op->eom) in ccp_perform_xts_aes()
315 if (op->init) in ccp_perform_xts_aes()
318 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_xts_aes()
321 static int ccp_perform_sha(struct ccp_op *op) in ccp_perform_sha() argument
327 | (op->u.sha.type << REQ1_SHA_TYPE_SHIFT) in ccp_perform_sha()
329 cr[1] = op->src.u.dma.length - 1; in ccp_perform_sha()
330 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_sha()
331 cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) in ccp_perform_sha()
333 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_sha()
335 if (op->eom) { in ccp_perform_sha()
337 cr[4] = lower_32_bits(op->u.sha.msg_bits); in ccp_perform_sha()
338 cr[5] = upper_32_bits(op->u.sha.msg_bits); in ccp_perform_sha()
344 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_sha()
347 static int ccp_perform_rsa(struct ccp_op *op) in ccp_perform_rsa() argument
353 | (op->u.rsa.mod_size << REQ1_RSA_MOD_SIZE_SHIFT) in ccp_perform_rsa()
354 | (op->ksb_key << REQ1_KEY_KSB_SHIFT) in ccp_perform_rsa()
356 cr[1] = op->u.rsa.input_len - 1; in ccp_perform_rsa()
357 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_rsa()
358 cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) in ccp_perform_rsa()
360 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_rsa()
361 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_rsa()
363 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_rsa()
365 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_rsa()
368 static int ccp_perform_passthru(struct ccp_op *op) in ccp_perform_passthru() argument
374 | (op->u.passthru.bit_mod << REQ1_PT_BW_SHIFT) in ccp_perform_passthru()
375 | (op->u.passthru.byte_swap << REQ1_PT_BS_SHIFT); in ccp_perform_passthru()
377 if (op->src.type == CCP_MEMTYPE_SYSTEM) in ccp_perform_passthru()
378 cr[1] = op->src.u.dma.length - 1; in ccp_perform_passthru()
380 cr[1] = op->dst.u.dma.length - 1; in ccp_perform_passthru()
382 if (op->src.type == CCP_MEMTYPE_SYSTEM) { in ccp_perform_passthru()
383 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_passthru()
385 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_passthru()
387 if (op->u.passthru.bit_mod != CCP_PASSTHRU_BITWISE_NOOP) in ccp_perform_passthru()
388 cr[3] |= (op->ksb_key << REQ4_KSB_SHIFT); in ccp_perform_passthru()
390 cr[2] = op->src.u.ksb * CCP_KSB_BYTES; in ccp_perform_passthru()
394 if (op->dst.type == CCP_MEMTYPE_SYSTEM) { in ccp_perform_passthru()
395 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_passthru()
397 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_passthru()
399 cr[4] = op->dst.u.ksb * CCP_KSB_BYTES; in ccp_perform_passthru()
403 if (op->eom) in ccp_perform_passthru()
406 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_passthru()
409 static int ccp_perform_ecc(struct ccp_op *op) in ccp_perform_ecc() argument
416 | (op->u.ecc.function << REQ1_ECC_FUNCTION_SHIFT) in ccp_perform_ecc()
418 cr[1] = op->src.u.dma.length - 1; in ccp_perform_ecc()
419 cr[2] = ccp_addr_lo(&op->src.u.dma); in ccp_perform_ecc()
421 | ccp_addr_hi(&op->src.u.dma); in ccp_perform_ecc()
422 cr[4] = ccp_addr_lo(&op->dst.u.dma); in ccp_perform_ecc()
424 | ccp_addr_hi(&op->dst.u.dma); in ccp_perform_ecc()
426 return ccp_do_cmd(op, cr, ARRAY_SIZE(cr)); in ccp_perform_ecc()
747 struct ccp_op *op, unsigned int block_size, in ccp_prepare_data() argument
775 op->soc = 0; in ccp_prepare_data()
783 op->soc = 1; in ccp_prepare_data()
784 op->src.u.dma.address = src->dm_wa.dma.address; in ccp_prepare_data()
785 op->src.u.dma.offset = 0; in ccp_prepare_data()
786 op->src.u.dma.length = (blocksize_op) ? block_size : cp_len; in ccp_prepare_data()
791 op->src.u.dma.address = sg_dma_address(src->sg_wa.sg); in ccp_prepare_data()
792 op->src.u.dma.offset = src->sg_wa.sg_used; in ccp_prepare_data()
793 op->src.u.dma.length = op_len & ~(block_size - 1); in ccp_prepare_data()
795 ccp_update_sg_workarea(&src->sg_wa, op->src.u.dma.length); in ccp_prepare_data()
804 op->soc = 1; in ccp_prepare_data()
805 op->dst.u.dma.address = dst->dm_wa.dma.address; in ccp_prepare_data()
806 op->dst.u.dma.offset = 0; in ccp_prepare_data()
807 op->dst.u.dma.length = op->src.u.dma.length; in ccp_prepare_data()
812 op->dst.u.dma.address = sg_dma_address(dst->sg_wa.sg); in ccp_prepare_data()
813 op->dst.u.dma.offset = dst->sg_wa.sg_used; in ccp_prepare_data()
814 op->dst.u.dma.length = op->src.u.dma.length; in ccp_prepare_data()
820 struct ccp_op *op) in ccp_process_data() argument
822 op->init = 0; in ccp_process_data()
825 if (op->dst.u.dma.address == dst->dm_wa.dma.address) in ccp_process_data()
829 op->dst.u.dma.length); in ccp_process_data()
837 struct ccp_op op; in ccp_copy_to_from_ksb() local
839 memset(&op, 0, sizeof(op)); in ccp_copy_to_from_ksb()
841 op.cmd_q = cmd_q; in ccp_copy_to_from_ksb()
842 op.jobid = jobid; in ccp_copy_to_from_ksb()
843 op.eom = 1; in ccp_copy_to_from_ksb()
846 op.soc = 1; in ccp_copy_to_from_ksb()
847 op.src.type = CCP_MEMTYPE_KSB; in ccp_copy_to_from_ksb()
848 op.src.u.ksb = ksb; in ccp_copy_to_from_ksb()
849 op.dst.type = CCP_MEMTYPE_SYSTEM; in ccp_copy_to_from_ksb()
850 op.dst.u.dma.address = wa->dma.address; in ccp_copy_to_from_ksb()
851 op.dst.u.dma.length = wa->length; in ccp_copy_to_from_ksb()
853 op.src.type = CCP_MEMTYPE_SYSTEM; in ccp_copy_to_from_ksb()
854 op.src.u.dma.address = wa->dma.address; in ccp_copy_to_from_ksb()
855 op.src.u.dma.length = wa->length; in ccp_copy_to_from_ksb()
856 op.dst.type = CCP_MEMTYPE_KSB; in ccp_copy_to_from_ksb()
857 op.dst.u.ksb = ksb; in ccp_copy_to_from_ksb()
860 op.u.passthru.byte_swap = byte_swap; in ccp_copy_to_from_ksb()
862 return ccp_perform_passthru(&op); in ccp_copy_to_from_ksb()
885 struct ccp_op op; in ccp_run_aes_cmac_cmd() local
915 memset(&op, 0, sizeof(op)); in ccp_run_aes_cmac_cmd()
916 op.cmd_q = cmd_q; in ccp_run_aes_cmac_cmd()
917 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_aes_cmac_cmd()
918 op.ksb_key = cmd_q->ksb_key; in ccp_run_aes_cmac_cmd()
919 op.ksb_ctx = cmd_q->ksb_ctx; in ccp_run_aes_cmac_cmd()
920 op.init = 1; in ccp_run_aes_cmac_cmd()
921 op.u.aes.type = aes->type; in ccp_run_aes_cmac_cmd()
922 op.u.aes.mode = aes->mode; in ccp_run_aes_cmac_cmd()
923 op.u.aes.action = aes->action; in ccp_run_aes_cmac_cmd()
938 ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, in ccp_run_aes_cmac_cmd()
957 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmac_cmd()
971 ccp_prepare_data(&src, NULL, &op, AES_BLOCK_SIZE, true); in ccp_run_aes_cmac_cmd()
973 op.eom = 1; in ccp_run_aes_cmac_cmd()
976 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, in ccp_run_aes_cmac_cmd()
977 op.ksb_ctx, in ccp_run_aes_cmac_cmd()
986 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmac_cmd()
994 ret = ccp_perform_aes(&op); in ccp_run_aes_cmac_cmd()
1000 ccp_process_data(&src, NULL, &op); in ccp_run_aes_cmac_cmd()
1006 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmac_cmd()
1034 struct ccp_op op; in ccp_run_aes_cmd() local
1068 memset(&op, 0, sizeof(op)); in ccp_run_aes_cmd()
1069 op.cmd_q = cmd_q; in ccp_run_aes_cmd()
1070 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_aes_cmd()
1071 op.ksb_key = cmd_q->ksb_key; in ccp_run_aes_cmd()
1072 op.ksb_ctx = cmd_q->ksb_ctx; in ccp_run_aes_cmd()
1073 op.init = (aes->mode == CCP_AES_MODE_ECB) ? 0 : 1; in ccp_run_aes_cmd()
1074 op.u.aes.type = aes->type; in ccp_run_aes_cmd()
1075 op.u.aes.mode = aes->mode; in ccp_run_aes_cmd()
1076 op.u.aes.action = aes->action; in ccp_run_aes_cmd()
1091 ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, in ccp_run_aes_cmd()
1112 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmd()
1144 ccp_prepare_data(&src, &dst, &op, AES_BLOCK_SIZE, true); in ccp_run_aes_cmd()
1146 op.eom = 1; in ccp_run_aes_cmd()
1153 op.soc = 1; in ccp_run_aes_cmd()
1156 ret = ccp_perform_aes(&op); in ccp_run_aes_cmd()
1162 ccp_process_data(&src, &dst, &op); in ccp_run_aes_cmd()
1169 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmd()
1203 struct ccp_op op; in ccp_run_xts_aes_cmd() local
1245 memset(&op, 0, sizeof(op)); in ccp_run_xts_aes_cmd()
1246 op.cmd_q = cmd_q; in ccp_run_xts_aes_cmd()
1247 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_xts_aes_cmd()
1248 op.ksb_key = cmd_q->ksb_key; in ccp_run_xts_aes_cmd()
1249 op.ksb_ctx = cmd_q->ksb_ctx; in ccp_run_xts_aes_cmd()
1250 op.init = 1; in ccp_run_xts_aes_cmd()
1251 op.u.xts.action = xts->action; in ccp_run_xts_aes_cmd()
1252 op.u.xts.unit_size = xts->unit_size; in ccp_run_xts_aes_cmd()
1268 ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, in ccp_run_xts_aes_cmd()
1286 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_xts_aes_cmd()
1317 ccp_prepare_data(&src, &dst, &op, unit_size, true); in ccp_run_xts_aes_cmd()
1319 op.eom = 1; in ccp_run_xts_aes_cmd()
1321 ret = ccp_perform_xts_aes(&op); in ccp_run_xts_aes_cmd()
1327 ccp_process_data(&src, &dst, &op); in ccp_run_xts_aes_cmd()
1333 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_xts_aes_cmd()
1365 struct ccp_op op; in ccp_run_sha_cmd() local
1418 memset(&op, 0, sizeof(op)); in ccp_run_sha_cmd()
1419 op.cmd_q = cmd_q; in ccp_run_sha_cmd()
1420 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_sha_cmd()
1421 op.ksb_ctx = cmd_q->ksb_ctx; in ccp_run_sha_cmd()
1422 op.u.sha.type = sha->type; in ccp_run_sha_cmd()
1423 op.u.sha.msg_bits = sha->msg_bits; in ccp_run_sha_cmd()
1457 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_sha_cmd()
1471 ccp_prepare_data(&src, NULL, &op, CCP_SHA_BLOCKSIZE, false); in ccp_run_sha_cmd()
1473 op.eom = 1; in ccp_run_sha_cmd()
1475 ret = ccp_perform_sha(&op); in ccp_run_sha_cmd()
1481 ccp_process_data(&src, NULL, &op); in ccp_run_sha_cmd()
1487 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_sha_cmd()
1570 struct ccp_op op; in ccp_run_rsa_cmd() local
1591 memset(&op, 0, sizeof(op)); in ccp_run_rsa_cmd()
1592 op.cmd_q = cmd_q; in ccp_run_rsa_cmd()
1593 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_rsa_cmd()
1594 op.ksb_key = ccp_alloc_ksb(cmd_q->ccp, ksb_count); in ccp_run_rsa_cmd()
1595 if (!op.ksb_key) in ccp_run_rsa_cmd()
1610 ret = ccp_copy_to_ksb(cmd_q, &exp, op.jobid, op.ksb_key, in ccp_run_rsa_cmd()
1638 op.soc = 1; in ccp_run_rsa_cmd()
1639 op.src.u.dma.address = src.dma.address; in ccp_run_rsa_cmd()
1640 op.src.u.dma.offset = 0; in ccp_run_rsa_cmd()
1641 op.src.u.dma.length = i_len; in ccp_run_rsa_cmd()
1642 op.dst.u.dma.address = dst.dm_wa.dma.address; in ccp_run_rsa_cmd()
1643 op.dst.u.dma.offset = 0; in ccp_run_rsa_cmd()
1644 op.dst.u.dma.length = o_len; in ccp_run_rsa_cmd()
1646 op.u.rsa.mod_size = rsa->key_size; in ccp_run_rsa_cmd()
1647 op.u.rsa.input_len = i_len; in ccp_run_rsa_cmd()
1649 ret = ccp_perform_rsa(&op); in ccp_run_rsa_cmd()
1667 ccp_free_ksb(cmd_q->ccp, op.ksb_key, ksb_count); in ccp_run_rsa_cmd()
1678 struct ccp_op op; in ccp_run_passthru_cmd() local
1698 memset(&op, 0, sizeof(op)); in ccp_run_passthru_cmd()
1699 op.cmd_q = cmd_q; in ccp_run_passthru_cmd()
1700 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_passthru_cmd()
1704 op.ksb_key = cmd_q->ksb_key; in ccp_run_passthru_cmd()
1714 ret = ccp_copy_to_ksb(cmd_q, &mask, op.jobid, op.ksb_key, in ccp_run_passthru_cmd()
1760 op.eom = 1; in ccp_run_passthru_cmd()
1761 op.soc = 1; in ccp_run_passthru_cmd()
1764 op.src.type = CCP_MEMTYPE_SYSTEM; in ccp_run_passthru_cmd()
1765 op.src.u.dma.address = sg_dma_address(src.sg_wa.sg); in ccp_run_passthru_cmd()
1766 op.src.u.dma.offset = 0; in ccp_run_passthru_cmd()
1767 op.src.u.dma.length = sg_dma_len(src.sg_wa.sg); in ccp_run_passthru_cmd()
1769 op.dst.type = CCP_MEMTYPE_SYSTEM; in ccp_run_passthru_cmd()
1770 op.dst.u.dma.address = sg_dma_address(dst.sg_wa.sg); in ccp_run_passthru_cmd()
1771 op.dst.u.dma.offset = dst.sg_wa.sg_used; in ccp_run_passthru_cmd()
1772 op.dst.u.dma.length = op.src.u.dma.length; in ccp_run_passthru_cmd()
1774 ret = ccp_perform_passthru(&op); in ccp_run_passthru_cmd()
1806 struct ccp_op op; in ccp_run_ecc_mm_cmd() local
1823 memset(&op, 0, sizeof(op)); in ccp_run_ecc_mm_cmd()
1824 op.cmd_q = cmd_q; in ccp_run_ecc_mm_cmd()
1825 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_ecc_mm_cmd()
1870 op.soc = 1; in ccp_run_ecc_mm_cmd()
1871 op.src.u.dma.address = src.dma.address; in ccp_run_ecc_mm_cmd()
1872 op.src.u.dma.offset = 0; in ccp_run_ecc_mm_cmd()
1873 op.src.u.dma.length = src.length; in ccp_run_ecc_mm_cmd()
1874 op.dst.u.dma.address = dst.dma.address; in ccp_run_ecc_mm_cmd()
1875 op.dst.u.dma.offset = 0; in ccp_run_ecc_mm_cmd()
1876 op.dst.u.dma.length = dst.length; in ccp_run_ecc_mm_cmd()
1878 op.u.ecc.function = cmd->u.ecc.function; in ccp_run_ecc_mm_cmd()
1880 ret = ccp_perform_ecc(&op); in ccp_run_ecc_mm_cmd()
1909 struct ccp_op op; in ccp_run_ecc_pm_cmd() local
1942 memset(&op, 0, sizeof(op)); in ccp_run_ecc_pm_cmd()
1943 op.cmd_q = cmd_q; in ccp_run_ecc_pm_cmd()
1944 op.jobid = ccp_gen_jobid(cmd_q->ccp); in ccp_run_ecc_pm_cmd()
2019 op.soc = 1; in ccp_run_ecc_pm_cmd()
2020 op.src.u.dma.address = src.dma.address; in ccp_run_ecc_pm_cmd()
2021 op.src.u.dma.offset = 0; in ccp_run_ecc_pm_cmd()
2022 op.src.u.dma.length = src.length; in ccp_run_ecc_pm_cmd()
2023 op.dst.u.dma.address = dst.dma.address; in ccp_run_ecc_pm_cmd()
2024 op.dst.u.dma.offset = 0; in ccp_run_ecc_pm_cmd()
2025 op.dst.u.dma.length = dst.length; in ccp_run_ecc_pm_cmd()
2027 op.u.ecc.function = cmd->u.ecc.function; in ccp_run_ecc_pm_cmd()
2029 ret = ccp_perform_ecc(&op); in ccp_run_ecc_pm_cmd()