Lines Matching defs:sha
9 * Some ideas are from atmel-sha.c and omap-sham.c drivers.
13 #include <crypto/sha.h>
321 struct mtk_sha_rec *sha,
324 struct mtk_sha_reqctx *ctx = ahash_request_ctx(sha->req);
421 static int mtk_sha_xmit(struct mtk_cryp *cryp, struct mtk_sha_rec *sha,
425 struct mtk_sha_reqctx *ctx = ahash_request_ctx(sha->req);
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));
469 struct mtk_sha_rec *sha,
482 return mtk_sha_xmit(cryp, sha, ctx->dma_addr, count, 0, 0);
486 struct mtk_sha_rec *sha)
488 struct mtk_sha_reqctx *ctx = ahash_request_ctx(sha->req);
499 sha->flags |= SHA_FLAGS_FINAL;
507 return mtk_sha_dma_map(cryp, sha, ctx, count);
513 struct mtk_sha_rec *sha)
515 struct mtk_sha_reqctx *ctx = ahash_request_ctx(sha->req);
523 return mtk_sha_update_slow(cryp, sha);
528 return mtk_sha_update_slow(cryp, sha);
532 return mtk_sha_update_slow(cryp, sha);
569 sha->flags |= SHA_FLAGS_FINAL;
575 return mtk_sha_xmit(cryp, sha, ctx->dma_addr,
586 return mtk_sha_xmit(cryp, sha, sg_dma_address(ctx->sg),
598 return mtk_sha_xmit(cryp, sha, sg_dma_address(ctx->sg),
603 struct mtk_sha_rec *sha)
605 struct mtk_sha_reqctx *ctx = ahash_request_ctx(sha->req);
610 sha->flags |= SHA_FLAGS_FINAL;
614 return mtk_sha_dma_map(cryp, sha, ctx, count);
636 struct mtk_sha_rec *sha,
639 if (likely(!err && (SHA_FLAGS_FINAL & sha->flags)))
640 err = mtk_sha_finish(sha->req);
642 sha->flags &= ~(SHA_FLAGS_BUSY | SHA_FLAGS_FINAL);
644 sha->req->base.complete(&sha->req->base, err);
647 tasklet_schedule(&sha->queue_task);
653 struct mtk_sha_rec *sha = cryp->sha[id];
659 spin_lock_irqsave(&sha->lock, flags);
661 ret = ahash_enqueue_request(&sha->queue, req);
663 if (SHA_FLAGS_BUSY & sha->flags) {
664 spin_unlock_irqrestore(&sha->lock, flags);
668 backlog = crypto_get_backlog(&sha->queue);
669 async_req = crypto_dequeue_request(&sha->queue);
671 sha->flags |= SHA_FLAGS_BUSY;
672 spin_unlock_irqrestore(&sha->lock, flags);
683 sha->req = req;
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);
713 static void mtk_sha_unmap(struct mtk_cryp *cryp, struct mtk_sha_rec *sha)
715 struct mtk_sha_reqctx *ctx = ahash_request_ctx(sha->req);
737 struct mtk_sha_rec *sha)
741 err = mtk_sha_update_start(cryp, sha);
743 mtk_sha_finish_req(cryp, sha, err);
1168 struct mtk_sha_rec *sha = (struct mtk_sha_rec *)data;
1170 mtk_sha_handle_queue(sha->cryp, sha->id - MTK_RING2, NULL);
1175 struct mtk_sha_rec *sha = (struct mtk_sha_rec *)data;
1176 struct mtk_cryp *cryp = sha->cryp;
1178 mtk_sha_unmap(cryp, sha);
1179 mtk_sha_complete(cryp, sha);
1184 struct mtk_sha_rec *sha = (struct mtk_sha_rec *)dev_id;
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);
1190 if (likely((SHA_FLAGS_BUSY & sha->flags))) {
1191 mtk_sha_write(cryp, RDR_PROC_COUNT(sha->id), MTK_CNT_RST);
1192 mtk_sha_write(cryp, RDR_THRESH(sha->id),
1195 tasklet_schedule(&sha->done_task);
1208 struct mtk_sha_rec **sha = cryp->sha;
1212 sha[i] = kzalloc(sizeof(**sha), GFP_KERNEL);
1213 if (!sha[i])
1216 sha[i]->cryp = cryp;
1218 spin_lock_init(&sha[i]->lock);
1219 crypto_init_queue(&sha[i]->queue, SHA_QUEUE_SIZE);
1221 tasklet_init(&sha[i]->queue_task, mtk_sha_queue_task,
1222 (unsigned long)sha[i]);
1223 tasklet_init(&sha[i]->done_task, mtk_sha_done_task,
1224 (unsigned long)sha[i]);
1228 sha[0]->id = MTK_RING2;
1229 sha[1]->id = MTK_RING3;
1237 kfree(sha[i]);
1246 tasklet_kill(&cryp->sha[i]->done_task);
1247 tasklet_kill(&cryp->sha[i]->queue_task);
1249 kfree(cryp->sha[i]);
1305 0, "mtk-sha", cryp->sha[0]);
1307 dev_err(cryp->dev, "unable to request sha irq0.\n");
1312 0, "mtk-sha", cryp->sha[1]);
1314 dev_err(cryp->dev, "unable to request sha irq1.\n");
1340 dev_err(cryp->dev, "mtk-sha initialization failed.\n");