• Home
  • Raw
  • Download

Lines Matching full:cryp

105 	struct mtk_cryp *cryp;  member
152 static inline u32 mtk_aes_read(struct mtk_cryp *cryp, u32 offset) in mtk_aes_read() argument
154 return readl_relaxed(cryp->base + offset); in mtk_aes_read()
157 static inline void mtk_aes_write(struct mtk_cryp *cryp, in mtk_aes_write() argument
160 writel_relaxed(value, cryp->base + offset); in mtk_aes_write()
165 struct mtk_cryp *cryp = NULL; in mtk_aes_find_dev() local
169 if (!ctx->cryp) { in mtk_aes_find_dev()
171 cryp = tmp; in mtk_aes_find_dev()
174 ctx->cryp = cryp; in mtk_aes_find_dev()
176 cryp = ctx->cryp; in mtk_aes_find_dev()
180 return cryp; in mtk_aes_find_dev()
260 static inline int mtk_aes_complete(struct mtk_cryp *cryp, in mtk_aes_complete() argument
275 static int mtk_aes_xmit(struct mtk_cryp *cryp, struct mtk_aes_rec *aes) in mtk_aes_xmit() argument
277 struct mtk_ring *ring = cryp->ring[aes->id]; in mtk_aes_xmit()
331 mtk_aes_write(cryp, RDR_PREP_COUNT(aes->id), MTK_DESC_CNT(dlen)); in mtk_aes_xmit()
332 mtk_aes_write(cryp, CDR_PREP_COUNT(aes->id), MTK_DESC_CNT(slen)); in mtk_aes_xmit()
337 static void mtk_aes_unmap(struct mtk_cryp *cryp, struct mtk_aes_rec *aes) in mtk_aes_unmap() argument
341 dma_unmap_single(cryp->dev, ctx->ct_dma, sizeof(ctx->info), in mtk_aes_unmap()
345 dma_unmap_sg(cryp->dev, aes->src.sg, aes->src.nents, in mtk_aes_unmap()
351 dma_unmap_sg(cryp->dev, aes->dst.sg, aes->dst.nents, in mtk_aes_unmap()
357 dma_unmap_sg(cryp->dev, aes->src.sg, aes->src.nents, in mtk_aes_unmap()
369 static int mtk_aes_map(struct mtk_cryp *cryp, struct mtk_aes_rec *aes) in mtk_aes_map() argument
374 ctx->ct_dma = dma_map_single(cryp->dev, info, sizeof(*info), in mtk_aes_map()
376 if (unlikely(dma_mapping_error(cryp->dev, ctx->ct_dma))) in mtk_aes_map()
382 aes->src.sg_len = dma_map_sg(cryp->dev, aes->src.sg, in mtk_aes_map()
389 aes->src.sg_len = dma_map_sg(cryp->dev, aes->src.sg, in mtk_aes_map()
394 aes->dst.sg_len = dma_map_sg(cryp->dev, aes->dst.sg, in mtk_aes_map()
397 dma_unmap_sg(cryp->dev, aes->src.sg, aes->src.nents, in mtk_aes_map()
403 return mtk_aes_xmit(cryp, aes); in mtk_aes_map()
406 dma_unmap_single(cryp->dev, ctx->ct_dma, sizeof(*info), DMA_TO_DEVICE); in mtk_aes_map()
408 return mtk_aes_complete(cryp, aes, -EINVAL); in mtk_aes_map()
412 static void mtk_aes_info_init(struct mtk_cryp *cryp, struct mtk_aes_rec *aes, in mtk_aes_info_init() argument
456 static int mtk_aes_dma(struct mtk_cryp *cryp, struct mtk_aes_rec *aes, in mtk_aes_dma() argument
478 return mtk_aes_complete(cryp, aes, -ENOMEM); in mtk_aes_dma()
497 mtk_aes_info_init(cryp, aes, len + padlen); in mtk_aes_dma()
499 return mtk_aes_map(cryp, aes); in mtk_aes_dma()
502 static int mtk_aes_handle_queue(struct mtk_cryp *cryp, u8 id, in mtk_aes_handle_queue() argument
505 struct mtk_aes_rec *aes = cryp->aes[id]; in mtk_aes_handle_queue()
535 return ctx->start(cryp, aes); in mtk_aes_handle_queue()
538 static int mtk_aes_transfer_complete(struct mtk_cryp *cryp, in mtk_aes_transfer_complete() argument
541 return mtk_aes_complete(cryp, aes, 0); in mtk_aes_transfer_complete()
544 static int mtk_aes_start(struct mtk_cryp *cryp, struct mtk_aes_rec *aes) in mtk_aes_start() argument
552 return mtk_aes_dma(cryp, aes, req->src, req->dst, req->nbytes); in mtk_aes_start()
561 static int mtk_aes_ctr_transfer(struct mtk_cryp *cryp, struct mtk_aes_rec *aes) in mtk_aes_ctr_transfer() argument
574 return mtk_aes_transfer_complete(cryp, aes); in mtk_aes_ctr_transfer()
608 return mtk_aes_dma(cryp, aes, src, dst, datalen); in mtk_aes_ctr_transfer()
611 static int mtk_aes_ctr_start(struct mtk_cryp *cryp, struct mtk_aes_rec *aes) in mtk_aes_ctr_start() argument
624 return mtk_aes_ctr_transfer(cryp, aes); in mtk_aes_ctr_start()
664 return mtk_aes_handle_queue(ctx->cryp, !(mode & AES_FLAGS_ENCRYPT), in mtk_aes_crypt()
701 struct mtk_cryp *cryp = NULL; in mtk_aes_cra_init() local
703 cryp = mtk_aes_find_dev(&ctx->base); in mtk_aes_cra_init()
704 if (!cryp) { in mtk_aes_cra_init()
717 struct mtk_cryp *cryp = NULL; in mtk_aes_ctr_cra_init() local
719 cryp = mtk_aes_find_dev(&ctx->base); in mtk_aes_ctr_cra_init()
720 if (!cryp) { in mtk_aes_ctr_cra_init()
805 static int mtk_aes_gcm_tag_verify(struct mtk_cryp *cryp, in mtk_aes_gcm_tag_verify() argument
808 u32 status = cryp->ring[aes->id]->res_prev->ct; in mtk_aes_gcm_tag_verify()
810 return mtk_aes_complete(cryp, aes, (status & AES_AUTH_TAG_ERR) ? in mtk_aes_gcm_tag_verify()
815 static void mtk_aes_gcm_info_init(struct mtk_cryp *cryp, in mtk_aes_gcm_info_init() argument
853 static int mtk_aes_gcm_dma(struct mtk_cryp *cryp, struct mtk_aes_rec *aes, in mtk_aes_gcm_dma() argument
871 return mtk_aes_complete(cryp, aes, -ENOMEM); in mtk_aes_gcm_dma()
890 mtk_aes_gcm_info_init(cryp, aes, len); in mtk_aes_gcm_dma()
892 return mtk_aes_map(cryp, aes); in mtk_aes_gcm_dma()
896 static int mtk_aes_gcm_start(struct mtk_cryp *cryp, struct mtk_aes_rec *aes) in mtk_aes_gcm_start() argument
921 return mtk_aes_gcm_dma(cryp, aes, req->src, req->dst, len); in mtk_aes_gcm_start()
936 return mtk_aes_handle_queue(ctx->cryp, !!(mode & AES_FLAGS_ENCRYPT), in mtk_aes_gcm_crypt()
1052 struct mtk_cryp *cryp = NULL; in mtk_aes_gcm_init() local
1054 cryp = mtk_aes_find_dev(&ctx->base); in mtk_aes_gcm_init()
1055 if (!cryp) { in mtk_aes_gcm_init()
1105 mtk_aes_handle_queue(aes->cryp, aes->id, NULL); in mtk_aes_queue_task()
1111 struct mtk_cryp *cryp = aes->cryp; in mtk_aes_done_task() local
1113 mtk_aes_unmap(cryp, aes); in mtk_aes_done_task()
1114 aes->resume(cryp, aes); in mtk_aes_done_task()
1120 struct mtk_cryp *cryp = aes->cryp; in mtk_aes_irq() local
1121 u32 val = mtk_aes_read(cryp, RDR_STAT(aes->id)); in mtk_aes_irq()
1123 mtk_aes_write(cryp, RDR_STAT(aes->id), val); in mtk_aes_irq()
1126 mtk_aes_write(cryp, RDR_PROC_COUNT(aes->id), MTK_CNT_RST); in mtk_aes_irq()
1127 mtk_aes_write(cryp, RDR_THRESH(aes->id), in mtk_aes_irq()
1132 dev_warn(cryp->dev, "AES interrupt when no active requests.\n"); in mtk_aes_irq()
1143 static int mtk_aes_record_init(struct mtk_cryp *cryp) in mtk_aes_record_init() argument
1145 struct mtk_aes_rec **aes = cryp->aes; in mtk_aes_record_init()
1158 aes[i]->cryp = cryp; in mtk_aes_record_init()
1184 static void mtk_aes_record_free(struct mtk_cryp *cryp) in mtk_aes_record_free() argument
1189 tasklet_kill(&cryp->aes[i]->done_task); in mtk_aes_record_free()
1190 tasklet_kill(&cryp->aes[i]->queue_task); in mtk_aes_record_free()
1192 free_page((unsigned long)cryp->aes[i]->buf); in mtk_aes_record_free()
1193 kfree(cryp->aes[i]); in mtk_aes_record_free()
1230 int mtk_cipher_alg_register(struct mtk_cryp *cryp) in mtk_cipher_alg_register() argument
1234 INIT_LIST_HEAD(&cryp->aes_list); in mtk_cipher_alg_register()
1237 ret = mtk_aes_record_init(cryp); in mtk_cipher_alg_register()
1241 ret = devm_request_irq(cryp->dev, cryp->irq[MTK_RING0], mtk_aes_irq, in mtk_cipher_alg_register()
1242 0, "mtk-aes", cryp->aes[0]); in mtk_cipher_alg_register()
1244 dev_err(cryp->dev, "unable to request AES irq.\n"); in mtk_cipher_alg_register()
1248 ret = devm_request_irq(cryp->dev, cryp->irq[MTK_RING1], mtk_aes_irq, in mtk_cipher_alg_register()
1249 0, "mtk-aes", cryp->aes[1]); in mtk_cipher_alg_register()
1251 dev_err(cryp->dev, "unable to request AES irq.\n"); in mtk_cipher_alg_register()
1256 mtk_aes_write(cryp, AIC_ENABLE_SET(MTK_RING0), MTK_IRQ_RDR0); in mtk_cipher_alg_register()
1257 mtk_aes_write(cryp, AIC_ENABLE_SET(MTK_RING1), MTK_IRQ_RDR1); in mtk_cipher_alg_register()
1260 list_add_tail(&cryp->aes_list, &mtk_aes.dev_list); in mtk_cipher_alg_register()
1271 list_del(&cryp->aes_list); in mtk_cipher_alg_register()
1274 mtk_aes_record_free(cryp); in mtk_cipher_alg_register()
1277 dev_err(cryp->dev, "mtk-aes initialization failed.\n"); in mtk_cipher_alg_register()
1281 void mtk_cipher_alg_release(struct mtk_cryp *cryp) in mtk_cipher_alg_release() argument
1284 list_del(&cryp->aes_list); in mtk_cipher_alg_release()
1288 mtk_aes_record_free(cryp); in mtk_cipher_alg_release()