Skip to content

Commit

Permalink
crypto: caam - move DMA mask selection into a function
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Horia Geantă <[email protected]>
Cc: Chris Spencer <[email protected]>
Cc: Cory Tusar <[email protected]>
Cc: Chris Healy <[email protected]>
Cc: Lucas Stach <[email protected]>
Cc: Horia Geantă <[email protected]>
Cc: Aymen Sghaier <[email protected]>
Cc: Leonard Crestez <[email protected]>
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
ndreys authored and herbertx committed Aug 30, 2019
1 parent 671e503 commit 70c0cda
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 24 deletions.
11 changes: 1 addition & 10 deletions drivers/crypto/caam/ctrl.c
Original file line number Diff line number Diff line change
Expand Up @@ -711,16 +711,7 @@ 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 (caam_dpaa2)
ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(49));
else if (of_device_is_compatible(nprop, "fsl,sec-v5.0"))
ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40));
else
ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(36));
} else {
ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
}
ret = dma_set_mask_and_coherent(dev, caam_get_dma_mask(dev));
if (ret) {
dev_err(dev, "dma_set_mask_and_coherent failed (%d)\n", ret);
goto disable_caam_emi_slow;
Expand Down
20 changes: 20 additions & 0 deletions drivers/crypto/caam/intern.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
#ifndef INTERN_H
#define INTERN_H

#include "ctrl.h"

/* Currently comes from Kconfig param as a ^2 (driver-required) */
#define JOBR_DEPTH (1 << CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE)

Expand Down Expand Up @@ -215,4 +217,22 @@ DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u32_ro, caam_debugfs_u32_get, NULL, "%llu\n");
DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u64_ro, caam_debugfs_u64_get, NULL, "%llu\n");
#endif

static inline u64 caam_get_dma_mask(struct device *dev)
{
struct device_node *nprop = dev->of_node;

if (sizeof(dma_addr_t) != sizeof(u64))
return DMA_BIT_MASK(32);

if (caam_dpaa2)
return DMA_BIT_MASK(49);

if (of_device_is_compatible(nprop, "fsl,sec-v5.0-job-ring") ||
of_device_is_compatible(nprop, "fsl,sec-v5.0"))
return DMA_BIT_MASK(40);

return DMA_BIT_MASK(36);
}


#endif /* INTERN_H */
15 changes: 1 addition & 14 deletions drivers/crypto/caam/jr.c
Original file line number Diff line number Diff line change
Expand Up @@ -543,20 +543,7 @@ 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 (caam_dpaa2)
error = dma_set_mask_and_coherent(jrdev,
DMA_BIT_MASK(49));
else if (of_device_is_compatible(nprop,
"fsl,sec-v5.0-job-ring"))
error = dma_set_mask_and_coherent(jrdev,
DMA_BIT_MASK(40));
else
error = dma_set_mask_and_coherent(jrdev,
DMA_BIT_MASK(36));
} else {
error = dma_set_mask_and_coherent(jrdev, DMA_BIT_MASK(32));
}
error = dma_set_mask_and_coherent(jrdev, caam_get_dma_mask(jrdev));
if (error) {
dev_err(jrdev, "dma_set_mask_and_coherent failed (%d)\n",
error);
Expand Down

0 comments on commit 70c0cda

Please sign in to comment.