config ARCH_OMAP
bool "TI OMAP"
+ config ARCH_LH7A40X
+ bool "Sharp LH7A40X"
+ help
+ Say Y here for systems based on one of the Sharp LH7A40X
+ System on a Chip processors. These CPUs include an ARM922T
+ core with a wide array of integrated devices for
+ hand-held and low-power applications.
+
+config ARCH_VERSATILE_PB
+ bool "Versatile PB"
+ help
+ This enables support for ARM Ltd Versatile PB board.
+
endchoice
source "arch/arm/mach-clps711x/Kconfig"
zreladdr-$(CONFIG_ARCH_OMAP) := 0x10008000
params_phys-$(CONFIG_ARCH_OMAP) := 0x10000100
initrd_phys-$(CONFIG_ARCH_OMAP) := 0x10800000
-
- zreladdr-$(CONFIG_ARCH_S3C2410) := 0x30008000
-params_phys-$(CONFIG_ARCH_S3C2410) := 0x30000100
-
+ zreladdr-$(CONFIG_ARCH_LH7A40X) := 0xc0008000
+ params_phys-$(CONFIG_ARCH_LH7A40X) := 0xc0000100
+ initrd_phys-$(CONFIG_ARCH_LH7A40X) := 0xc4000000
+ zreladdr-$(CONFIG_ARCH_S3C2410) := 0x30008000
+params_phys-$(CONFIG_ARCH_S3C2410) := 0x30000100
+ zreladdr-$(CONFIG_ARCH_VERSATILE_PB) := 0x00008000
+params_phys-$(CONFIG_ARCH_VERSATILE_PB) := 0x00000100
+initrd_phys-$(CONFIG_ARCH_VERSATILE_PB) := 0x00800000
ZRELADDR := $(zreladdr-y)
ZTEXTADDR := $(ztextaddr-y)
1002: @ exit busyuart
.endm
+ #elif defined(CONFIG_ARCH_LH7A40X)
+ @ It isn't known if this will be appropriate for every 40x
+ @ board.
+
+ .macro addruart,rx
+ mrc p15, 0, \rx, c1, c0
+ tst \rx, #1 @ MMU enabled?
+ ldr \rx, =0x80000700 @ physical base address
+ orrne \rx, \rx, #0xf8000000 @ virtual base
+ .endm
+
+ .macro senduart,rd,rx
+ strb \rd, [\rx] @ DATA
+ .endm
+
+ .macro busyuart,rd,rx @ spin while busy
+ 1001: ldr \rd, [\rx, #0x10] @ STATUS
+ tst \rd, #1 << 3 @ BUSY (TX FIFO not empty)
+ bne 1001b @ yes, spin
+ .endm
+
+ .macro waituart,rd,rx @ wait for Tx FIFO room
+ 1001: ldrb \rd, [\rx, #0x10] @ STATUS
+ tst \rd, #1 << 5 @ TXFF (TX FIFO full)
+ bne 1001b @ yes, spin
+ .endm
+
+
+#elif defined(CONFIG_ARCH_VERSATILE_PB)
+
+#include <asm/hardware/amba_serial.h>
+
+ .macro addruart,rx
+ mrc p15, 0, \rx, c1, c0
+ tst \rx, #1 @ MMU enabled?
+ moveq \rx, #0x10000000
+ movne \rx, #0xf1000000 @ virtual base
+ orr \rx, \rx, #0x001F0000
+ orr \rx, \rx, #0x00001000
+ .endm
+
+ .macro senduart,rd,rx
+ strb \rd, [\rx, #UART01x_DR]
+ .endm
+
+ .macro waituart,rd,rx
+1001: ldr \rd, [\rx, #0x18] @ UARTFLG
+ tst \rd, #1 << 5 @ UARTFLGUTXFF - 1 when full
+ bne 1001b
+ .endm
+
+ .macro busyuart,rd,rx
+1001: ldr \rd, [\rx, #0x18] @ UARTFLG
+ tst \rd, #1 << 3 @ UARTFLGUBUSY - 1 when busy
+ bne 1001b
+ .endm
#else
#error Unknown architecture
#endif