diff options
Diffstat (limited to 'drivers/crypto/stm32/stm32-hash.c')
-rw-r--r-- | drivers/crypto/stm32/stm32-hash.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/crypto/stm32/stm32-hash.c b/drivers/crypto/stm32/stm32-hash.c index b585ce54a802..4835dd4a9e50 100644 --- a/drivers/crypto/stm32/stm32-hash.c +++ b/drivers/crypto/stm32/stm32-hash.c | |||
@@ -553,9 +553,9 @@ static int stm32_hash_dma_send(struct stm32_hash_dev *hdev) | |||
553 | { | 553 | { |
554 | struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); | 554 | struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req); |
555 | struct scatterlist sg[1], *tsg; | 555 | struct scatterlist sg[1], *tsg; |
556 | int err = 0, len = 0, reg, ncp; | 556 | int err = 0, len = 0, reg, ncp = 0; |
557 | unsigned int i; | 557 | unsigned int i; |
558 | const u32 *buffer = (const u32 *)rctx->buffer; | 558 | u32 *buffer = (void *)rctx->buffer; |
559 | 559 | ||
560 | rctx->sg = hdev->req->src; | 560 | rctx->sg = hdev->req->src; |
561 | rctx->total = hdev->req->nbytes; | 561 | rctx->total = hdev->req->nbytes; |
@@ -620,10 +620,13 @@ static int stm32_hash_dma_send(struct stm32_hash_dev *hdev) | |||
620 | reg |= HASH_CR_DMAA; | 620 | reg |= HASH_CR_DMAA; |
621 | stm32_hash_write(hdev, HASH_CR, reg); | 621 | stm32_hash_write(hdev, HASH_CR, reg); |
622 | 622 | ||
623 | for (i = 0; i < DIV_ROUND_UP(ncp, sizeof(u32)); i++) | 623 | if (ncp) { |
624 | stm32_hash_write(hdev, HASH_DIN, buffer[i]); | 624 | memset(buffer + ncp, 0, |
625 | 625 | DIV_ROUND_UP(ncp, sizeof(u32)) - ncp); | |
626 | stm32_hash_set_nblw(hdev, ncp); | 626 | writesl(hdev->io_base + HASH_DIN, buffer, |
627 | DIV_ROUND_UP(ncp, sizeof(u32))); | ||
628 | } | ||
629 | stm32_hash_set_nblw(hdev, DIV_ROUND_UP(ncp, sizeof(u32))); | ||
627 | reg = stm32_hash_read(hdev, HASH_STR); | 630 | reg = stm32_hash_read(hdev, HASH_STR); |
628 | reg |= HASH_STR_DCAL; | 631 | reg |= HASH_STR_DCAL; |
629 | stm32_hash_write(hdev, HASH_STR, reg); | 632 | stm32_hash_write(hdev, HASH_STR, reg); |