Lines Matching refs:cmd_q
112 struct ccp_cmd_queue *cmd_q; member
194 struct ccp_cmd_queue *cmd_q = op->cmd_q; in ccp_do_cmd() local
195 struct ccp_device *ccp = cmd_q->ccp; in ccp_do_cmd()
205 cmd_q->free_slots--; in ccp_do_cmd()
207 cr0 = (cmd_q->id << REQ0_CMD_Q_SHIFT) in ccp_do_cmd()
215 if (op->ioc || !cmd_q->free_slots) in ccp_do_cmd()
235 ret = wait_event_interruptible(cmd_q->int_queue, in ccp_do_cmd()
236 cmd_q->int_rcvd); in ccp_do_cmd()
237 if (ret || cmd_q->cmd_error) { in ccp_do_cmd()
239 cmd = (cmd_q->id << DEL_Q_ID_SHIFT) in ccp_do_cmd()
249 | (cmd_q->id << DEL_Q_ID_SHIFT) in ccp_do_cmd()
255 cmd_q->free_slots = CMD_Q_DEPTH(cmd_q->q_status); in ccp_do_cmd()
257 cmd_q->int_rcvd = 0; in ccp_do_cmd()
553 struct ccp_cmd_queue *cmd_q, in ccp_init_dm_workarea() argument
562 wa->dev = cmd_q->ccp->dev; in ccp_init_dm_workarea()
566 wa->dma_pool = cmd_q->dma_pool; in ccp_init_dm_workarea()
669 static void ccp_free_data(struct ccp_data *data, struct ccp_cmd_queue *cmd_q) in ccp_free_data() argument
675 static int ccp_init_data(struct ccp_data *data, struct ccp_cmd_queue *cmd_q, in ccp_init_data() argument
684 ret = ccp_init_sg_workarea(&data->sg_wa, cmd_q->ccp->dev, sg, sg_len, in ccp_init_data()
689 ret = ccp_init_dm_workarea(&data->dm_wa, cmd_q, dm_len, dir); in ccp_init_data()
696 ccp_free_data(data, cmd_q); in ccp_init_data()
833 static int ccp_copy_to_from_ksb(struct ccp_cmd_queue *cmd_q, in ccp_copy_to_from_ksb() argument
841 op.cmd_q = cmd_q; in ccp_copy_to_from_ksb()
865 static int ccp_copy_to_ksb(struct ccp_cmd_queue *cmd_q, in ccp_copy_to_ksb() argument
869 return ccp_copy_to_from_ksb(cmd_q, wa, jobid, ksb, byte_swap, false); in ccp_copy_to_ksb()
872 static int ccp_copy_from_ksb(struct ccp_cmd_queue *cmd_q, in ccp_copy_from_ksb() argument
876 return ccp_copy_to_from_ksb(cmd_q, wa, jobid, ksb, byte_swap, true); in ccp_copy_from_ksb()
879 static int ccp_run_aes_cmac_cmd(struct ccp_cmd_queue *cmd_q, in ccp_run_aes_cmac_cmd() argument
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()
930 ret = ccp_init_dm_workarea(&key, cmd_q, 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()
941 cmd->engine_error = cmd_q->cmd_error; in ccp_run_aes_cmac_cmd()
949 ret = ccp_init_dm_workarea(&ctx, cmd_q, 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()
960 cmd->engine_error = cmd_q->cmd_error; in ccp_run_aes_cmac_cmd()
965 ret = ccp_init_data(&src, cmd_q, aes->src, aes->src_len, in ccp_run_aes_cmac_cmd()
976 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, in ccp_run_aes_cmac_cmd()
980 cmd->engine_error = cmd_q->cmd_error; 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()
989 cmd->engine_error = cmd_q->cmd_error; in ccp_run_aes_cmac_cmd()
996 cmd->engine_error = cmd_q->cmd_error; 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()
1009 cmd->engine_error = cmd_q->cmd_error; in ccp_run_aes_cmac_cmd()
1018 ccp_free_data(&src, cmd_q); in ccp_run_aes_cmac_cmd()
1029 static int ccp_run_aes_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) in ccp_run_aes_cmd() argument
1040 return ccp_run_aes_cmac_cmd(cmd_q, cmd); 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()
1083 ret = ccp_init_dm_workarea(&key, cmd_q, in ccp_run_aes_cmd()
1091 ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, in ccp_run_aes_cmd()
1094 cmd->engine_error = cmd_q->cmd_error; in ccp_run_aes_cmd()
1102 ret = ccp_init_dm_workarea(&ctx, cmd_q, in ccp_run_aes_cmd()
1112 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmd()
1115 cmd->engine_error = cmd_q->cmd_error; in ccp_run_aes_cmd()
1127 ret = ccp_init_data(&src, cmd_q, aes->src, aes->src_len, in ccp_run_aes_cmd()
1136 ret = ccp_init_data(&dst, cmd_q, aes->dst, aes->src_len, in ccp_run_aes_cmd()
1158 cmd->engine_error = cmd_q->cmd_error; in ccp_run_aes_cmd()
1169 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_aes_cmd()
1172 cmd->engine_error = cmd_q->cmd_error; in ccp_run_aes_cmd()
1183 ccp_free_data(&dst, cmd_q); in ccp_run_aes_cmd()
1186 ccp_free_data(&src, cmd_q); in ccp_run_aes_cmd()
1197 static int ccp_run_xts_aes_cmd(struct ccp_cmd_queue *cmd_q, in ccp_run_xts_aes_cmd() argument
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()
1259 ret = ccp_init_dm_workarea(&key, cmd_q, 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()
1271 cmd->engine_error = cmd_q->cmd_error; in ccp_run_xts_aes_cmd()
1279 ret = ccp_init_dm_workarea(&ctx, cmd_q, 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()
1289 cmd->engine_error = cmd_q->cmd_error; in ccp_run_xts_aes_cmd()
1300 ret = ccp_init_data(&src, cmd_q, xts->src, xts->src_len, in ccp_run_xts_aes_cmd()
1309 ret = ccp_init_data(&dst, cmd_q, xts->dst, xts->src_len, in ccp_run_xts_aes_cmd()
1323 cmd->engine_error = cmd_q->cmd_error; 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()
1336 cmd->engine_error = cmd_q->cmd_error; in ccp_run_xts_aes_cmd()
1346 ccp_free_data(&dst, cmd_q); in ccp_run_xts_aes_cmd()
1349 ccp_free_data(&src, cmd_q); in ccp_run_xts_aes_cmd()
1360 static int ccp_run_sha_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) in ccp_run_sha_cmd() argument
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()
1429 ret = ccp_init_dm_workarea(&ctx, cmd_q, in ccp_run_sha_cmd()
1457 ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_sha_cmd()
1460 cmd->engine_error = cmd_q->cmd_error; in ccp_run_sha_cmd()
1465 ret = ccp_init_data(&src, cmd_q, sha->src, sha->src_len, in ccp_run_sha_cmd()
1477 cmd->engine_error = cmd_q->cmd_error; in ccp_run_sha_cmd()
1487 ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, in ccp_run_sha_cmd()
1490 cmd->engine_error = cmd_q->cmd_error; in ccp_run_sha_cmd()
1549 ret = ccp_run_sha_cmd(cmd_q, &hmac_cmd); in ccp_run_sha_cmd()
1557 ccp_free_data(&src, cmd_q); in ccp_run_sha_cmd()
1565 static int ccp_run_rsa_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) in ccp_run_rsa_cmd() argument
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()
1604 ret = ccp_init_dm_workarea(&exp, cmd_q, o_len, DMA_TO_DEVICE); in ccp_run_rsa_cmd()
1610 ret = ccp_copy_to_ksb(cmd_q, &exp, op.jobid, op.ksb_key, in ccp_run_rsa_cmd()
1613 cmd->engine_error = cmd_q->cmd_error; in ccp_run_rsa_cmd()
1621 ret = ccp_init_dm_workarea(&src, cmd_q, i_len, DMA_TO_DEVICE); in ccp_run_rsa_cmd()
1633 ret = ccp_init_data(&dst, cmd_q, rsa->dst, rsa->mod_len, in ccp_run_rsa_cmd()
1651 cmd->engine_error = cmd_q->cmd_error; in ccp_run_rsa_cmd()
1658 ccp_free_data(&dst, cmd_q); in ccp_run_rsa_cmd()
1667 ccp_free_ksb(cmd_q->ccp, op.ksb_key, ksb_count); in ccp_run_rsa_cmd()
1672 static int ccp_run_passthru_cmd(struct ccp_cmd_queue *cmd_q, in ccp_run_passthru_cmd() argument
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()
1706 ret = ccp_init_dm_workarea(&mask, cmd_q, in ccp_run_passthru_cmd()
1714 ret = ccp_copy_to_ksb(cmd_q, &mask, op.jobid, op.ksb_key, in ccp_run_passthru_cmd()
1717 cmd->engine_error = cmd_q->cmd_error; in ccp_run_passthru_cmd()
1729 ret = ccp_init_data(&src, cmd_q, pt->src, pt->src_len, in ccp_run_passthru_cmd()
1738 ret = ccp_init_data(&dst, cmd_q, pt->dst, pt->src_len, in ccp_run_passthru_cmd()
1776 cmd->engine_error = cmd_q->cmd_error; in ccp_run_passthru_cmd()
1790 ccp_free_data(&dst, cmd_q); in ccp_run_passthru_cmd()
1793 ccp_free_data(&src, cmd_q); in ccp_run_passthru_cmd()
1802 static int ccp_run_ecc_mm_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) in ccp_run_ecc_mm_cmd() argument
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()
1832 ret = ccp_init_dm_workarea(&src, cmd_q, CCP_ECC_SRC_BUF_SIZE, in ccp_run_ecc_mm_cmd()
1865 ret = ccp_init_dm_workarea(&dst, cmd_q, CCP_ECC_DST_BUF_SIZE, in ccp_run_ecc_mm_cmd()
1882 cmd->engine_error = cmd_q->cmd_error; in ccp_run_ecc_mm_cmd()
1905 static int ccp_run_ecc_pm_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) in ccp_run_ecc_pm_cmd() argument
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()
1951 ret = ccp_init_dm_workarea(&src, cmd_q, CCP_ECC_SRC_BUF_SIZE, in ccp_run_ecc_pm_cmd()
2014 ret = ccp_init_dm_workarea(&dst, cmd_q, CCP_ECC_DST_BUF_SIZE, in ccp_run_ecc_pm_cmd()
2031 cmd->engine_error = cmd_q->cmd_error; in ccp_run_ecc_pm_cmd()
2067 static int ccp_run_ecc_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) in ccp_run_ecc_cmd() argument
2081 return ccp_run_ecc_mm_cmd(cmd_q, cmd); in ccp_run_ecc_cmd()
2086 return ccp_run_ecc_pm_cmd(cmd_q, cmd); in ccp_run_ecc_cmd()
2093 int ccp_run_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) in ccp_run_cmd() argument
2098 cmd_q->cmd_error = 0; in ccp_run_cmd()
2099 cmd_q->int_rcvd = 0; in ccp_run_cmd()
2100 cmd_q->free_slots = CMD_Q_DEPTH(ioread32(cmd_q->reg_status)); in ccp_run_cmd()
2104 ret = ccp_run_aes_cmd(cmd_q, cmd); in ccp_run_cmd()
2107 ret = ccp_run_xts_aes_cmd(cmd_q, cmd); in ccp_run_cmd()
2110 ret = ccp_run_sha_cmd(cmd_q, cmd); in ccp_run_cmd()
2113 ret = ccp_run_rsa_cmd(cmd_q, cmd); in ccp_run_cmd()
2116 ret = ccp_run_passthru_cmd(cmd_q, cmd); in ccp_run_cmd()
2119 ret = ccp_run_ecc_cmd(cmd_q, cmd); in ccp_run_cmd()