Commit d997211e authored by Arnd Bergmann's avatar Arnd Bergmann

ARM: sa1100/pxa: fix MTD_XIP build

In commit 3169663a "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 5d284e35 ("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.htmlAcked-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 8b974017
...@@ -17,11 +17,15 @@ ...@@ -17,11 +17,15 @@
#include <mach/regs-ost.h> #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) */ /* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */
#define xip_currtime() (OSCR) #define xip_currtime() readl(OSCR)
#define xip_elapsed_since(x) (signed)((OSCR - (x)) / 4) #define xip_elapsed_since(x) (signed)((readl(OSCR) - (x)) / 4)
/* /*
* xip_cpu_idle() is used when waiting for a delay equal or larger than * xip_cpu_idle() is used when waiting for a delay equal or larger than
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#define xip_irqpending() (ICIP & ICMR) #define xip_irqpending() (ICIP & ICMR)
/* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */ /* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */
#define xip_currtime() (OSCR) #define xip_currtime() readl_relaxed(OSCR)
#define xip_elapsed_since(x) (signed)((OSCR - (x)) / 4) #define xip_elapsed_since(x) (signed)((readl_relaxed(OSCR) - (x)) / 4)
#endif /* __ARCH_SA1100_MTD_XIP_H__ */ #endif /* __ARCH_SA1100_MTD_XIP_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment