• Home
  • Raw
  • Download

Lines Matching full:cryp

108 	struct mtk_cryp *cryp;  member
127 static int mtk_sha_handle_queue(struct mtk_cryp *cryp, u8 id,
130 static inline u32 mtk_sha_read(struct mtk_cryp *cryp, u32 offset) in mtk_sha_read() argument
132 return readl_relaxed(cryp->base + offset); in mtk_sha_read()
135 static inline void mtk_sha_write(struct mtk_cryp *cryp, in mtk_sha_write() argument
138 writel_relaxed(value, cryp->base + offset); in mtk_sha_write()
158 struct mtk_cryp *cryp = NULL; in mtk_sha_find_dev() local
162 if (!tctx->cryp) { in mtk_sha_find_dev()
164 cryp = tmp; in mtk_sha_find_dev()
167 tctx->cryp = cryp; in mtk_sha_find_dev()
169 cryp = tctx->cryp; in mtk_sha_find_dev()
176 tctx->id = cryp->rec; in mtk_sha_find_dev()
177 cryp->rec = !cryp->rec; in mtk_sha_find_dev()
181 return cryp; in mtk_sha_find_dev()
323 static int mtk_sha_info_update(struct mtk_cryp *cryp, in mtk_sha_info_update() argument
341 ctx->ct_dma = dma_map_single(cryp->dev, info, sizeof(*info), in mtk_sha_info_update()
343 if (unlikely(dma_mapping_error(cryp->dev, ctx->ct_dma))) { in mtk_sha_info_update()
344 dev_err(cryp->dev, "dma %zu bytes error\n", sizeof(*info)); in mtk_sha_info_update()
425 static int mtk_sha_xmit(struct mtk_cryp *cryp, struct mtk_sha_rec *sha, in mtk_sha_xmit() argument
430 struct mtk_ring *ring = cryp->ring[sha->id]; in mtk_sha_xmit()
434 err = mtk_sha_info_update(cryp, sha, len1, len2); in mtk_sha_xmit()
466 mtk_sha_write(cryp, RDR_PREP_COUNT(sha->id), MTK_DESC_CNT(count)); in mtk_sha_xmit()
467 mtk_sha_write(cryp, CDR_PREP_COUNT(sha->id), MTK_DESC_CNT(count)); in mtk_sha_xmit()
472 static int mtk_sha_dma_map(struct mtk_cryp *cryp, in mtk_sha_dma_map() argument
477 ctx->dma_addr = dma_map_single(cryp->dev, ctx->buffer, in mtk_sha_dma_map()
479 if (unlikely(dma_mapping_error(cryp->dev, ctx->dma_addr))) { in mtk_sha_dma_map()
480 dev_err(cryp->dev, "dma map error\n"); in mtk_sha_dma_map()
486 return mtk_sha_xmit(cryp, sha, ctx->dma_addr, count, 0, 0); in mtk_sha_dma_map()
489 static int mtk_sha_update_slow(struct mtk_cryp *cryp, in mtk_sha_update_slow() argument
500 dev_dbg(cryp->dev, "slow: bufcnt: %zu\n", ctx->bufcnt); in mtk_sha_update_slow()
511 return mtk_sha_dma_map(cryp, sha, ctx, count); in mtk_sha_update_slow()
516 static int mtk_sha_update_start(struct mtk_cryp *cryp, in mtk_sha_update_start() argument
527 return mtk_sha_update_slow(cryp, sha); in mtk_sha_update_start()
532 return mtk_sha_update_slow(cryp, sha); in mtk_sha_update_start()
536 return mtk_sha_update_slow(cryp, sha); in mtk_sha_update_start()
566 ctx->dma_addr = dma_map_single(cryp->dev, ctx->buffer, in mtk_sha_update_start()
568 if (unlikely(dma_mapping_error(cryp->dev, ctx->dma_addr))) { in mtk_sha_update_start()
569 dev_err(cryp->dev, "dma map bytes error\n"); in mtk_sha_update_start()
579 return mtk_sha_xmit(cryp, sha, ctx->dma_addr, in mtk_sha_update_start()
584 if (!dma_map_sg(cryp->dev, ctx->sg, 1, DMA_TO_DEVICE)) { in mtk_sha_update_start()
585 dev_err(cryp->dev, "dma_map_sg error\n"); in mtk_sha_update_start()
590 return mtk_sha_xmit(cryp, sha, sg_dma_address(ctx->sg), in mtk_sha_update_start()
595 if (!dma_map_sg(cryp->dev, ctx->sg, 1, DMA_TO_DEVICE)) { in mtk_sha_update_start()
596 dev_err(cryp->dev, "dma_map_sg error\n"); in mtk_sha_update_start()
602 return mtk_sha_xmit(cryp, sha, sg_dma_address(ctx->sg), in mtk_sha_update_start()
606 static int mtk_sha_final_req(struct mtk_cryp *cryp, in mtk_sha_final_req() argument
618 return mtk_sha_dma_map(cryp, sha, ctx, count); in mtk_sha_final_req()
639 static void mtk_sha_finish_req(struct mtk_cryp *cryp, in mtk_sha_finish_req() argument
654 static int mtk_sha_handle_queue(struct mtk_cryp *cryp, u8 id, in mtk_sha_handle_queue() argument
657 struct mtk_sha_rec *sha = cryp->sha[id]; in mtk_sha_handle_queue()
692 err = mtk_sha_update_start(cryp, sha); in mtk_sha_handle_queue()
695 err = mtk_sha_final_req(cryp, sha); in mtk_sha_handle_queue()
697 err = mtk_sha_final_req(cryp, sha); in mtk_sha_handle_queue()
702 mtk_sha_finish_req(cryp, sha, err); in mtk_sha_handle_queue()
714 return mtk_sha_handle_queue(tctx->cryp, tctx->id, req); in mtk_sha_enqueue()
717 static void mtk_sha_unmap(struct mtk_cryp *cryp, struct mtk_sha_rec *sha) in mtk_sha_unmap() argument
721 dma_unmap_single(cryp->dev, ctx->ct_dma, sizeof(ctx->info), in mtk_sha_unmap()
725 dma_unmap_sg(cryp->dev, ctx->sg, 1, DMA_TO_DEVICE); in mtk_sha_unmap()
732 dma_unmap_single(cryp->dev, ctx->dma_addr, in mtk_sha_unmap()
736 dma_unmap_single(cryp->dev, ctx->dma_addr, in mtk_sha_unmap()
740 static void mtk_sha_complete(struct mtk_cryp *cryp, in mtk_sha_complete() argument
745 err = mtk_sha_update_start(cryp, sha); in mtk_sha_complete()
747 mtk_sha_finish_req(cryp, sha, err); in mtk_sha_complete()
856 struct mtk_cryp *cryp = NULL; in mtk_sha_cra_init_alg() local
858 cryp = mtk_sha_find_dev(tctx); in mtk_sha_cra_init_alg()
859 if (!cryp) in mtk_sha_cra_init_alg()
1177 mtk_sha_handle_queue(sha->cryp, sha->id - MTK_RING2, NULL); in mtk_sha_queue_task()
1183 struct mtk_cryp *cryp = sha->cryp; in mtk_sha_done_task() local
1185 mtk_sha_unmap(cryp, sha); in mtk_sha_done_task()
1186 mtk_sha_complete(cryp, sha); in mtk_sha_done_task()
1192 struct mtk_cryp *cryp = sha->cryp; in mtk_sha_irq() local
1193 u32 val = mtk_sha_read(cryp, RDR_STAT(sha->id)); in mtk_sha_irq()
1195 mtk_sha_write(cryp, RDR_STAT(sha->id), val); in mtk_sha_irq()
1198 mtk_sha_write(cryp, RDR_PROC_COUNT(sha->id), MTK_CNT_RST); in mtk_sha_irq()
1199 mtk_sha_write(cryp, RDR_THRESH(sha->id), in mtk_sha_irq()
1204 dev_warn(cryp->dev, "SHA interrupt when no active requests.\n"); in mtk_sha_irq()
1213 static int mtk_sha_record_init(struct mtk_cryp *cryp) in mtk_sha_record_init() argument
1215 struct mtk_sha_rec **sha = cryp->sha; in mtk_sha_record_init()
1223 sha[i]->cryp = cryp; in mtk_sha_record_init()
1238 cryp->rec = 1; in mtk_sha_record_init()
1248 static void mtk_sha_record_free(struct mtk_cryp *cryp) in mtk_sha_record_free() argument
1253 tasklet_kill(&cryp->sha[i]->done_task); in mtk_sha_record_free()
1254 tasklet_kill(&cryp->sha[i]->queue_task); in mtk_sha_record_free()
1256 kfree(cryp->sha[i]); in mtk_sha_record_free()
1300 int mtk_hash_alg_register(struct mtk_cryp *cryp) in mtk_hash_alg_register() argument
1304 INIT_LIST_HEAD(&cryp->sha_list); in mtk_hash_alg_register()
1307 err = mtk_sha_record_init(cryp); in mtk_hash_alg_register()
1311 err = devm_request_irq(cryp->dev, cryp->irq[MTK_RING2], mtk_sha_irq, in mtk_hash_alg_register()
1312 0, "mtk-sha", cryp->sha[0]); in mtk_hash_alg_register()
1314 dev_err(cryp->dev, "unable to request sha irq0.\n"); in mtk_hash_alg_register()
1318 err = devm_request_irq(cryp->dev, cryp->irq[MTK_RING3], mtk_sha_irq, in mtk_hash_alg_register()
1319 0, "mtk-sha", cryp->sha[1]); in mtk_hash_alg_register()
1321 dev_err(cryp->dev, "unable to request sha irq1.\n"); in mtk_hash_alg_register()
1326 mtk_sha_write(cryp, AIC_ENABLE_SET(MTK_RING2), MTK_IRQ_RDR2); in mtk_hash_alg_register()
1327 mtk_sha_write(cryp, AIC_ENABLE_SET(MTK_RING3), MTK_IRQ_RDR3); in mtk_hash_alg_register()
1330 list_add_tail(&cryp->sha_list, &mtk_sha.dev_list); in mtk_hash_alg_register()
1341 list_del(&cryp->sha_list); in mtk_hash_alg_register()
1344 mtk_sha_record_free(cryp); in mtk_hash_alg_register()
1347 dev_err(cryp->dev, "mtk-sha initialization failed.\n"); in mtk_hash_alg_register()
1351 void mtk_hash_alg_release(struct mtk_cryp *cryp) in mtk_hash_alg_release() argument
1354 list_del(&cryp->sha_list); in mtk_hash_alg_release()
1358 mtk_sha_record_free(cryp); in mtk_hash_alg_release()