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

Commit b3b5fce7 authored by Horia Geantă's avatar Horia Geantă Committed by Herbert Xu
Browse files

crypto: caam - check return code of dma_set_mask_and_coherent()



Setting the dma mask could fail, thus make sure it succeeds
before going further.

Signed-off-by: default avatarHoria Geantă <horia.geanta@nxp.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 78fd0fff
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -586,13 +586,18 @@ static int caam_probe(struct platform_device *pdev)
			      JRSTART_JR1_START | JRSTART_JR2_START |
			      JRSTART_JR3_START);

	if (sizeof(dma_addr_t) == sizeof(u64))
	if (sizeof(dma_addr_t) == sizeof(u64)) {
		if (of_device_is_compatible(nprop, "fsl,sec-v5.0"))
			dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40));
			ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40));
		else
			dma_set_mask_and_coherent(dev, DMA_BIT_MASK(36));
	else
		dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
			ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(36));
	} else {
		ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
	}
	if (ret) {
		dev_err(dev, "dma_set_mask_and_coherent failed (%d)\n", ret);
		goto iounmap_ctrl;
	}

	/*
	 * Detect and enable JobRs
+14 −5
Original line number Diff line number Diff line
@@ -498,13 +498,22 @@ static int caam_jr_probe(struct platform_device *pdev)

	jrpriv->rregs = (struct caam_job_ring __iomem __force *)ctrl;

	if (sizeof(dma_addr_t) == sizeof(u64))
	if (sizeof(dma_addr_t) == sizeof(u64)) {
		if (of_device_is_compatible(nprop, "fsl,sec-v5.0-job-ring"))
			dma_set_mask_and_coherent(jrdev, DMA_BIT_MASK(40));
			error = dma_set_mask_and_coherent(jrdev,
							  DMA_BIT_MASK(40));
		else
			dma_set_mask_and_coherent(jrdev, DMA_BIT_MASK(36));
	else
		dma_set_mask_and_coherent(jrdev, DMA_BIT_MASK(32));
			error = dma_set_mask_and_coherent(jrdev,
							  DMA_BIT_MASK(36));
	} else {
		error = dma_set_mask_and_coherent(jrdev, DMA_BIT_MASK(32));
	}
	if (error) {
		dev_err(jrdev, "dma_set_mask_and_coherent failed (%d)\n",
			error);
		iounmap(ctrl);
		return error;
	}

	/* Identify the interrupt */
	jrpriv->irq = irq_of_parse_and_map(nprop, 0);