In order to be able to unify 64 and 32 bit implementations of
wr_reg64, let's convert it to use helpers from
<linux/io-64-nonatomic-hi-lo.h> first. Here are the steps of the
transformation:

1. Inline wr_reg32 helpers:

        if (!caam_imx && caam_little_end) {
                if (caam_little_end) {
                        iowrite32(data >> 32, (u32 __iomem *)(reg) + 1);
                        iowrite32(data, (u32 __iomem *)(reg));
                } else {
                        iowrite32be(data >> 32, (u32 __iomem *)(reg) + 1);
                        iowrite32be(data, (u32 __iomem *)(reg));
                }
        } else {
                if (caam_little_end) {
                        iowrite32(data >> 32, (u32 __iomem *)(reg));
                        iowrite32(data, (u32 __iomem *)(reg) + 1);
                } else {
                        iowrite32be(data >> 32, (u32 __iomem *)(reg));
                        iowrite32be(data, (u32 __iomem *)(reg) + 1);
                }
        }

2. Transfrom the conditionals such that the check for
'caam_little_end' is at the top level:

        if (caam_little_end) {
                if (!caam_imx) {
                        iowrite32(data >> 32, (u32 __iomem *)(reg) + 1);
                        iowrite32(data, (u32 __iomem *)(reg));
                } else {
                        iowrite32(data >> 32, (u32 __iomem *)(reg));
                        iowrite32(data, (u32 __iomem *)(reg) + 1);
                }
        } else {
                iowrite32be(data >> 32, (u32 __iomem *)(reg));
                iowrite32be(data, (u32 __iomem *)(reg) + 1);
        }

3. Invert the check for !caam_imx:

        if (caam_little_end) {
                if (caam_imx) {
                        iowrite32(data >> 32, (u32 __iomem *)(reg));
                        iowrite32(data, (u32 __iomem *)(reg) + 1);
                } else {
                        iowrite32(data >> 32, (u32 __iomem *)(reg) + 1);
                        iowrite32(data, (u32 __iomem *)(reg));
                }
        } else {
                iowrite32be(data >> 32, (u32 __iomem *)(reg));
                iowrite32be(data, (u32 __iomem *)(reg) + 1);
        }

4. Make use of iowrite64* helpers from <linux/io-64-nonatomic-hi-lo.h>

        if (caam_little_end) {
                if (caam_imx) {
                        iowrite32(data >> 32, (u32 __iomem *)(reg));
                        iowrite32(data, (u32 __iomem *)(reg) + 1);
                } else {
                        iowrite64(data, reg);
                }
        } else {
                iowrite64be(data, reg);
        }

No functional change intended.

Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com>
Reviewed-by: Horia Geantă <horia.gea...@nxp.com>
Cc: Chris Spencer <christopher.spen...@sea.co.uk>
Cc: Cory Tusar <cory.tu...@zii.aero>
Cc: Chris Healy <cphe...@gmail.com>
Cc: Lucas Stach <l.st...@pengutronix.de>
Cc: Horia Geantă <horia.gea...@nxp.com>
Cc: Aymen Sghaier <aymen.sgha...@nxp.com>
Cc: Leonard Crestez <leonard.cres...@nxp.com>
Cc: linux-cry...@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/crypto/caam/regs.h | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h
index 7c7ea8af6a48..6acfef30a90c 100644
--- a/drivers/crypto/caam/regs.h
+++ b/drivers/crypto/caam/regs.h
@@ -12,6 +12,7 @@
 #include <linux/types.h>
 #include <linux/bitops.h>
 #include <linux/io.h>
+#include <linux/io-64-nonatomic-hi-lo.h>
 
 /*
  * Architecture-specific register access methods
@@ -157,12 +158,15 @@ static inline u64 rd_reg64(void __iomem *reg)
 #else /* CONFIG_64BIT */
 static inline void wr_reg64(void __iomem *reg, u64 data)
 {
-       if (!caam_imx && caam_little_end) {
-               wr_reg32((u32 __iomem *)(reg) + 1, data >> 32);
-               wr_reg32((u32 __iomem *)(reg), data);
+       if (caam_little_end) {
+               if (caam_imx) {
+                       iowrite32(data >> 32, (u32 __iomem *)(reg));
+                       iowrite32(data, (u32 __iomem *)(reg) + 1);
+               } else {
+                       iowrite64(data, reg);
+               }
        } else {
-               wr_reg32((u32 __iomem *)(reg), data >> 32);
-               wr_reg32((u32 __iomem *)(reg) + 1, data);
+               iowrite64be(data, reg);
        }
 }
 
-- 
2.21.0

Reply via email to