Lines Matching refs:drv_ctx
124 ret = qman_enqueue(req->drv_ctx->req_fq, &fd); in caam_qi_enqueue()
160 dma_unmap_single(drv_req->drv_ctx->qidev, qm_fd_addr(fd), in caam_fq_ern_cb()
309 int caam_drv_ctx_update(struct caam_drv_ctx *drv_ctx, u32 *sh_desc) in caam_drv_ctx_update() argument
314 struct device *qidev = drv_ctx->qidev; in caam_drv_ctx_update()
323 old_fq = drv_ctx->req_fq; in caam_drv_ctx_update()
326 new_fq = create_caam_req_fq(drv_ctx->qidev, drv_ctx->rsp_fq, in caam_drv_ctx_update()
327 drv_ctx->context_a, 0); in caam_drv_ctx_update()
334 drv_ctx->req_fq = new_fq; in caam_drv_ctx_update()
342 drv_ctx->req_fq = old_fq; in caam_drv_ctx_update()
354 drv_ctx->prehdr[0] = cpu_to_caam32((1 << PREHDR_RSLS_SHIFT) | in caam_drv_ctx_update()
356 memcpy(drv_ctx->sh_desc, sh_desc, desc_bytes(sh_desc)); in caam_drv_ctx_update()
357 dma_sync_single_for_device(qidev, drv_ctx->context_a, in caam_drv_ctx_update()
358 sizeof(drv_ctx->sh_desc) + in caam_drv_ctx_update()
359 sizeof(drv_ctx->prehdr), in caam_drv_ctx_update()
372 drv_ctx->req_fq = old_fq; in caam_drv_ctx_update()
391 struct caam_drv_ctx *drv_ctx; in caam_drv_ctx_init() local
401 drv_ctx = kzalloc(sizeof(*drv_ctx), GFP_ATOMIC); in caam_drv_ctx_init()
402 if (!drv_ctx) in caam_drv_ctx_init()
409 drv_ctx->prehdr[0] = cpu_to_caam32((1 << PREHDR_RSLS_SHIFT) | in caam_drv_ctx_init()
411 memcpy(drv_ctx->sh_desc, sh_desc, desc_bytes(sh_desc)); in caam_drv_ctx_init()
412 size = sizeof(drv_ctx->prehdr) + sizeof(drv_ctx->sh_desc); in caam_drv_ctx_init()
413 hwdesc = dma_map_single(qidev, drv_ctx->prehdr, size, in caam_drv_ctx_init()
417 kfree(drv_ctx); in caam_drv_ctx_init()
420 drv_ctx->context_a = hwdesc; in caam_drv_ctx_init()
433 drv_ctx->cpu = *cpu; in caam_drv_ctx_init()
436 drv_ctx->rsp_fq = per_cpu(pcpu_qipriv.rsp_fq, drv_ctx->cpu); in caam_drv_ctx_init()
439 drv_ctx->req_fq = create_caam_req_fq(qidev, drv_ctx->rsp_fq, hwdesc, in caam_drv_ctx_init()
441 if (unlikely(IS_ERR_OR_NULL(drv_ctx->req_fq))) { in caam_drv_ctx_init()
444 kfree(drv_ctx); in caam_drv_ctx_init()
448 drv_ctx->qidev = qidev; in caam_drv_ctx_init()
449 return drv_ctx; in caam_drv_ctx_init()
479 void caam_drv_ctx_rel(struct caam_drv_ctx *drv_ctx) in caam_drv_ctx_rel() argument
481 if (IS_ERR_OR_NULL(drv_ctx)) in caam_drv_ctx_rel()
485 if (kill_fq(drv_ctx->qidev, drv_ctx->req_fq)) in caam_drv_ctx_rel()
486 dev_err(drv_ctx->qidev, "Crypto session req FQ kill failed\n"); in caam_drv_ctx_rel()
488 dma_unmap_single(drv_ctx->qidev, drv_ctx->context_a, in caam_drv_ctx_rel()
489 sizeof(drv_ctx->sh_desc) + sizeof(drv_ctx->prehdr), in caam_drv_ctx_rel()
491 kfree(drv_ctx); in caam_drv_ctx_rel()
604 dma_unmap_single(drv_req->drv_ctx->qidev, qm_fd_addr(fd), in caam_rsp_fq_dqrr_cb()