crypto: caam - use ioread64*_hi_lo in rd_reg64
authorAndrey Smirnov <andrew.smirnov@gmail.com>
Tue, 20 Aug 2019 20:23:52 +0000 (13:23 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 30 Aug 2019 08:05:29 +0000 (18:05 +1000)
Following the same transformation logic as outlined in previous commit
converting wr_reg64, convert rd_reg64 to use helpers from
<linux/io-64-nonatomic-hi-lo.h> first. No functional change intended.

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>
drivers/crypto/caam/regs.h

index 6acfef30a90c7b7db355f4467911ec553e514cf6..4efc10534873d0c76b0fb1dbcd44592bf6f6c4e0 100644 (file)
@@ -172,12 +172,20 @@ static inline void wr_reg64(void __iomem *reg, u64 data)
 
 static inline u64 rd_reg64(void __iomem *reg)
 {
-       if (!caam_imx && caam_little_end)
-               return ((u64)rd_reg32((u32 __iomem *)(reg) + 1) << 32 |
-                       (u64)rd_reg32((u32 __iomem *)(reg)));
+       if (caam_little_end) {
+               if (caam_imx) {
+                       u32 low, high;
 
-       return ((u64)rd_reg32((u32 __iomem *)(reg)) << 32 |
-               (u64)rd_reg32((u32 __iomem *)(reg) + 1));
+                       high = ioread32(reg);
+                       low  = ioread32(reg + sizeof(u32));
+
+                       return low + ((u64)high << 32);
+               } else {
+                       return ioread64(reg);
+               }
+       } else {
+               return ioread64be(reg);
+       }
 }
 #endif /* CONFIG_64BIT  */