Lines Matching refs:rctx
253 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_write_ctrl() local
260 switch (rctx->flags & HASH_FLAGS_ALGO_MASK) { in stm32_hash_write_ctrl()
277 reg |= (rctx->data_type << HASH_CR_DATATYPE_POS); in stm32_hash_write_ctrl()
279 if (rctx->flags & HASH_FLAGS_HMAC) { in stm32_hash_write_ctrl()
296 static void stm32_hash_append_sg(struct stm32_hash_request_ctx *rctx) in stm32_hash_append_sg() argument
300 while ((rctx->bufcnt < rctx->buflen) && rctx->total) { in stm32_hash_append_sg()
301 count = min(rctx->sg->length - rctx->offset, rctx->total); in stm32_hash_append_sg()
302 count = min(count, rctx->buflen - rctx->bufcnt); in stm32_hash_append_sg()
305 if ((rctx->sg->length == 0) && !sg_is_last(rctx->sg)) { in stm32_hash_append_sg()
306 rctx->sg = sg_next(rctx->sg); in stm32_hash_append_sg()
313 scatterwalk_map_and_copy(rctx->buffer + rctx->bufcnt, rctx->sg, in stm32_hash_append_sg()
314 rctx->offset, count, 0); in stm32_hash_append_sg()
316 rctx->bufcnt += count; in stm32_hash_append_sg()
317 rctx->offset += count; in stm32_hash_append_sg()
318 rctx->total -= count; in stm32_hash_append_sg()
320 if (rctx->offset == rctx->sg->length) { in stm32_hash_append_sg()
321 rctx->sg = sg_next(rctx->sg); in stm32_hash_append_sg()
322 if (rctx->sg) in stm32_hash_append_sg()
323 rctx->offset = 0; in stm32_hash_append_sg()
325 rctx->total = 0; in stm32_hash_append_sg()
381 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_update_cpu() local
384 dev_dbg(hdev->dev, "%s flags %lx\n", __func__, rctx->flags); in stm32_hash_update_cpu()
386 final = (rctx->flags & HASH_FLAGS_FINUP); in stm32_hash_update_cpu()
388 while ((rctx->total >= rctx->buflen) || in stm32_hash_update_cpu()
389 (rctx->bufcnt + rctx->total >= rctx->buflen)) { in stm32_hash_update_cpu()
390 stm32_hash_append_sg(rctx); in stm32_hash_update_cpu()
391 bufcnt = rctx->bufcnt; in stm32_hash_update_cpu()
392 rctx->bufcnt = 0; in stm32_hash_update_cpu()
393 err = stm32_hash_xmit_cpu(hdev, rctx->buffer, bufcnt, 0); in stm32_hash_update_cpu()
396 stm32_hash_append_sg(rctx); in stm32_hash_update_cpu()
399 bufcnt = rctx->bufcnt; in stm32_hash_update_cpu()
400 rctx->bufcnt = 0; in stm32_hash_update_cpu()
401 err = stm32_hash_xmit_cpu(hdev, rctx->buffer, bufcnt, in stm32_hash_update_cpu()
402 (rctx->flags & HASH_FLAGS_FINUP)); in stm32_hash_update_cpu()
479 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_hmac_dma_send() local
490 sg_init_one(&rctx->sg_key, ctx->key, in stm32_hash_hmac_dma_send()
493 rctx->dma_ct = dma_map_sg(hdev->dev, &rctx->sg_key, 1, in stm32_hash_hmac_dma_send()
495 if (rctx->dma_ct == 0) { in stm32_hash_hmac_dma_send()
500 err = stm32_hash_xmit_dma(hdev, &rctx->sg_key, ctx->keylen, 0); in stm32_hash_hmac_dma_send()
502 dma_unmap_sg(hdev->dev, &rctx->sg_key, 1, DMA_TO_DEVICE); in stm32_hash_hmac_dma_send()
544 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_dma_send() local
548 u32 *buffer = (void *)rctx->buffer; in stm32_hash_dma_send()
550 rctx->sg = hdev->req->src; in stm32_hash_dma_send()
551 rctx->total = hdev->req->nbytes; in stm32_hash_dma_send()
553 rctx->nents = sg_nents(rctx->sg); in stm32_hash_dma_send()
555 if (rctx->nents < 0) in stm32_hash_dma_send()
566 for_each_sg(rctx->sg, tsg, rctx->nents, i) { in stm32_hash_dma_send()
575 rctx->sg, rctx->nents, in stm32_hash_dma_send()
576 rctx->buffer, sg->length - len, in stm32_hash_dma_send()
577 rctx->total - sg->length + len); in stm32_hash_dma_send()
589 rctx->dma_ct = dma_map_sg(hdev->dev, sg, 1, in stm32_hash_dma_send()
591 if (rctx->dma_ct == 0) { in stm32_hash_dma_send()
685 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_init() local
688 rctx->hdev = hdev; in stm32_hash_init()
690 rctx->flags = HASH_FLAGS_CPU; in stm32_hash_init()
692 rctx->digcnt = crypto_ahash_digestsize(tfm); in stm32_hash_init()
693 switch (rctx->digcnt) { in stm32_hash_init()
695 rctx->flags |= HASH_FLAGS_MD5; in stm32_hash_init()
698 rctx->flags |= HASH_FLAGS_SHA1; in stm32_hash_init()
701 rctx->flags |= HASH_FLAGS_SHA224; in stm32_hash_init()
704 rctx->flags |= HASH_FLAGS_SHA256; in stm32_hash_init()
710 rctx->bufcnt = 0; in stm32_hash_init()
711 rctx->buflen = HASH_BUFLEN; in stm32_hash_init()
712 rctx->total = 0; in stm32_hash_init()
713 rctx->offset = 0; in stm32_hash_init()
714 rctx->data_type = HASH_DATA_8_BITS; in stm32_hash_init()
716 memset(rctx->buffer, 0, HASH_BUFLEN); in stm32_hash_init()
719 rctx->flags |= HASH_FLAGS_HMAC; in stm32_hash_init()
721 dev_dbg(hdev->dev, "%s Flags %lx\n", __func__, rctx->flags); in stm32_hash_init()
734 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_final_req() local
736 int buflen = rctx->bufcnt; in stm32_hash_final_req()
738 rctx->bufcnt = 0; in stm32_hash_final_req()
740 if (!(rctx->flags & HASH_FLAGS_CPU)) in stm32_hash_final_req()
743 err = stm32_hash_xmit_cpu(hdev, rctx->buffer, buflen, 1); in stm32_hash_final_req()
751 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_copy_hash() local
752 __be32 *hash = (void *)rctx->digest; in stm32_hash_copy_hash()
755 switch (rctx->flags & HASH_FLAGS_ALGO_MASK) { in stm32_hash_copy_hash()
773 hash[i] = cpu_to_be32(stm32_hash_read(rctx->hdev, in stm32_hash_copy_hash()
779 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_finish() local
784 memcpy(req->result, rctx->digest, rctx->digcnt); in stm32_hash_finish()
791 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_finish_req() local
792 struct stm32_hash_dev *hdev = rctx->hdev; in stm32_hash_finish_req()
803 rctx->flags |= HASH_FLAGS_ERRORS; in stm32_hash_finish_req()
813 struct stm32_hash_request_ctx *rctx) in stm32_hash_hw_init() argument
843 struct stm32_hash_request_ctx *rctx; in stm32_hash_prepare_req() local
850 rctx = ahash_request_ctx(req); in stm32_hash_prepare_req()
853 rctx->op, req->nbytes); in stm32_hash_prepare_req()
855 return stm32_hash_hw_init(hdev, rctx); in stm32_hash_prepare_req()
864 struct stm32_hash_request_ctx *rctx; in stm32_hash_one_request() local
872 rctx = ahash_request_ctx(req); in stm32_hash_one_request()
874 if (rctx->op == HASH_OP_UPDATE) in stm32_hash_one_request()
876 else if (rctx->op == HASH_OP_FINAL) in stm32_hash_one_request()
888 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_enqueue() local
892 rctx->op = op; in stm32_hash_enqueue()
899 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_update() local
901 if (!req->nbytes || !(rctx->flags & HASH_FLAGS_CPU)) in stm32_hash_update()
904 rctx->total = req->nbytes; in stm32_hash_update()
905 rctx->sg = req->src; in stm32_hash_update()
906 rctx->offset = 0; in stm32_hash_update()
908 if ((rctx->bufcnt + rctx->total < rctx->buflen)) { in stm32_hash_update()
909 stm32_hash_append_sg(rctx); in stm32_hash_update()
918 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_final() local
920 rctx->flags |= HASH_FLAGS_FINUP; in stm32_hash_final()
927 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_finup() local
932 rctx->flags |= HASH_FLAGS_FINUP; in stm32_hash_finup()
935 rctx->flags &= ~HASH_FLAGS_CPU; in stm32_hash_finup()
958 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_export() local
969 rctx->hw_context = kmalloc_array(3 + HASH_CSR_REGISTER_NUMBER, in stm32_hash_export()
973 preg = rctx->hw_context; in stm32_hash_export()
984 memcpy(out, rctx, sizeof(*rctx)); in stm32_hash_export()
991 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_import() local
998 memcpy(rctx, in, sizeof(*rctx)); in stm32_hash_import()
1000 preg = rctx->hw_context; in stm32_hash_import()
1016 kfree(rctx->hw_context); in stm32_hash_import()