aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2019-08-20 16:23:47 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2019-08-30 04:05:28 -0400
commit70c0cda27a10df44e81887bc4cb10f587236a941 (patch)
treed6897ec7b9c8624a4f134d70f82cae8bd95c4475 /drivers/crypto
parent671e50384ee6267052c5d613dc84a72b7fe9ef4b (diff)
crypto: caam - move DMA mask selection into a function
Exactly the same code to figure out DMA mask is repeated twice in the driver code. To avoid repetition, move that logic into a standalone subroutine in intern.h. While at it re-shuffle the code to make it more readable with early returns. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Reviewed-by: Horia Geantă <horia.geanta@nxp.com> Cc: Chris Spencer <christopher.spencer@sea.co.uk> Cc: Cory Tusar <cory.tusar@zii.aero> Cc: Chris Healy <cphealy@gmail.com> Cc: Lucas Stach <l.stach@pengutronix.de> Cc: Horia Geantă <horia.geanta@nxp.com> Cc: Aymen Sghaier <aymen.sghaier@nxp.com> Cc: Leonard Crestez <leonard.crestez@nxp.com> Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/caam/ctrl.c11
-rw-r--r--drivers/crypto/caam/intern.h20
-rw-r--r--drivers/crypto/caam/jr.c15
3 files changed, 22 insertions, 24 deletions
diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
index e0590beae240..50336494f285 100644
--- a/drivers/crypto/caam/ctrl.c
+++ b/drivers/crypto/caam/ctrl.c
@@ -711,16 +711,7 @@ static int caam_probe(struct platform_device *pdev)
711 JRSTART_JR1_START | JRSTART_JR2_START | 711 JRSTART_JR1_START | JRSTART_JR2_START |
712 JRSTART_JR3_START); 712 JRSTART_JR3_START);
713 713
714 if (sizeof(dma_addr_t) == sizeof(u64)) { 714 ret = dma_set_mask_and_coherent(dev, caam_get_dma_mask(dev));
715 if (caam_dpaa2)
716 ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(49));
717 else if (of_device_is_compatible(nprop, "fsl,sec-v5.0"))
718 ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40));
719 else
720 ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(36));
721 } else {
722 ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
723 }
724 if (ret) { 715 if (ret) {
725 dev_err(dev, "dma_set_mask_and_coherent failed (%d)\n", ret); 716 dev_err(dev, "dma_set_mask_and_coherent failed (%d)\n", ret);
726 goto disable_caam_emi_slow; 717 goto disable_caam_emi_slow;
diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h
index 6af84bbc612c..ec25d260fa40 100644
--- a/drivers/crypto/caam/intern.h
+++ b/drivers/crypto/caam/intern.h
@@ -10,6 +10,8 @@
10#ifndef INTERN_H 10#ifndef INTERN_H
11#define INTERN_H 11#define INTERN_H
12 12
13#include "ctrl.h"
14
13/* Currently comes from Kconfig param as a ^2 (driver-required) */ 15/* Currently comes from Kconfig param as a ^2 (driver-required) */
14#define JOBR_DEPTH (1 << CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE) 16#define JOBR_DEPTH (1 << CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE)
15 17
@@ -215,4 +217,22 @@ DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u32_ro, caam_debugfs_u32_get, NULL, "%llu\n");
215DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u64_ro, caam_debugfs_u64_get, NULL, "%llu\n"); 217DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u64_ro, caam_debugfs_u64_get, NULL, "%llu\n");
216#endif 218#endif
217 219
220static inline u64 caam_get_dma_mask(struct device *dev)
221{
222 struct device_node *nprop = dev->of_node;
223
224 if (sizeof(dma_addr_t) != sizeof(u64))
225 return DMA_BIT_MASK(32);
226
227 if (caam_dpaa2)
228 return DMA_BIT_MASK(49);
229
230 if (of_device_is_compatible(nprop, "fsl,sec-v5.0-job-ring") ||
231 of_device_is_compatible(nprop, "fsl,sec-v5.0"))
232 return DMA_BIT_MASK(40);
233
234 return DMA_BIT_MASK(36);
235}
236
237
218#endif /* INTERN_H */ 238#endif /* INTERN_H */
diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c
index cea811fed320..4b25b2fa3d02 100644
--- a/drivers/crypto/caam/jr.c
+++ b/drivers/crypto/caam/jr.c
@@ -543,20 +543,7 @@ static int caam_jr_probe(struct platform_device *pdev)
543 543
544 jrpriv->rregs = (struct caam_job_ring __iomem __force *)ctrl; 544 jrpriv->rregs = (struct caam_job_ring __iomem __force *)ctrl;
545 545
546 if (sizeof(dma_addr_t) == sizeof(u64)) { 546 error = dma_set_mask_and_coherent(jrdev, caam_get_dma_mask(jrdev));
547 if (caam_dpaa2)
548 error = dma_set_mask_and_coherent(jrdev,
549 DMA_BIT_MASK(49));
550 else if (of_device_is_compatible(nprop,
551 "fsl,sec-v5.0-job-ring"))
552 error = dma_set_mask_and_coherent(jrdev,
553 DMA_BIT_MASK(40));
554 else
555 error = dma_set_mask_and_coherent(jrdev,
556 DMA_BIT_MASK(36));
557 } else {
558 error = dma_set_mask_and_coherent(jrdev, DMA_BIT_MASK(32));
559 }
560 if (error) { 547 if (error) {
561 dev_err(jrdev, "dma_set_mask_and_coherent failed (%d)\n", 548 dev_err(jrdev, "dma_set_mask_and_coherent failed (%d)\n",
562 error); 549 error);