crypto: caam - assign 40-bit masks on SEC v5.0 and above
SEC v4.x were only 36-bit, SEC v5+ are 40-bit capable. Also set a DMA mask for any job ring devices created. Signed-off-by: Kim Phillips <kim.phillips@freescale.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
e24f7c9e87
commit
e13af18a3e
|
@ -82,13 +82,18 @@ static int caam_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable DECO watchdogs and, if this is a PHYS_ADDR_T_64BIT kernel,
|
* Enable DECO watchdogs and, if this is a PHYS_ADDR_T_64BIT kernel,
|
||||||
* 36-bit pointers in master configuration register
|
* long pointers in master configuration register
|
||||||
*/
|
*/
|
||||||
setbits32(&topregs->ctrl.mcr, MCFGR_WDENABLE |
|
setbits32(&topregs->ctrl.mcr, MCFGR_WDENABLE |
|
||||||
(sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR : 0));
|
(sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR : 0));
|
||||||
|
|
||||||
if (sizeof(dma_addr_t) == sizeof(u64))
|
if (sizeof(dma_addr_t) == sizeof(u64))
|
||||||
dma_set_mask(dev, DMA_BIT_MASK(36));
|
if (of_device_is_compatible(nprop, "fsl,sec-v5.0"))
|
||||||
|
dma_set_mask(dev, DMA_BIT_MASK(40));
|
||||||
|
else
|
||||||
|
dma_set_mask(dev, DMA_BIT_MASK(36));
|
||||||
|
else
|
||||||
|
dma_set_mask(dev, DMA_BIT_MASK(32));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Detect and enable JobRs
|
* Detect and enable JobRs
|
||||||
|
|
|
@ -503,6 +503,14 @@ int caam_jr_probe(struct platform_device *pdev, struct device_node *np,
|
||||||
dev_set_drvdata(jrdev, jrpriv);
|
dev_set_drvdata(jrdev, jrpriv);
|
||||||
ctrlpriv->jrdev[ring] = jrdev;
|
ctrlpriv->jrdev[ring] = jrdev;
|
||||||
|
|
||||||
|
if (sizeof(dma_addr_t) == sizeof(u64))
|
||||||
|
if (of_device_is_compatible(np, "fsl,sec-v5.0-job-ring"))
|
||||||
|
dma_set_mask(jrdev, DMA_BIT_MASK(40));
|
||||||
|
else
|
||||||
|
dma_set_mask(jrdev, DMA_BIT_MASK(36));
|
||||||
|
else
|
||||||
|
dma_set_mask(jrdev, DMA_BIT_MASK(32));
|
||||||
|
|
||||||
/* Identify the interrupt */
|
/* Identify the interrupt */
|
||||||
jrpriv->irq = of_irq_to_resource(np, 0, NULL);
|
jrpriv->irq = of_irq_to_resource(np, 0, NULL);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue