crypto: caam - fix input job ring element dma mapping size
authorKim Phillips <kim.phillips@freescale.com>
Sat, 23 Jun 2012 00:42:36 +0000 (19:42 -0500)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 27 Jun 2012 06:42:03 +0000 (14:42 +0800)
SEC4 h/w gets configured in 32- vs. 36-bit physical
addressing modes depending on the size of dma_addr_t,
which is not always equal to sizeof(u32 *).

Also fixed alignment of a dma_unmap call whilst in there.

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/jr.c

index 340fa322c0f0185be546fddffee9ada6f75ed333..6ce4c41c86342028efec73a7eaaee63b0133eb9f 100644 (file)
@@ -376,7 +376,7 @@ static int caam_jr_init(struct device *dev)
 
        /* Setup rings */
        inpbusaddr = dma_map_single(dev, jrp->inpring,
-                                   sizeof(u32 *) * JOBR_DEPTH,
+                                   sizeof(dma_addr_t) * JOBR_DEPTH,
                                    DMA_BIDIRECTIONAL);
        if (dma_mapping_error(dev, inpbusaddr)) {
                dev_err(dev, "caam_jr_init(): can't map input ring\n");
@@ -391,9 +391,9 @@ static int caam_jr_init(struct device *dev)
                                    DMA_BIDIRECTIONAL);
        if (dma_mapping_error(dev, outbusaddr)) {
                dev_err(dev, "caam_jr_init(): can't map output ring\n");
-                       dma_unmap_single(dev, inpbusaddr,
-                                        sizeof(u32 *) * JOBR_DEPTH,
-                                        DMA_BIDIRECTIONAL);
+               dma_unmap_single(dev, inpbusaddr,
+                                sizeof(dma_addr_t) * JOBR_DEPTH,
+                                DMA_BIDIRECTIONAL);
                kfree(jrp->inpring);
                kfree(jrp->outring);
                kfree(jrp->entinfo);
@@ -447,7 +447,7 @@ int caam_jr_shutdown(struct device *dev)
        dma_unmap_single(dev, outbusaddr,
                         sizeof(struct jr_outentry) * JOBR_DEPTH,
                         DMA_BIDIRECTIONAL);
-       dma_unmap_single(dev, inpbusaddr, sizeof(u32 *) * JOBR_DEPTH,
+       dma_unmap_single(dev, inpbusaddr, sizeof(dma_addr_t) * JOBR_DEPTH,
                         DMA_BIDIRECTIONAL);
        kfree(jrp->outring);
        kfree(jrp->inpring);