Lines Matching refs:drv_ctx

125 		ret = qman_enqueue(req->drv_ctx->req_fq, &fd);  in caam_qi_enqueue()
127 refcount_inc(&req->drv_ctx->refcnt); in caam_qi_enqueue()
159 refcount_dec(&drv_req->drv_ctx->refcnt); in caam_fq_ern_cb()
166 dma_unmap_single(drv_req->drv_ctx->qidev, qm_fd_addr(fd), in caam_fq_ern_cb()
293 static int empty_caam_fq(struct qman_fq *fq, struct caam_drv_ctx *drv_ctx) in empty_caam_fq() argument
313 if (refcount_read(&drv_ctx->refcnt) == 1) in empty_caam_fq()
320 dev_warn_once(drv_ctx->qidev, "%d frames from FQID %u still pending in CAAM\n", in empty_caam_fq()
321 refcount_read(&drv_ctx->refcnt), fq->fqid); in empty_caam_fq()
326 int caam_drv_ctx_update(struct caam_drv_ctx *drv_ctx, u32 *sh_desc) in caam_drv_ctx_update() argument
331 struct device *qidev = drv_ctx->qidev; in caam_drv_ctx_update()
340 old_fq = drv_ctx->req_fq; in caam_drv_ctx_update()
343 new_fq = create_caam_req_fq(drv_ctx->qidev, drv_ctx->rsp_fq, in caam_drv_ctx_update()
344 drv_ctx->context_a, 0); in caam_drv_ctx_update()
351 drv_ctx->req_fq = new_fq; in caam_drv_ctx_update()
354 ret = empty_caam_fq(old_fq, drv_ctx); in caam_drv_ctx_update()
359 drv_ctx->req_fq = old_fq; in caam_drv_ctx_update()
371 drv_ctx->prehdr[0] = cpu_to_caam32((1 << PREHDR_RSLS_SHIFT) | in caam_drv_ctx_update()
373 drv_ctx->prehdr[1] = cpu_to_caam32(PREHDR_ABS); in caam_drv_ctx_update()
374 memcpy(drv_ctx->sh_desc, sh_desc, desc_bytes(sh_desc)); in caam_drv_ctx_update()
375 dma_sync_single_for_device(qidev, drv_ctx->context_a, in caam_drv_ctx_update()
376 sizeof(drv_ctx->sh_desc) + in caam_drv_ctx_update()
377 sizeof(drv_ctx->prehdr), in caam_drv_ctx_update()
390 drv_ctx->req_fq = old_fq; in caam_drv_ctx_update()
409 struct caam_drv_ctx *drv_ctx; in caam_drv_ctx_init() local
419 drv_ctx = kzalloc(sizeof(*drv_ctx), GFP_ATOMIC); in caam_drv_ctx_init()
420 if (!drv_ctx) in caam_drv_ctx_init()
427 drv_ctx->prehdr[0] = cpu_to_caam32((1 << PREHDR_RSLS_SHIFT) | in caam_drv_ctx_init()
429 drv_ctx->prehdr[1] = cpu_to_caam32(PREHDR_ABS); in caam_drv_ctx_init()
430 memcpy(drv_ctx->sh_desc, sh_desc, desc_bytes(sh_desc)); in caam_drv_ctx_init()
431 size = sizeof(drv_ctx->prehdr) + sizeof(drv_ctx->sh_desc); in caam_drv_ctx_init()
432 hwdesc = dma_map_single(qidev, drv_ctx->prehdr, size, in caam_drv_ctx_init()
436 kfree(drv_ctx); in caam_drv_ctx_init()
439 drv_ctx->context_a = hwdesc; in caam_drv_ctx_init()
452 drv_ctx->cpu = *cpu; in caam_drv_ctx_init()
455 drv_ctx->rsp_fq = per_cpu(pcpu_qipriv.rsp_fq, drv_ctx->cpu); in caam_drv_ctx_init()
458 drv_ctx->req_fq = create_caam_req_fq(qidev, drv_ctx->rsp_fq, hwdesc, in caam_drv_ctx_init()
460 if (IS_ERR(drv_ctx->req_fq)) { in caam_drv_ctx_init()
463 kfree(drv_ctx); in caam_drv_ctx_init()
468 refcount_set(&drv_ctx->refcnt, 1); in caam_drv_ctx_init()
470 drv_ctx->qidev = qidev; in caam_drv_ctx_init()
471 return drv_ctx; in caam_drv_ctx_init()
501 void caam_drv_ctx_rel(struct caam_drv_ctx *drv_ctx) in caam_drv_ctx_rel() argument
503 if (IS_ERR_OR_NULL(drv_ctx)) in caam_drv_ctx_rel()
507 if (kill_fq(drv_ctx->qidev, drv_ctx->req_fq)) in caam_drv_ctx_rel()
508 dev_err(drv_ctx->qidev, "Crypto session req FQ kill failed\n"); in caam_drv_ctx_rel()
510 dma_unmap_single(drv_ctx->qidev, drv_ctx->context_a, in caam_drv_ctx_rel()
511 sizeof(drv_ctx->sh_desc) + sizeof(drv_ctx->prehdr), in caam_drv_ctx_rel()
513 kfree(drv_ctx); in caam_drv_ctx_rel()
592 refcount_dec(&drv_req->drv_ctx->refcnt); in caam_rsp_fq_dqrr_cb()
611 dma_unmap_single(drv_req->drv_ctx->qidev, qm_fd_addr(fd), in caam_rsp_fq_dqrr_cb()