Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a68d2595 authored by Kim Phillips's avatar Kim Phillips Committed by Herbert Xu
Browse files

crypto: caam - fix input job ring element dma mapping size



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: default avatarKim Phillips <kim.phillips@freescale.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 70d793cc
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -376,7 +376,7 @@ static int caam_jr_init(struct device *dev)


	/* Setup rings */
	/* Setup rings */
	inpbusaddr = dma_map_single(dev, jrp->inpring,
	inpbusaddr = dma_map_single(dev, jrp->inpring,
				    sizeof(u32 *) * JOBR_DEPTH,
				    sizeof(dma_addr_t) * JOBR_DEPTH,
				    DMA_BIDIRECTIONAL);
				    DMA_BIDIRECTIONAL);
	if (dma_mapping_error(dev, inpbusaddr)) {
	if (dma_mapping_error(dev, inpbusaddr)) {
		dev_err(dev, "caam_jr_init(): can't map input ring\n");
		dev_err(dev, "caam_jr_init(): can't map input ring\n");
@@ -392,7 +392,7 @@ static int caam_jr_init(struct device *dev)
	if (dma_mapping_error(dev, outbusaddr)) {
	if (dma_mapping_error(dev, outbusaddr)) {
		dev_err(dev, "caam_jr_init(): can't map output ring\n");
		dev_err(dev, "caam_jr_init(): can't map output ring\n");
		dma_unmap_single(dev, inpbusaddr,
		dma_unmap_single(dev, inpbusaddr,
					 sizeof(u32 *) * JOBR_DEPTH,
				 sizeof(dma_addr_t) * JOBR_DEPTH,
				 DMA_BIDIRECTIONAL);
				 DMA_BIDIRECTIONAL);
		kfree(jrp->inpring);
		kfree(jrp->inpring);
		kfree(jrp->outring);
		kfree(jrp->outring);
@@ -447,7 +447,7 @@ int caam_jr_shutdown(struct device *dev)
	dma_unmap_single(dev, outbusaddr,
	dma_unmap_single(dev, outbusaddr,
			 sizeof(struct jr_outentry) * JOBR_DEPTH,
			 sizeof(struct jr_outentry) * JOBR_DEPTH,
			 DMA_BIDIRECTIONAL);
			 DMA_BIDIRECTIONAL);
	dma_unmap_single(dev, inpbusaddr, sizeof(u32 *) * JOBR_DEPTH,
	dma_unmap_single(dev, inpbusaddr, sizeof(dma_addr_t) * JOBR_DEPTH,
			 DMA_BIDIRECTIONAL);
			 DMA_BIDIRECTIONAL);
	kfree(jrp->outring);
	kfree(jrp->outring);
	kfree(jrp->inpring);
	kfree(jrp->inpring);