Lines Matching refs:rctx
307 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_write_ctrl() local
310 struct stm32_hash_state *state = &rctx->state; in stm32_hash_write_ctrl()
326 reg |= (rctx->data_type << HASH_CR_DATATYPE_POS); in stm32_hash_write_ctrl()
346 rctx->state.blocklen -= sizeof(u32); in stm32_hash_write_ctrl()
352 static void stm32_hash_append_sg(struct stm32_hash_request_ctx *rctx) in stm32_hash_append_sg() argument
354 struct stm32_hash_state *state = &rctx->state; in stm32_hash_append_sg()
357 while ((state->bufcnt < state->blocklen) && rctx->total) { in stm32_hash_append_sg()
358 count = min(rctx->sg->length - rctx->offset, rctx->total); in stm32_hash_append_sg()
362 if ((rctx->sg->length == 0) && !sg_is_last(rctx->sg)) { in stm32_hash_append_sg()
363 rctx->sg = sg_next(rctx->sg); in stm32_hash_append_sg()
371 rctx->sg, rctx->offset, count, 0); in stm32_hash_append_sg()
374 rctx->offset += count; in stm32_hash_append_sg()
375 rctx->total -= count; in stm32_hash_append_sg()
377 if (rctx->offset == rctx->sg->length) { in stm32_hash_append_sg()
378 rctx->sg = sg_next(rctx->sg); in stm32_hash_append_sg()
379 if (rctx->sg) in stm32_hash_append_sg()
380 rctx->offset = 0; in stm32_hash_append_sg()
382 rctx->total = 0; in stm32_hash_append_sg()
390 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_xmit_cpu() local
391 struct stm32_hash_state *state = &rctx->state; in stm32_hash_xmit_cpu()
449 static int hash_swap_reg(struct stm32_hash_request_ctx *rctx) in hash_swap_reg() argument
451 struct stm32_hash_state *state = &rctx->state; in hash_swap_reg()
490 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_update_cpu() local
491 struct stm32_hash_state *state = &rctx->state; in stm32_hash_update_cpu()
498 while ((rctx->total >= state->blocklen) || in stm32_hash_update_cpu()
499 (state->bufcnt + rctx->total >= state->blocklen)) { in stm32_hash_update_cpu()
500 stm32_hash_append_sg(rctx); in stm32_hash_update_cpu()
508 stm32_hash_append_sg(rctx); in stm32_hash_update_cpu()
593 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_hmac_dma_send() local
598 if (ctx->keylen < rctx->state.blocklen || hdev->dma_mode > 0) { in stm32_hash_hmac_dma_send()
604 sg_init_one(&rctx->sg_key, ctx->key, in stm32_hash_hmac_dma_send()
607 rctx->dma_ct = dma_map_sg(hdev->dev, &rctx->sg_key, 1, in stm32_hash_hmac_dma_send()
609 if (rctx->dma_ct == 0) { in stm32_hash_hmac_dma_send()
614 err = stm32_hash_xmit_dma(hdev, &rctx->sg_key, ctx->keylen, 0); in stm32_hash_hmac_dma_send()
616 dma_unmap_sg(hdev->dev, &rctx->sg_key, 1, DMA_TO_DEVICE); in stm32_hash_hmac_dma_send()
658 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_dma_send() local
659 u32 *buffer = (void *)rctx->state.buffer; in stm32_hash_dma_send()
668 __func__, rctx->total, rctx->state.bufcnt, final); in stm32_hash_dma_send()
670 if (rctx->nents < 0) in stm32_hash_dma_send()
682 for_each_sg(rctx->sg, tsg, rctx->nents, i) { in stm32_hash_dma_send()
686 if (sg_is_last(sg) || (bufcnt + sg[0].length) >= rctx->total) { in stm32_hash_dma_send()
690 sg_pcopy_to_buffer(rctx->sg, rctx->nents, &last_word, 4, len); in stm32_hash_dma_send()
697 sg->length = rctx->total - bufcnt; in stm32_hash_dma_send()
701 ncp = sg_pcopy_to_buffer(rctx->sg, rctx->nents, in stm32_hash_dma_send()
702 rctx->state.buffer, in stm32_hash_dma_send()
704 rctx->total - sg->length + len); in stm32_hash_dma_send()
721 rctx->dma_ct = dma_map_sg(hdev->dev, sg, 1, in stm32_hash_dma_send()
723 if (rctx->dma_ct == 0) { in stm32_hash_dma_send()
736 rctx->total -= len; in stm32_hash_dma_send()
817 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_init() local
819 struct stm32_hash_state *state = &rctx->state; in stm32_hash_init()
822 rctx->hdev = hdev; in stm32_hash_init()
831 rctx->digcnt = crypto_ahash_digestsize(tfm); in stm32_hash_init()
832 switch (rctx->digcnt) { in stm32_hash_init()
874 rctx->state.bufcnt = 0; in stm32_hash_init()
875 rctx->state.blocklen = crypto_ahash_blocksize(tfm) + sizeof(u32); in stm32_hash_init()
876 if (rctx->state.blocklen > HASH_BUFLEN) { in stm32_hash_init()
880 rctx->nents = 0; in stm32_hash_init()
881 rctx->total = 0; in stm32_hash_init()
882 rctx->offset = 0; in stm32_hash_init()
883 rctx->data_type = HASH_DATA_8_BITS; in stm32_hash_init()
895 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); in stm32_hash_update_req() local
896 struct stm32_hash_state *state = &rctx->state; in stm32_hash_update_req()
899 rctx->total, rctx->digcnt); in stm32_hash_update_req()
910 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_final_req() local
911 struct stm32_hash_state *state = &rctx->state; in stm32_hash_final_req()
931 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_emptymsg_fallback() local
932 struct stm32_hash_dev *hdev = rctx->hdev; in stm32_hash_emptymsg_fallback()
951 ret = crypto_shash_tfm_digest(ctx->xtfm, NULL, 0, rctx->digest); in stm32_hash_emptymsg_fallback()
959 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_copy_hash() local
960 struct stm32_hash_state *state = &rctx->state; in stm32_hash_copy_hash()
961 struct stm32_hash_dev *hdev = rctx->hdev; in stm32_hash_copy_hash()
962 __be32 *hash = (void *)rctx->digest; in stm32_hash_copy_hash()
982 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_finish() local
985 reg = stm32_hash_read(rctx->hdev, HASH_SR); in stm32_hash_finish()
987 stm32_hash_write(rctx->hdev, HASH_SR, reg); in stm32_hash_finish()
992 memcpy(req->result, rctx->digest, rctx->digcnt); in stm32_hash_finish()
999 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_finish_req() local
1000 struct stm32_hash_state *state = &rctx->state; in stm32_hash_finish_req()
1001 struct stm32_hash_dev *hdev = rctx->hdev; in stm32_hash_finish_req()
1030 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_one_request() local
1032 struct stm32_hash_state *state = &rctx->state; in stm32_hash_one_request()
1040 rctx->op, req->nbytes); in stm32_hash_one_request()
1050 swap_reg = hash_swap_reg(rctx); in stm32_hash_one_request()
1053 u32 *preg = rctx->state.hw_context; in stm32_hash_one_request()
1080 if (rctx->op == HASH_OP_UPDATE) in stm32_hash_one_request()
1082 else if (rctx->op == HASH_OP_FINAL) in stm32_hash_one_request()
1102 static int stm32_hash_copy_sgs(struct stm32_hash_request_ctx *rctx, in stm32_hash_copy_sgs() argument
1106 struct stm32_hash_state *state = &rctx->state; in stm32_hash_copy_sgs()
1119 memcpy(buf, rctx->hdev->xmit_buf, state->bufcnt); in stm32_hash_copy_sgs()
1121 scatterwalk_map_and_copy(buf + state->bufcnt, sg, rctx->offset, in stm32_hash_copy_sgs()
1122 min(new_len, rctx->total) - state->bufcnt, 0); in stm32_hash_copy_sgs()
1123 sg_init_table(rctx->sgl, 1); in stm32_hash_copy_sgs()
1124 sg_set_buf(rctx->sgl, buf, new_len); in stm32_hash_copy_sgs()
1125 rctx->sg = rctx->sgl; in stm32_hash_copy_sgs()
1127 rctx->nents = 1; in stm32_hash_copy_sgs()
1128 rctx->offset += new_len - state->bufcnt; in stm32_hash_copy_sgs()
1130 rctx->total = new_len; in stm32_hash_copy_sgs()
1137 struct stm32_hash_request_ctx *rctx) in stm32_hash_align_sgs() argument
1139 struct stm32_hash_state *state = &rctx->state; in stm32_hash_align_sgs()
1140 struct stm32_hash_dev *hdev = rctx->hdev; in stm32_hash_align_sgs()
1142 int offset = rctx->offset; in stm32_hash_align_sgs()
1152 sg_init_table(rctx->sgl, 1); in stm32_hash_align_sgs()
1153 sg_set_buf(rctx->sgl, rctx->hdev->xmit_buf, bufcnt); in stm32_hash_align_sgs()
1154 rctx->sg = rctx->sgl; in stm32_hash_align_sgs()
1155 rctx->nents = 1; in stm32_hash_align_sgs()
1236 return stm32_hash_copy_sgs(rctx, sg, bs, new_len); in stm32_hash_align_sgs()
1238 rctx->total = new_len; in stm32_hash_align_sgs()
1239 rctx->offset += new_len; in stm32_hash_align_sgs()
1240 rctx->nents = n; in stm32_hash_align_sgs()
1242 sg_init_table(rctx->sgl, 2); in stm32_hash_align_sgs()
1243 sg_set_buf(rctx->sgl, rctx->hdev->xmit_buf, state->bufcnt); in stm32_hash_align_sgs()
1244 sg_chain(rctx->sgl, 2, sg); in stm32_hash_align_sgs()
1245 rctx->sg = rctx->sgl; in stm32_hash_align_sgs()
1247 rctx->sg = sg; in stm32_hash_align_sgs()
1257 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_prepare_request() local
1259 struct stm32_hash_state *state = &rctx->state; in stm32_hash_prepare_request()
1262 bool update = rctx->op & HASH_OP_UPDATE; in stm32_hash_prepare_request()
1280 nbytes += req->nbytes - rctx->offset; in stm32_hash_prepare_request()
1284 __func__, nbytes, bs, rctx->total, rctx->offset, state->bufcnt); in stm32_hash_prepare_request()
1289 rctx->total = nbytes; in stm32_hash_prepare_request()
1299 rctx->offset = len; in stm32_hash_prepare_request()
1306 ret = stm32_hash_align_sgs(req->src, nbytes, bs, init, final, rctx); in stm32_hash_prepare_request()
1310 hash_later = nbytes - rctx->total; in stm32_hash_prepare_request()
1331 rctx->total = min(nbytes, rctx->total); in stm32_hash_prepare_request()
1338 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_unprepare_request() local
1339 struct stm32_hash_state *state = &rctx->state; in stm32_hash_unprepare_request()
1349 free_pages((unsigned long)sg_virt(rctx->sg), get_order(rctx->sg->length)); in stm32_hash_unprepare_request()
1351 rctx->sg = NULL; in stm32_hash_unprepare_request()
1352 rctx->offset = 0; in stm32_hash_unprepare_request()
1366 swap_reg = hash_swap_reg(rctx); in stm32_hash_unprepare_request()
1382 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_enqueue() local
1386 rctx->op = op; in stm32_hash_enqueue()
1393 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_update() local
1394 struct stm32_hash_state *state = &rctx->state; in stm32_hash_update()
1401 rctx->total = req->nbytes; in stm32_hash_update()
1402 rctx->sg = req->src; in stm32_hash_update()
1403 rctx->offset = 0; in stm32_hash_update()
1405 if ((state->bufcnt + rctx->total < state->blocklen)) { in stm32_hash_update()
1406 stm32_hash_append_sg(rctx); in stm32_hash_update()
1423 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_final() local
1424 struct stm32_hash_state *state = &rctx->state; in stm32_hash_final()
1433 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_finup() local
1434 struct stm32_hash_state *state = &rctx->state; in stm32_hash_finup()
1442 rctx->total = req->nbytes; in stm32_hash_finup()
1443 rctx->sg = req->src; in stm32_hash_finup()
1444 rctx->offset = 0; in stm32_hash_finup()
1458 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_export() local
1460 memcpy(out, &rctx->state, sizeof(rctx->state)); in stm32_hash_export()
1467 struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); in stm32_hash_import() local
1470 memcpy(&rctx->state, in, sizeof(rctx->state)); in stm32_hash_import()