diff options
| -rw-r--r-- | drivers/crypto/caam/jr.c | 45 |
1 files changed, 9 insertions, 36 deletions
diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c index 7074a1a29e8b..53c8c51d5881 100644 --- a/drivers/crypto/caam/jr.c +++ b/drivers/crypto/caam/jr.c | |||
| @@ -339,10 +339,11 @@ static int caam_jr_init(struct device *dev) | |||
| 339 | if (error) | 339 | if (error) |
| 340 | return error; | 340 | return error; |
| 341 | 341 | ||
| 342 | jrp->inpring = kzalloc(sizeof(dma_addr_t) * JOBR_DEPTH, | 342 | jrp->inpring = dma_alloc_coherent(dev, sizeof(dma_addr_t) * JOBR_DEPTH, |
| 343 | GFP_KERNEL | GFP_DMA); | 343 | &inpbusaddr, GFP_KERNEL); |
| 344 | jrp->outring = kzalloc(sizeof(struct jr_outentry) * | 344 | |
| 345 | JOBR_DEPTH, GFP_KERNEL | GFP_DMA); | 345 | jrp->outring = dma_alloc_coherent(dev, sizeof(struct jr_outentry) * |
| 346 | JOBR_DEPTH, &outbusaddr, GFP_KERNEL); | ||
| 346 | 347 | ||
| 347 | jrp->entinfo = kzalloc(sizeof(struct caam_jrentry_info) * JOBR_DEPTH, | 348 | jrp->entinfo = kzalloc(sizeof(struct caam_jrentry_info) * JOBR_DEPTH, |
| 348 | GFP_KERNEL); | 349 | GFP_KERNEL); |
| @@ -358,31 +359,6 @@ static int caam_jr_init(struct device *dev) | |||
| 358 | jrp->entinfo[i].desc_addr_dma = !0; | 359 | jrp->entinfo[i].desc_addr_dma = !0; |
| 359 | 360 | ||
| 360 | /* Setup rings */ | 361 | /* Setup rings */ |
| 361 | inpbusaddr = dma_map_single(dev, jrp->inpring, | ||
| 362 | sizeof(dma_addr_t) * JOBR_DEPTH, | ||
| 363 | DMA_BIDIRECTIONAL); | ||
| 364 | if (dma_mapping_error(dev, inpbusaddr)) { | ||
| 365 | dev_err(dev, "caam_jr_init(): can't map input ring\n"); | ||
| 366 | kfree(jrp->inpring); | ||
| 367 | kfree(jrp->outring); | ||
| 368 | kfree(jrp->entinfo); | ||
| 369 | return -EIO; | ||
| 370 | } | ||
| 371 | |||
| 372 | outbusaddr = dma_map_single(dev, jrp->outring, | ||
| 373 | sizeof(struct jr_outentry) * JOBR_DEPTH, | ||
| 374 | DMA_BIDIRECTIONAL); | ||
| 375 | if (dma_mapping_error(dev, outbusaddr)) { | ||
| 376 | dev_err(dev, "caam_jr_init(): can't map output ring\n"); | ||
| 377 | dma_unmap_single(dev, inpbusaddr, | ||
| 378 | sizeof(dma_addr_t) * JOBR_DEPTH, | ||
| 379 | DMA_BIDIRECTIONAL); | ||
| 380 | kfree(jrp->inpring); | ||
| 381 | kfree(jrp->outring); | ||
| 382 | kfree(jrp->entinfo); | ||
| 383 | return -EIO; | ||
| 384 | } | ||
| 385 | |||
| 386 | jrp->inp_ring_write_index = 0; | 362 | jrp->inp_ring_write_index = 0; |
| 387 | jrp->out_ring_read_index = 0; | 363 | jrp->out_ring_read_index = 0; |
| 388 | jrp->head = 0; | 364 | jrp->head = 0; |
| @@ -426,13 +402,10 @@ int caam_jr_shutdown(struct device *dev) | |||
| 426 | /* Free rings */ | 402 | /* Free rings */ |
| 427 | inpbusaddr = rd_reg64(&jrp->rregs->inpring_base); | 403 | inpbusaddr = rd_reg64(&jrp->rregs->inpring_base); |
| 428 | outbusaddr = rd_reg64(&jrp->rregs->outring_base); | 404 | outbusaddr = rd_reg64(&jrp->rregs->outring_base); |
| 429 | dma_unmap_single(dev, outbusaddr, | 405 | dma_free_coherent(dev, sizeof(dma_addr_t) * JOBR_DEPTH, |
| 430 | sizeof(struct jr_outentry) * JOBR_DEPTH, | 406 | jrp->inpring, inpbusaddr); |
| 431 | DMA_BIDIRECTIONAL); | 407 | dma_free_coherent(dev, sizeof(struct jr_outentry) * JOBR_DEPTH, |
| 432 | dma_unmap_single(dev, inpbusaddr, sizeof(dma_addr_t) * JOBR_DEPTH, | 408 | jrp->outring, outbusaddr); |
| 433 | DMA_BIDIRECTIONAL); | ||
| 434 | kfree(jrp->outring); | ||
| 435 | kfree(jrp->inpring); | ||
| 436 | kfree(jrp->entinfo); | 409 | kfree(jrp->entinfo); |
| 437 | 410 | ||
| 438 | return ret; | 411 | return ret; |
