ARM: sa1100/pxa: fix MTD_XIP build
authorArnd Bergmann <arnd@arndb.de>
Sat, 15 Mar 2014 10:21:06 +0000 (11:21 +0100)
committerArnd Bergmann <arnd@arndb.de>
Thu, 27 Jul 2017 11:14:41 +0000 (13:14 +0200)
In commit 3169663ac5902 "ARM: sa11x0/pxa: convert OS timer registers
to IOMEM", the definition of the OSCR macro was changed to be an
__iomem pointer, but the same register is also used by the XIP
code. This patch does the corresponding change here as well.

On PXA, the IRQ register definitions were removed even earlier, in
commit 5d284e353eb1 ("ARM: pxa: avoid accessing interrupt registers
directly"). This patch unfortunately brings some of that back. An
earlier version of my patch moved the code into an external function,
which could not work for CONFIG_XIP_KERNEL+CONFIG_MTD_XIP, so this
restores something close to the original code.

Link: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/241716.html
Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/arm/mach-pxa/include/mach/mtd-xip.h
arch/arm/mach-sa1100/include/mach/mtd-xip.h

index 990d2bf2fb45e6451226afe25a4699a14ff5f53a..9bf4ea6a6f7446b830a6bfadf5156ff9cf5aed0c 100644 (file)
 
 #include <mach/regs-ost.h>
 
-#define xip_irqpending()       (ICIP & ICMR)
+/* restored July 2017, this did not build since 2011! */
+
+#define ICIP                   io_p2v(0x40d00000)
+#define ICMR                   io_p2v(0x40d00004)
+#define xip_irqpending()       (readl(ICIP) & readl(ICMR))
 
 /* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */
-#define xip_currtime()         (OSCR)
-#define xip_elapsed_since(x)   (signed)((OSCR - (x)) / 4)
+#define xip_currtime()         readl(OSCR)
+#define xip_elapsed_since(x)   (signed)((readl(OSCR) - (x)) / 4)
 
 /*
  * xip_cpu_idle() is used when waiting for a delay equal or larger than
index b3d684098fbf545c033e56793935cee7da3e2bf0..cb76096a2e36b4ea4ccf02f983244a97919ff243 100644 (file)
@@ -20,7 +20,7 @@
 #define xip_irqpending()       (ICIP & ICMR)
 
 /* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */
-#define xip_currtime()         (OSCR)
-#define xip_elapsed_since(x)   (signed)((OSCR - (x)) / 4)
+#define xip_currtime()         readl_relaxed(OSCR)
+#define xip_elapsed_since(x)   (signed)((readl_relaxed(OSCR) - (x)) / 4)
 
 #endif /* __ARCH_SA1100_MTD_XIP_H__ */