Lines Matching refs:cryp

105 	struct mtk_cryp *cryp;
124 static int mtk_sha_handle_queue(struct mtk_cryp *cryp, u8 id,
127 static inline u32 mtk_sha_read(struct mtk_cryp *cryp, u32 offset)
129 return readl_relaxed(cryp->base + offset);
132 static inline void mtk_sha_write(struct mtk_cryp *cryp,
135 writel_relaxed(value, cryp->base + offset);
155 struct mtk_cryp *cryp = NULL;
159 if (!tctx->cryp) {
161 cryp = tmp;
164 tctx->cryp = cryp;
166 cryp = tctx->cryp;
173 tctx->id = cryp->rec;
174 cryp->rec = !cryp->rec;
178 return cryp;
320 static int mtk_sha_info_update(struct mtk_cryp *cryp,
338 ctx->ct_dma = dma_map_single(cryp->dev, info, sizeof(*info),
340 if (unlikely(dma_mapping_error(cryp->dev, ctx->ct_dma))) {
341 dev_err(cryp->dev, "dma %zu bytes error\n", sizeof(*info));
421 static int mtk_sha_xmit(struct mtk_cryp *cryp, struct mtk_sha_rec *sha,
426 struct mtk_ring *ring = cryp->ring[sha->id];
430 err = mtk_sha_info_update(cryp, sha, len1, len2);
462 mtk_sha_write(cryp, RDR_PREP_COUNT(sha->id), MTK_DESC_CNT(count));
463 mtk_sha_write(cryp, CDR_PREP_COUNT(sha->id), MTK_DESC_CNT(count));
468 static int mtk_sha_dma_map(struct mtk_cryp *cryp,
473 ctx->dma_addr = dma_map_single(cryp->dev, ctx->buffer,
475 if (unlikely(dma_mapping_error(cryp->dev, ctx->dma_addr))) {
476 dev_err(cryp->dev, "dma map error\n");
482 return mtk_sha_xmit(cryp, sha, ctx->dma_addr, count, 0, 0);
485 static int mtk_sha_update_slow(struct mtk_cryp *cryp,
496 dev_dbg(cryp->dev, "slow: bufcnt: %zu\n", ctx->bufcnt);
507 return mtk_sha_dma_map(cryp, sha, ctx, count);
512 static int mtk_sha_update_start(struct mtk_cryp *cryp,
523 return mtk_sha_update_slow(cryp, sha);
528 return mtk_sha_update_slow(cryp, sha);
532 return mtk_sha_update_slow(cryp, sha);
562 ctx->dma_addr = dma_map_single(cryp->dev, ctx->buffer,
564 if (unlikely(dma_mapping_error(cryp->dev, ctx->dma_addr))) {
565 dev_err(cryp->dev, "dma map bytes error\n");
575 return mtk_sha_xmit(cryp, sha, ctx->dma_addr,
580 if (!dma_map_sg(cryp->dev, ctx->sg, 1, DMA_TO_DEVICE)) {
581 dev_err(cryp->dev, "dma_map_sg error\n");
586 return mtk_sha_xmit(cryp, sha, sg_dma_address(ctx->sg),
591 if (!dma_map_sg(cryp->dev, ctx->sg, 1, DMA_TO_DEVICE)) {
592 dev_err(cryp->dev, "dma_map_sg error\n");
598 return mtk_sha_xmit(cryp, sha, sg_dma_address(ctx->sg),
602 static int mtk_sha_final_req(struct mtk_cryp *cryp,
614 return mtk_sha_dma_map(cryp, sha, ctx, count);
635 static void mtk_sha_finish_req(struct mtk_cryp *cryp,
650 static int mtk_sha_handle_queue(struct mtk_cryp *cryp, u8 id,
653 struct mtk_sha_rec *sha = cryp->sha[id];
688 err = mtk_sha_update_start(cryp, sha);
691 err = mtk_sha_final_req(cryp, sha);
693 err = mtk_sha_final_req(cryp, sha);
698 mtk_sha_finish_req(cryp, sha, err);
710 return mtk_sha_handle_queue(tctx->cryp, tctx->id, req);
713 static void mtk_sha_unmap(struct mtk_cryp *cryp, struct mtk_sha_rec *sha)
717 dma_unmap_single(cryp->dev, ctx->ct_dma, sizeof(ctx->info),
721 dma_unmap_sg(cryp->dev, ctx->sg, 1, DMA_TO_DEVICE);
728 dma_unmap_single(cryp->dev, ctx->dma_addr,
732 dma_unmap_single(cryp->dev, ctx->dma_addr,
736 static void mtk_sha_complete(struct mtk_cryp *cryp,
741 err = mtk_sha_update_start(cryp, sha);
743 mtk_sha_finish_req(cryp, sha, err);
849 struct mtk_cryp *cryp = NULL;
851 cryp = mtk_sha_find_dev(tctx);
852 if (!cryp)
1170 mtk_sha_handle_queue(sha->cryp, sha->id - MTK_RING2, NULL);
1176 struct mtk_cryp *cryp = sha->cryp;
1178 mtk_sha_unmap(cryp, sha);
1179 mtk_sha_complete(cryp, sha);
1185 struct mtk_cryp *cryp = sha->cryp;
1186 u32 val = mtk_sha_read(cryp, RDR_STAT(sha->id));
1188 mtk_sha_write(cryp, RDR_STAT(sha->id), val);
1191 mtk_sha_write(cryp, RDR_PROC_COUNT(sha->id), MTK_CNT_RST);
1192 mtk_sha_write(cryp, RDR_THRESH(sha->id),
1197 dev_warn(cryp->dev, "SHA interrupt when no active requests.\n");
1206 static int mtk_sha_record_init(struct mtk_cryp *cryp)
1208 struct mtk_sha_rec **sha = cryp->sha;
1216 sha[i]->cryp = cryp;
1231 cryp->rec = 1;
1241 static void mtk_sha_record_free(struct mtk_cryp *cryp)
1246 tasklet_kill(&cryp->sha[i]->done_task);
1247 tasklet_kill(&cryp->sha[i]->queue_task);
1249 kfree(cryp->sha[i]);
1293 int mtk_hash_alg_register(struct mtk_cryp *cryp)
1297 INIT_LIST_HEAD(&cryp->sha_list);
1300 err = mtk_sha_record_init(cryp);
1304 err = devm_request_irq(cryp->dev, cryp->irq[MTK_RING2], mtk_sha_irq,
1305 0, "mtk-sha", cryp->sha[0]);
1307 dev_err(cryp->dev, "unable to request sha irq0.\n");
1311 err = devm_request_irq(cryp->dev, cryp->irq[MTK_RING3], mtk_sha_irq,
1312 0, "mtk-sha", cryp->sha[1]);
1314 dev_err(cryp->dev, "unable to request sha irq1.\n");
1319 mtk_sha_write(cryp, AIC_ENABLE_SET(MTK_RING2), MTK_IRQ_RDR2);
1320 mtk_sha_write(cryp, AIC_ENABLE_SET(MTK_RING3), MTK_IRQ_RDR3);
1323 list_add_tail(&cryp->sha_list, &mtk_sha.dev_list);
1334 list_del(&cryp->sha_list);
1337 mtk_sha_record_free(cryp);
1340 dev_err(cryp->dev, "mtk-sha initialization failed.\n");
1344 void mtk_hash_alg_release(struct mtk_cryp *cryp)
1347 list_del(&cryp->sha_list);
1351 mtk_sha_record_free(cryp);