Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- a/drivers/crypto/omap-aes.c 2010-09-22 16:12:40.000000000 +0200
- +++ b/drivers/crypto/omap-aes.c 2010-11-09 13:55:23.040243022 +0100
- @@ -219,6 +219,12 @@
- if (dd->flags & FLAGS_ENCRYPT)
- val |= AES_REG_CTRL_DIRECTION;
- +#if 0
- + /* it will not affect DMA error but might solve crypto issue */
- + dd->ctx->flags |= FLAGS_NEW_KEY;
- + dd->ctx->flags |= FLAGS_NEW_IV;
- +#endif
- +
- if (dd->ctrl == val && !(dd->flags & FLAGS_NEW_IV) &&
- !(dd->ctx->flags & FLAGS_NEW_KEY))
- goto out;
- @@ -339,18 +345,6 @@
- goto err_dma_out;
- }
- - omap_set_dma_dest_params(dd->dma_lch_in, 0, OMAP_DMA_AMODE_CONSTANT,
- - dd->phys_base + AES_REG_DATA, 0, 4);
- -
- - omap_set_dma_dest_burst_mode(dd->dma_lch_in, OMAP_DMA_DATA_BURST_4);
- - omap_set_dma_src_burst_mode(dd->dma_lch_in, OMAP_DMA_DATA_BURST_4);
- -
- - omap_set_dma_src_params(dd->dma_lch_out, 0, OMAP_DMA_AMODE_CONSTANT,
- - dd->phys_base + AES_REG_DATA, 0, 4);
- -
- - omap_set_dma_src_burst_mode(dd->dma_lch_out, OMAP_DMA_DATA_BURST_4);
- - omap_set_dma_dest_burst_mode(dd->dma_lch_out, OMAP_DMA_DATA_BURST_4);
- -
- return 0;
- err_dma_out:
- @@ -458,11 +452,24 @@
- omap_set_dma_dest_params(dd->dma_lch_out, 0, OMAP_DMA_AMODE_POST_INC,
- dma_addr_out, 0, 0);
- - omap_start_dma(dd->dma_lch_in);
- - omap_start_dma(dd->dma_lch_out);
- + /**/
- + omap_set_dma_dest_params(dd->dma_lch_in, 0, OMAP_DMA_AMODE_CONSTANT,
- + dd->phys_base + AES_REG_DATA, 0, 4);
- +
- + omap_set_dma_dest_burst_mode(dd->dma_lch_in, OMAP_DMA_DATA_BURST_4);
- + omap_set_dma_src_burst_mode(dd->dma_lch_in, OMAP_DMA_DATA_BURST_4);
- +
- + omap_set_dma_src_params(dd->dma_lch_out, 0, OMAP_DMA_AMODE_CONSTANT,
- + dd->phys_base + AES_REG_DATA, 0, 4);
- +
- + omap_set_dma_src_burst_mode(dd->dma_lch_out, OMAP_DMA_DATA_BURST_4);
- + omap_set_dma_dest_burst_mode(dd->dma_lch_out, OMAP_DMA_DATA_BURST_4);
- omap_aes_write_ctrl(dd);
- + omap_start_dma(dd->dma_lch_in);
- + omap_start_dma(dd->dma_lch_out);
- +
- return 0;
- }
- @@ -525,8 +532,6 @@
- dd->total -= count;
- - err = omap_aes_hw_init(dd);
- -
- err = omap_aes_crypt_dma(tfm, addr_in, addr_out, count);
- return err;
- @@ -553,8 +558,6 @@
- omap_aes_write_mask(dd, AES_REG_MASK, 0, AES_REG_MASK_START);
- - omap_aes_hw_cleanup(dd);
- -
- omap_stop_dma(dd->dma_lch_in);
- omap_stop_dma(dd->dma_lch_out);
- @@ -594,8 +597,10 @@
- spin_lock_irqsave(&dd->lock, flags);
- backlog = crypto_get_backlog(&dd->queue);
- async_req = crypto_dequeue_request(&dd->queue);
- - if (!async_req)
- + if (!async_req) {
- + omap_aes_hw_cleanup(dd);
- clear_bit(FLAGS_BUSY, &dd->flags);
- + }
- spin_unlock_irqrestore(&dd->lock, flags);
- if (!async_req)
- @@ -678,8 +683,10 @@
- err = ablkcipher_enqueue_request(&dd->queue, req);
- spin_unlock_irqrestore(&dd->lock, flags);
- - if (!test_and_set_bit(FLAGS_BUSY, &dd->flags))
- + if (!test_and_set_bit(FLAGS_BUSY, &dd->flags)) {
- + omap_aes_hw_init(dd);
- omap_aes_handle_req(dd);
- + }
- pr_debug("exit\n");
Advertisement
Add Comment
Please, Sign In to add comment