Lines Matching defs:drv_ctx

118 		ret = qman_enqueue(req->drv_ctx->req_fq, &fd);
120 refcount_inc(&req->drv_ctx->refcnt);
152 refcount_dec(&drv_req->drv_ctx->refcnt);
159 dma_unmap_single(drv_req->drv_ctx->qidev, qm_fd_addr(fd),
286 static int empty_caam_fq(struct qman_fq *fq, struct caam_drv_ctx *drv_ctx)
306 if (refcount_read(&drv_ctx->refcnt) == 1)
313 dev_warn_once(drv_ctx->qidev, "%d frames from FQID %u still pending in CAAM\n",
314 refcount_read(&drv_ctx->refcnt), fq->fqid);
319 int caam_drv_ctx_update(struct caam_drv_ctx *drv_ctx, u32 *sh_desc)
324 struct device *qidev = drv_ctx->qidev;
333 old_fq = drv_ctx->req_fq;
336 new_fq = create_caam_req_fq(drv_ctx->qidev, drv_ctx->rsp_fq,
337 drv_ctx->context_a, 0);
344 drv_ctx->req_fq = new_fq;
347 ret = empty_caam_fq(old_fq, drv_ctx);
352 drv_ctx->req_fq = old_fq;
364 drv_ctx->prehdr[0] = cpu_to_caam32((1 << PREHDR_RSLS_SHIFT) |
366 drv_ctx->prehdr[1] = cpu_to_caam32(PREHDR_ABS);
367 memcpy(drv_ctx->sh_desc, sh_desc, desc_bytes(sh_desc));
368 dma_sync_single_for_device(qidev, drv_ctx->context_a,
369 sizeof(drv_ctx->sh_desc) +
370 sizeof(drv_ctx->prehdr),
383 drv_ctx->req_fq = old_fq;
402 struct caam_drv_ctx *drv_ctx;
412 drv_ctx = kzalloc(sizeof(*drv_ctx), GFP_ATOMIC);
413 if (!drv_ctx)
420 drv_ctx->prehdr[0] = cpu_to_caam32((1 << PREHDR_RSLS_SHIFT) |
422 drv_ctx->prehdr[1] = cpu_to_caam32(PREHDR_ABS);
423 memcpy(drv_ctx->sh_desc, sh_desc, desc_bytes(sh_desc));
424 size = sizeof(drv_ctx->prehdr) + sizeof(drv_ctx->sh_desc);
425 hwdesc = dma_map_single(qidev, drv_ctx->prehdr, size,
429 kfree(drv_ctx);
432 drv_ctx->context_a = hwdesc;
445 drv_ctx->cpu = *cpu;
448 drv_ctx->rsp_fq = per_cpu(pcpu_qipriv.rsp_fq, drv_ctx->cpu);
451 drv_ctx->req_fq = create_caam_req_fq(qidev, drv_ctx->rsp_fq, hwdesc,
453 if (IS_ERR(drv_ctx->req_fq)) {
456 kfree(drv_ctx);
461 refcount_set(&drv_ctx->refcnt, 1);
463 drv_ctx->qidev = qidev;
464 return drv_ctx;
494 void caam_drv_ctx_rel(struct caam_drv_ctx *drv_ctx)
496 if (IS_ERR_OR_NULL(drv_ctx))
500 if (kill_fq(drv_ctx->qidev, drv_ctx->req_fq))
501 dev_err(drv_ctx->qidev, "Crypto session req FQ kill failed\n");
503 dma_unmap_single(drv_ctx->qidev, drv_ctx->context_a,
504 sizeof(drv_ctx->sh_desc) + sizeof(drv_ctx->prehdr),
506 kfree(drv_ctx);
588 refcount_dec(&drv_req->drv_ctx->refcnt);
607 dma_unmap_single(drv_req->drv_ctx->qidev, qm_fd_addr(fd),