diff options
author | Kim Phillips <kim.phillips@freescale.com> | 2012-06-22 20:48:51 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2012-06-27 02:42:06 -0400 |
commit | e13af18a3e33259e264c7fb47b54fbf608137976 (patch) | |
tree | 3da51a2caf537483577c05f090df76eddd40e9bd /drivers/crypto/caam | |
parent | e24f7c9e87d46fad06bf1097d48f9923acd8e61c (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.c | 9 | ||||
-rw-r--r-- | drivers/crypto/caam/jr.c | 8 |
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 | ||