aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/caam
diff options
context:
space:
mode:
authorKim Phillips <kim.phillips@freescale.com>2012-06-22 20:48:51 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2012-06-27 02:42:06 -0400
commite13af18a3e33259e264c7fb47b54fbf608137976 (patch)
tree3da51a2caf537483577c05f090df76eddd40e9bd /drivers/crypto/caam
parente24f7c9e87d46fad06bf1097d48f9923acd8e61c (diff)
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>
Diffstat (limited to 'drivers/crypto/caam')
-rw-r--r--drivers/crypto/caam/ctrl.c9
-rw-r--r--drivers/crypto/caam/jr.c8
2 files changed, 15 insertions, 2 deletions
diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
index 77557ebcd337..9a2db9c30630 100644
--- a/drivers/crypto/caam/ctrl.c
+++ b/drivers/crypto/caam/ctrl.c
@@ -82,13 +82,18 @@ static int caam_probe(struct platform_device *pdev)
82 82
83 /* 83 /*
84 * Enable DECO watchdogs and, if this is a PHYS_ADDR_T_64BIT kernel, 84 * Enable DECO watchdogs and, if this is a PHYS_ADDR_T_64BIT kernel,
85 * 36-bit pointers in master configuration register 85 * long pointers in master configuration register
86 */ 86 */
87 setbits32(&topregs->ctrl.mcr, MCFGR_WDENABLE | 87 setbits32(&topregs->ctrl.mcr, MCFGR_WDENABLE |
88 (sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR : 0)); 88 (sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR : 0));
89 89
90 if (sizeof(dma_addr_t) == sizeof(u64)) 90 if (sizeof(dma_addr_t) == sizeof(u64))
91 dma_set_mask(dev, DMA_BIT_MASK(36)); 91 if (of_device_is_compatible(nprop, "fsl,sec-v5.0"))
92 dma_set_mask(dev, DMA_BIT_MASK(40));
93 else
94 dma_set_mask(dev, DMA_BIT_MASK(36));
95 else
96 dma_set_mask(dev, DMA_BIT_MASK(32));
92 97
93 /* 98 /*
94 * Detect and enable JobRs 99 * Detect and enable JobRs
diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c
index 6ce4c41c8634..9f16b2c03613 100644
--- a/drivers/crypto/caam/jr.c
+++ b/drivers/crypto/caam/jr.c
@@ -503,6 +503,14 @@ int caam_jr_probe(struct platform_device *pdev, struct device_node *np,
503 dev_set_drvdata(jrdev, jrpriv); 503 dev_set_drvdata(jrdev, jrpriv);
504 ctrlpriv->jrdev[ring] = jrdev; 504 ctrlpriv->jrdev[ring] = jrdev;
505 505
506 if (sizeof(dma_addr_t) == sizeof(u64))
507 if (of_device_is_compatible(np, "fsl,sec-v5.0-job-ring"))
508 dma_set_mask(jrdev, DMA_BIT_MASK(40));
509 else
510 dma_set_mask(jrdev, DMA_BIT_MASK(36));
511 else
512 dma_set_mask(jrdev, DMA_BIT_MASK(32));
513
506 /* Identify the interrupt */ 514 /* Identify the interrupt */
507 jrpriv->irq = of_irq_to_resource(np, 0, NULL); 515 jrpriv->irq = of_irq_to_resource(np, 0, NULL);
508 516