From: Franck LENORMAND <franck.lenorm...@nxp.com>

When building on a platform with a 32bit DMA address, taking the
upper 32 bits makes no sense.

Signed-off-by: Franck LENORMAND <franck.lenorm...@nxp.com>
Signed-off-by: Horia Geantă <horia.gea...@nxp.com>
---
 drivers/crypto/caam/regs.h | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h
index 0f810bc13b2b..af61f3a2c0d4 100644
--- a/drivers/crypto/caam/regs.h
+++ b/drivers/crypto/caam/regs.h
@@ -173,9 +173,14 @@ static inline u64 rd_reg64(void __iomem *reg)
 
 static inline u64 cpu_to_caam_dma64(dma_addr_t value)
 {
-       if (caam_imx)
-               return (((u64)cpu_to_caam32(lower_32_bits(value)) << 32) |
-                        (u64)cpu_to_caam32(upper_32_bits(value)));
+       if (caam_imx) {
+               u64 ret_val = (u64)cpu_to_caam32(lower_32_bits(value)) << 32;
+
+               if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT))
+                       ret_val |= (u64)cpu_to_caam32(upper_32_bits(value));
+
+               return ret_val;
+       }
 
        return cpu_to_caam64(value);
 }
-- 
2.17.1

Reply via email to