diff options
author | Robin Murphy <robin.murphy@arm.com> | 2018-01-10 10:15:43 -0500 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2018-01-18 06:52:27 -0500 |
commit | 37d728f76c41ab819a9fd31d701de55102559484 (patch) | |
tree | f3c42d9ecdb6f34819da5b3793cd95dd7e4677f1 /drivers/crypto/marvell | |
parent | 2273f42df1a52bb3aa827163e285528afbf7616c (diff) |
crypto: marvell/cesa - Fix DMA API misuse
phys_to_dma() is an internal helper for certain DMA API implementations,
and is not appropriate for drivers to use. It appears that what the CESA
driver really wants to be using is dma_map_resource() - admittedly that
didn't exist when the offending code was first merged, but it does now.
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/marvell')
-rw-r--r-- | drivers/crypto/marvell/cesa.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/crypto/marvell/cesa.c b/drivers/crypto/marvell/cesa.c index 293832488cc9..f81fa4a3e66b 100644 --- a/drivers/crypto/marvell/cesa.c +++ b/drivers/crypto/marvell/cesa.c | |||
@@ -15,6 +15,7 @@ | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | #include <linux/dma-mapping.h> | ||
18 | #include <linux/genalloc.h> | 19 | #include <linux/genalloc.h> |
19 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
20 | #include <linux/io.h> | 21 | #include <linux/io.h> |
@@ -409,8 +410,11 @@ static int mv_cesa_get_sram(struct platform_device *pdev, int idx) | |||
409 | if (IS_ERR(engine->sram)) | 410 | if (IS_ERR(engine->sram)) |
410 | return PTR_ERR(engine->sram); | 411 | return PTR_ERR(engine->sram); |
411 | 412 | ||
412 | engine->sram_dma = phys_to_dma(cesa->dev, | 413 | engine->sram_dma = dma_map_resource(cesa->dev, res->start, |
413 | (phys_addr_t)res->start); | 414 | cesa->sram_size, |
415 | DMA_BIDIRECTIONAL, 0); | ||
416 | if (dma_mapping_error(cesa->dev, engine->sram_dma)) | ||
417 | return -ENOMEM; | ||
414 | 418 | ||
415 | return 0; | 419 | return 0; |
416 | } | 420 | } |
@@ -420,11 +424,12 @@ static void mv_cesa_put_sram(struct platform_device *pdev, int idx) | |||
420 | struct mv_cesa_dev *cesa = platform_get_drvdata(pdev); | 424 | struct mv_cesa_dev *cesa = platform_get_drvdata(pdev); |
421 | struct mv_cesa_engine *engine = &cesa->engines[idx]; | 425 | struct mv_cesa_engine *engine = &cesa->engines[idx]; |
422 | 426 | ||
423 | if (!engine->pool) | 427 | if (engine->pool) |
424 | return; | 428 | gen_pool_free(engine->pool, (unsigned long)engine->sram, |
425 | 429 | cesa->sram_size); | |
426 | gen_pool_free(engine->pool, (unsigned long)engine->sram, | 430 | else |
427 | cesa->sram_size); | 431 | dma_unmap_resource(cesa->dev, engine->sram_dma, |
432 | cesa->sram_size, DMA_BIDIRECTIONAL, 0); | ||
428 | } | 433 | } |
429 | 434 | ||
430 | static int mv_cesa_probe(struct platform_device *pdev) | 435 | static int mv_cesa_probe(struct platform_device *pdev) |