summaryrefslogtreecommitdiffstats
path: root/include/asm-arm/arch-ebsa285
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-arm/arch-ebsa285')
-rw-r--r--include/asm-arm/arch-ebsa285/a.out.h16
-rw-r--r--include/asm-arm/arch-ebsa285/dma.h29
-rw-r--r--include/asm-arm/arch-ebsa285/hardware.h114
-rw-r--r--include/asm-arm/arch-ebsa285/ide.h1
-rw-r--r--include/asm-arm/arch-ebsa285/io.h143
-rw-r--r--include/asm-arm/arch-ebsa285/irq.h34
-rw-r--r--include/asm-arm/arch-ebsa285/irqs.h45
-rw-r--r--include/asm-arm/arch-ebsa285/keyboard.h37
-rw-r--r--include/asm-arm/arch-ebsa285/mm-init.h5
-rw-r--r--include/asm-arm/arch-ebsa285/mmu.h26
-rw-r--r--include/asm-arm/arch-ebsa285/oldlatches.h9
-rw-r--r--include/asm-arm/arch-ebsa285/processor.h31
-rw-r--r--include/asm-arm/arch-ebsa285/shmparam.h5
-rw-r--r--include/asm-arm/arch-ebsa285/system.h24
-rw-r--r--include/asm-arm/arch-ebsa285/time.h57
-rw-r--r--include/asm-arm/arch-ebsa285/timex.h14
-rw-r--r--include/asm-arm/arch-ebsa285/uncompress.h33
17 files changed, 623 insertions, 0 deletions
diff --git a/include/asm-arm/arch-ebsa285/a.out.h b/include/asm-arm/arch-ebsa285/a.out.h
new file mode 100644
index 000000000..0123eb29a
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/a.out.h
@@ -0,0 +1,16 @@
+/*
+ * linux/include/asm-arm/arch-ebsa110/a.out.h
+ *
+ * Copyright (C) 1996 Russell King
+ */
+
+#ifndef __ASM_ARCH_A_OUT_H
+#define __ASM_ARCH_A_OUT_H
+
+#ifdef __KERNEL__
+#define STACK_TOP ((current->personality==PER_LINUX_32BIT)? 0xc0000000 : 0x04000000)
+#define LIBRARY_START_TEXT (0x00c00000)
+#endif
+
+#endif
+
diff --git a/include/asm-arm/arch-ebsa285/dma.h b/include/asm-arm/arch-ebsa285/dma.h
new file mode 100644
index 000000000..96a265927
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/dma.h
@@ -0,0 +1,29 @@
+/*
+ * linux/include/asm-arm/arch-ebsa110/dma.h
+ *
+ * Architecture DMA routes
+ *
+ * Copyright (C) 1997.1998 Russell King
+ */
+#ifndef __ASM_ARCH_DMA_H
+#define __ASM_ARCH_DMA_H
+
+/*
+ * This is the maximum DMA address that can be DMAd to.
+ * There should not be more than (0xd0000000 - 0xc0000000)
+ * bytes of RAM.
+ */
+#define MAX_DMA_ADDRESS 0xd0000000
+
+/*
+ * DMA modes - we have two, IN and OUT
+ */
+typedef enum {
+ DMA_MODE_READ,
+ DMA_MODE_WRITE
+} dmamode_t;
+
+#define MAX_DMA_CHANNELS 8
+
+#endif /* _ASM_ARCH_DMA_H */
+
diff --git a/include/asm-arm/arch-ebsa285/hardware.h b/include/asm-arm/arch-ebsa285/hardware.h
new file mode 100644
index 000000000..8d6af3b1b
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/hardware.h
@@ -0,0 +1,114 @@
+/*
+ * linux/include/asm-arm/arch-ebsa285/hardware.h
+ *
+ * Copyright (C) 1998 Russell King.
+ *
+ * This file contains the hardware definitions of the EBSA-285.
+ */
+
+
+/* Logical Physical
+ * 0xfff00000 0x40000000 X-Bus
+ * 0xffe00000 0x7c000000 PCI I/O space
+ *
+ * 0xfe000000 0x42000000 CSR
+ * 0xfd000000 0x78000000 Outbound write flush
+ * 0xfc000000 0x79000000 PCI IACK/special space
+ *
+ * 0xf9030000 0x7a080000 PCI Config type 1 card 4
+ * 0xf9020000 0x7a040000 PCI Config type 1 card 3
+ * 0xf9010000 0x7a020000 PCI Config type 1 card 2
+ * 0xf9000000 0x7a010000 PCI Config type 1 card 1
+ *
+ * 0xf8030000 0x7b080000 PCI Config type 0 card 4
+ * 0xf8020000 0x7b040000 PCI Config type 0 card 3
+ * 0xf8010000 0x7b020000 PCI Config type 0 card 2
+ * 0xf8000000 0x7b010000 PCI Config type 0 card 1
+ *
+ */
+
+#define IO_END 0xffffffff
+#define IO_BASE 0xe0000000
+#define IO_SIZE (IO_END - IO_BASE)
+
+#define HAS_PCIO
+
+#define XBUS_LEDS ((volatile unsigned char *)0xfff12000)
+#define XBUS_LED_AMBER (1 << 0)
+#define XBUS_LED_GREEN (1 << 1)
+#define XBUS_LED_RED (1 << 2)
+#define XBUS_LED_TOGGLE (1 << 8)
+
+#define XBUS_SWITCH ((volatile unsigned char *)0xfff12000)
+#define XBUS_SWITCH_SWITCH ((*XBUS_SWITCH) & 15)
+#define XBUS_SWITCH_J17_13 ((*XBUS_SWITCH) & (1 << 4))
+#define XBUS_SWITCH_J17_11 ((*XBUS_SWITCH) & (1 << 5))
+#define XBUS_SWITCH_J17_9 ((*XBUS_SWITCH) & (1 << 6))
+
+#define PCIO_BASE 0xffe00000
+
+#define CSR_SA110_CNTL ((volatile unsigned long *)0xfe00013c)
+#define CSR_PCIADDR_EXTN ((volatile unsigned long *)0xfe000140)
+#define CSR_PREFETCHMEMRANGE ((volatile unsigned long *)0xfe000144)
+#define CSR_XBUS_CYCLE ((volatile unsigned long *)0xfe000148)
+#define CSR_XBUS_IOSTROBE ((volatile unsigned long *)0xfe00014c)
+#define CSR_DOORBELL_PCI ((volatile unsigned long *)0xfe000150)
+#define CSR_DOORBELL_SA110 ((volatile unsigned long *)0xfe000154)
+
+
+#define CSR_UARTDR ((volatile unsigned long *)0xfe000160)
+#define CSR_RXSTAT ((volatile unsigned long *)0xfe000164)
+#define CSR_H_UBRLCR ((volatile unsigned long *)0xfe000168)
+#define CSR_M_UBRLCR ((volatile unsigned long *)0xfe00016c)
+#define CSR_L_UBRLCR ((volatile unsigned long *)0xfe000170)
+#define CSR_UARTCON ((volatile unsigned long *)0xfe000174)
+#define CSR_UARTFLG ((volatile unsigned long *)0xfe000178)
+
+#define CSR_IRQ_STATUS ((volatile unsigned long *)0xfe000180)
+#define CSR_IRQ_RAWSTATUS ((volatile unsigned long *)0xfe000184)
+#define CSR_IRQ_ENABLE ((volatile unsigned long *)0xfe000188)
+#define CSR_IRQ_DISABLE ((volatile unsigned long *)0xfe00018c)
+#define CSR_IRQ_SOFT ((volatile unsigned long *)0xfe000190)
+
+#define CSR_FIQ_STATUS ((volatile unsigned long *)0xfe000280)
+#define CSR_FIQ_RAWSTATUS ((volatile unsigned long *)0xfe000284)
+#define CSR_FIQ_ENABLE ((volatile unsigned long *)0xfe000288)
+#define CSR_FIQ_DISABLE ((volatile unsigned long *)0xfe00028c)
+#define CSR_FIQ_SOFT ((volatile unsigned long *)0xfe000290)
+
+#define CSR_TIMER1_LOAD ((volatile unsigned long *)0xfe000300)
+#define CSR_TIMER1_VALUE ((volatile unsigned long *)0xfe000304)
+#define CSR_TIMER1_CNTL ((volatile unsigned long *)0xfe000308)
+#define CSR_TIMER1_CLR ((volatile unsigned long *)0xfe00030c)
+
+#define CSR_TIMER2_LOAD ((volatile unsigned long *)0xfe000320)
+#define CSR_TIMER2_VALUE ((volatile unsigned long *)0xfe000324)
+#define CSR_TIMER2_CNTL ((volatile unsigned long *)0xfe000328)
+#define CSR_TIMER2_CLR ((volatile unsigned long *)0xfe00032c)
+
+#define CSR_TIMER3_LOAD ((volatile unsigned long *)0xfe000340)
+#define CSR_TIMER3_VALUE ((volatile unsigned long *)0xfe000344)
+#define CSR_TIMER3_CNTL ((volatile unsigned long *)0xfe000348)
+#define CSR_TIMER3_CLR ((volatile unsigned long *)0xfe00034c)
+
+#define CSR_TIMER4_LOAD ((volatile unsigned long *)0xfe000360)
+#define CSR_TIMER4_VALUE ((volatile unsigned long *)0xfe000364)
+#define CSR_TIMER4_CNTL ((volatile unsigned long *)0xfe000368)
+#define CSR_TIMER4_CLR ((volatile unsigned long *)0xfe00036c)
+
+
+#define TIMER_CNTL_ENABLE (1 << 7)
+#define TIMER_CNTL_AUTORELOAD (1 << 6)
+#define TIMER_CNTL_DIV1 (0)
+#define TIMER_CNTL_DIV16 (1 << 2)
+#define TIMER_CNTL_DIV256 (2 << 2)
+#define TIMER_CNTL_CNTEXT (3 << 2)
+
+
+#define KERNTOPHYS(a) ((unsigned long)(&a))
+
+#define PARAMS_OFFSET 0x0100
+#define PARAMS_BASE (PAGE_OFFSET + PARAMS_OFFSET)
+
+#define SAFE_ADDR 0x50000000
+
diff --git a/include/asm-arm/arch-ebsa285/ide.h b/include/asm-arm/arch-ebsa285/ide.h
new file mode 100644
index 000000000..35eff5c28
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/ide.h
@@ -0,0 +1 @@
+/* no ide */
diff --git a/include/asm-arm/arch-ebsa285/io.h b/include/asm-arm/arch-ebsa285/io.h
new file mode 100644
index 000000000..5142e9126
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/io.h
@@ -0,0 +1,143 @@
+/*
+ * linux/include/asm-arm/arch-ebsa110/io.h
+ *
+ * Copyright (C) 1997,1998 Russell King
+ *
+ * Modifications:
+ * 06-Dec-1997 RMK Created.
+ */
+#ifndef __ASM_ARM_ARCH_IO_H
+#define __ASM_ARM_ARCH_IO_H
+
+/*
+ * This architecture does not require any delayed IO, and
+ * has the constant-optimised IO
+ */
+#undef ARCH_IO_DELAY
+
+/*
+ * Dynamic IO functions - let the compiler
+ * optimize the expressions
+ */
+#define DECLARE_DYN_OUT(fnsuffix,instr,typ) \
+extern __inline__ void __out##fnsuffix (unsigned int value, unsigned int port) \
+{ \
+ __asm__ __volatile__( \
+ "str" ##instr## " %0, [%1, %2]" \
+ : \
+ : "r" (value), "r" (PCIO_BASE), typ (port)); \
+}
+
+#define DECLARE_DYN_IN(sz,fnsuffix,instr,typ) \
+extern __inline__ unsigned sz __in##fnsuffix (unsigned int port) \
+{ \
+ unsigned long value; \
+ __asm__ __volatile__( \
+ "ldr" ##instr## " %0, [%1, %2]" \
+ : "=&r" (value) \
+ : "r" (PCIO_BASE), typ (port)); \
+ return (unsigned sz)value; \
+}
+
+extern __inline__ unsigned int __ioaddr (unsigned int port) \
+{ \
+ return (unsigned int)(PCIO_BASE + port); \
+}
+
+#define DECLARE_IO(sz,fnsuffix,instr,typ) \
+ DECLARE_DYN_OUT(fnsuffix,instr,typ) \
+ DECLARE_DYN_IN(sz,fnsuffix,instr,typ)
+
+DECLARE_IO(char,b,"b","Jr")
+DECLARE_IO(short,w,"h","r")
+DECLARE_IO(long,l,"","Jr")
+
+#undef DECLARE_IO
+#undef DECLARE_DYN_OUT
+#undef DECLARE_DYN_IN
+
+/*
+ * Constant address IO functions
+ *
+ * These have to be macros for the 'J' constraint to work -
+ * +/-4096 immediate operand.
+ */
+#define __outbc(value,port) \
+({ \
+ __asm__ __volatile__( \
+ "strb %0, [%1, %2]" \
+ : \
+ : "r" (value), "r" (PCIO_BASE), "Jr" (port)); \
+})
+
+#define __inbc(port) \
+({ \
+ unsigned char result; \
+ __asm__ __volatile__( \
+ "ldrb %0, [%1, %2]" \
+ : "=r" (result) \
+ : "r" (PCIO_BASE), "Jr" (port)); \
+ result; \
+})
+
+#define __outwc(value,port) \
+({ \
+ __asm__ __volatile__( \
+ "strh %0, [%1, %2]" \
+ : \
+ : "r" (value), "r" (PCIO_BASE), "r" (port)); \
+})
+
+#define __inwc(port) \
+({ \
+ unsigned short result; \
+ __asm__ __volatile__( \
+ "ldrh %0, [%1, %2]" \
+ : "=r" (result) \
+ : "r" (PCIO_BASE), "r" (port)); \
+ result & 0xffff; \
+})
+
+#define __outlc(value,port) \
+({ \
+ __asm__ __volatile__( \
+ "str %0, [%1, %2]" \
+ : \
+ : "r" (value), "r" (PCIO_BASE), "Jr" (port)); \
+})
+
+#define __inlc(port) \
+({ \
+ unsigned long result; \
+ __asm__ __volatile__( \
+ "ldr %0, [%1, %2]" \
+ : "=r" (result) \
+ : "r" (PCIO_BASE), "Jr" (port)); \
+ result; \
+})
+
+#define __ioaddrc(port) \
+({ \
+ unsigned long addr; \
+ addr = PCIO_BASE + port; \
+ addr; \
+})
+
+/*
+ * Translated address IO functions
+ *
+ * IO address has already been translated to a virtual address
+ */
+#define outb_t(v,p) \
+ (*(volatile unsigned char *)(p) = (v))
+
+#define inb_t(p) \
+ (*(volatile unsigned char *)(p))
+
+#define outl_t(v,p) \
+ (*(volatile unsigned long *)(p) = (v))
+
+#define inl_t(p) \
+ (*(volatile unsigned long *)(p))
+
+#endif
diff --git a/include/asm-arm/arch-ebsa285/irq.h b/include/asm-arm/arch-ebsa285/irq.h
new file mode 100644
index 000000000..ece9464cd
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/irq.h
@@ -0,0 +1,34 @@
+/*
+ * include/asm-arm/arch-ebsa110/irq.h
+ *
+ * Copyright (C) 1996,1997,1998 Russell King
+ */
+
+static __inline__ void mask_and_ack_irq(unsigned int irq)
+{
+ if (irq < 32)
+ *CSR_IRQ_DISABLE = 1 << irq;
+}
+
+static __inline__ void mask_irq(unsigned int irq)
+{
+ if (irq < 32)
+ *CSR_IRQ_DISABLE = 1 << irq;
+}
+
+static __inline__ void unmask_irq(unsigned int irq)
+{
+ if (irq < 32)
+ *CSR_IRQ_ENABLE = 1 << irq;
+}
+
+static __inline__ unsigned long get_enabled_irqs(void)
+{
+ return 0;
+}
+
+static __inline__ void irq_init_irq(void)
+{
+ *CSR_IRQ_DISABLE = -1;
+ *CSR_FIQ_DISABLE = -1;
+}
diff --git a/include/asm-arm/arch-ebsa285/irqs.h b/include/asm-arm/arch-ebsa285/irqs.h
new file mode 100644
index 000000000..108767689
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/irqs.h
@@ -0,0 +1,45 @@
+/*
+ * linux/include/asm-arm/arch-ebsa285/irqs.h
+ *
+ * Copyright (C) 1998 Russell King
+ */
+
+#define NR_IRQS 32
+
+/*
+ * This is a list of all interrupts that the 21285
+ * can generate
+ */
+#define IRQ_RESERVED 0
+#define IRQ_SOFTIRQ 1
+#define IRQ_CONRX 2
+#define IRQ_CONTX 3
+#define IRQ_TIMER1 4
+#define IRQ_TIMER2 5
+#define IRQ_TIMER3 6
+#define IRQ_TIMER4 7
+#define IRQ_IN0 8
+#define IRQ_IN1 9
+#define IRQ_IN2 10
+#define IRQ_IN3 11
+#define IRQ_XCS0 12
+#define IRQ_XCS1 13
+#define IRQ_XCS2 14
+#define IRQ_DOORBELLHOST 15
+#define IRQ_DMA1 16
+#define IRQ_DMA2 17
+#define IRQ_PCI 18
+#define IRQ_BIST 22
+#define IRQ_SERR 23
+#define IRQ_SDRAMPARITY 24
+#define IRQ_I2OINPOST 25
+#define IRQ_DISCARDTIMER 27
+#define IRQ_PCIDATAPARITY 28
+#define IRQ_PCIMASTERABORT 29
+#define IRQ_PCITARGETABORT 30
+#define IRQ_PCIPARITY 31
+
+/*
+ * Now map them to the Linux interrupts
+ */
+#define IRQ_TIMER IRQ_TIMER1
diff --git a/include/asm-arm/arch-ebsa285/keyboard.h b/include/asm-arm/arch-ebsa285/keyboard.h
new file mode 100644
index 000000000..4620ff165
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/keyboard.h
@@ -0,0 +1,37 @@
+/*
+ * linux/include/asm-arm/arch-ebsa285/keyboard.h
+ *
+ * Keyboard driver definitions for EBSA285 architecture
+ *
+ * (C) 1998 Russell King
+ */
+
+#include <linux/config.h>
+#include <asm/irq.h>
+
+#define NR_SCANCODES 128
+
+#ifdef CONFIG_MAGIC_SYSRQ
+static unsigned char kbd_sysrq_xlate[NR_SCANCODES];
+#endif
+
+#define kbd_setkeycode(sc,kc) (-EINVAL)
+#define kbd_getkeycode(sc) (-EINVAL)
+
+/* Prototype: int kbd_pretranslate(scancode, raw_mode)
+ * Returns : 0 to ignore scancode
+ */
+#define kbd_pretranslate(sc,rm) (1)
+
+/* Prototype: int kbd_translate(scancode, *keycode, *up_flag, raw_mode)
+ * Returns : 0 to ignore scancode, *keycode set to keycode, *up_flag
+ * set to 0200 if scancode indicates release
+ */
+#define kbd_translate(sc, kcp, ufp, rm) (1)
+#define kbd_unexpected_up(kc) (0200)
+#define kbd_leds(leds)
+#define kbd_init_hw()
+//#define kbd_sysrq_xlate ps2kbd_sysrq_xlate
+#define kbd_disable_irq()
+#define kbd_enable_irq()
+
diff --git a/include/asm-arm/arch-ebsa285/mm-init.h b/include/asm-arm/arch-ebsa285/mm-init.h
new file mode 100644
index 000000000..c6937abd0
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/mm-init.h
@@ -0,0 +1,5 @@
+/*
+ * linux/include/asm-arm/arch-ebsa110/mmap.h
+ *
+ * Copyright (C) 1996,1997,1998 Russell King
+ */
diff --git a/include/asm-arm/arch-ebsa285/mmu.h b/include/asm-arm/arch-ebsa285/mmu.h
new file mode 100644
index 000000000..07006f82e
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/mmu.h
@@ -0,0 +1,26 @@
+/*
+ * linux/include/asm-arm/arch-ebsa110/mmu.h
+ *
+ * Copyright (c) 1996,1997,1998 Russell King.
+ *
+ * Changelog:
+ * 20-10-1996 RMK Created
+ * 31-12-1997 RMK Fixed definitions to reduce warnings
+ */
+#ifndef __ASM_ARCH_MMU_H
+#define __ASM_ARCH_MMU_H
+
+/*
+ * On ebsa, the dram is contiguous
+ */
+#define __virt_to_phys__is_a_macro
+#define __virt_to_phys(vpage) ((vpage) - PAGE_OFFSET)
+#define __phys_to_virt__is_a_macro
+#define __phys_to_virt(ppage) ((ppage) + PAGE_OFFSET)
+
+#define __virt_to_bus__is_a_macro
+#define __virt_to_bus(x) __virt_to_phys(x)
+#define __bus_to_virt__is_a_macro
+#define __bus_to_virt(x) __phys_to_virt(x)
+
+#endif
diff --git a/include/asm-arm/arch-ebsa285/oldlatches.h b/include/asm-arm/arch-ebsa285/oldlatches.h
new file mode 100644
index 000000000..8ff6ebd67
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/oldlatches.h
@@ -0,0 +1,9 @@
+/*
+ * Dummy oldlatches.h
+ *
+ * Copyright (C) 1996 Russell King
+ */
+
+#ifdef __need_oldlatches
+#error "Old latches not present in this (rpc) machine"
+#endif
diff --git a/include/asm-arm/arch-ebsa285/processor.h b/include/asm-arm/arch-ebsa285/processor.h
new file mode 100644
index 000000000..732c9142c
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/processor.h
@@ -0,0 +1,31 @@
+/*
+ * linux/include/asm-arm/arch-ebsa110/processor.h
+ *
+ * Copyright (C) 1996,1997,1998 Russell King
+ */
+
+#ifndef __ASM_ARCH_PROCESSOR_H
+#define __ASM_ARCH_PROCESSOR_H
+
+/*
+ * Bus types
+ */
+#define EISA_bus 0
+#define EISA_bus__is_a_macro /* for versions in ksyms.c */
+#define MCA_bus 0
+#define MCA_bus__is_a_macro /* for versions in ksyms.c */
+
+/*
+ * User space: 3GB
+ */
+#define TASK_SIZE (0xc0000000UL)
+
+/* This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
+
+#define INIT_MMAP \
+{ &init_mm, 0, 0, PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, NULL, &init_mm.mmap }
+
+#endif
diff --git a/include/asm-arm/arch-ebsa285/shmparam.h b/include/asm-arm/arch-ebsa285/shmparam.h
new file mode 100644
index 000000000..9c36489cb
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/shmparam.h
@@ -0,0 +1,5 @@
+/*
+ * linux/include/asm-arm/arch-ebsa110/shmparam.h
+ *
+ * Copyright (c) 1996 Russell King.
+ */
diff --git a/include/asm-arm/arch-ebsa285/system.h b/include/asm-arm/arch-ebsa285/system.h
new file mode 100644
index 000000000..a3fed312c
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/system.h
@@ -0,0 +1,24 @@
+/*
+ * linux/include/asm-arm/arch-ebsa285/system.h
+ *
+ * Copyright (c) 1996,1997,1998 Russell King.
+ */
+#include <asm/hardware.h>
+#include <asm/leds.h>
+
+/* To reboot, we set up the 21285 watchdog and enable it.
+ * We then wait for it to timeout.
+ */
+extern __inline__ void arch_hard_reset (void)
+{
+ cli();
+ *CSR_TIMER4_LOAD = 0x8000;
+ *CSR_TIMER4_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_AUTORELOAD | TIMER_CNTL_DIV16;
+ *CSR_SA110_CNTL |= 1 << 13;
+ while(1);
+}
+
+#define ARCH_IDLE_OK
+
+#define arch_start_idle() leds_event(led_idle_start)
+#define arch_end_idle() leds_event(led_idle_end)
diff --git a/include/asm-arm/arch-ebsa285/time.h b/include/asm-arm/arch-ebsa285/time.h
new file mode 100644
index 000000000..cbc53293a
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/time.h
@@ -0,0 +1,57 @@
+/*
+ * linux/include/asm-arm/arch-ebsa285/time.h
+ *
+ * Copyright (c) 1998 Russell King.
+ *
+ * No real time clock on the evalulation board!
+ *
+ * Changelog:
+ * 21-Mar-1998 RMK Created
+ */
+
+#include <asm/leds.h>
+
+extern __inline__ unsigned long gettimeoffset (void)
+{
+ return 0;
+}
+
+extern __inline__ int reset_timer (void)
+{
+ static unsigned int count = 50;
+ static int last_pid;
+
+ *CSR_TIMER1_CLR = 0;
+
+ if (current->pid != last_pid) {
+ last_pid = current->pid;
+ if (last_pid)
+ leds_event(led_idle_end);
+ else
+ leds_event(led_idle_start);
+ }
+
+ if (--count == 0) {
+ count = 50;
+ leds_event(led_timer);
+ }
+
+ return 1;
+}
+
+/*
+ * We don't have a RTC to update!
+ */
+#define update_rtc()
+
+/*
+ * Set up timer interrupt, and return the current time in seconds.
+ */
+extern __inline__ unsigned long setup_timer (void)
+{
+ *CSR_TIMER1_CLR = 0;
+ *CSR_TIMER1_LOAD = LATCH;
+ *CSR_TIMER1_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_AUTORELOAD | TIMER_CNTL_DIV16;
+
+ return mktime(1970, 1, 1, 0, 0, 0);
+}
diff --git a/include/asm-arm/arch-ebsa285/timex.h b/include/asm-arm/arch-ebsa285/timex.h
new file mode 100644
index 000000000..0a730a70e
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/timex.h
@@ -0,0 +1,14 @@
+/*
+ * linux/include/asm-arm/arch-ebsa285/timex.h
+ *
+ * EBSA285 architecture timex specifications
+ *
+ * Copyright (C) 1998 Russell King
+ */
+
+/*
+ * On the EBSA, the clock ticks at weird rates.
+ * This is therefore not used to calculate the
+ * divisor.
+ */
+#define CLOCK_TICK_RATE (50000000 / 16)
diff --git a/include/asm-arm/arch-ebsa285/uncompress.h b/include/asm-arm/arch-ebsa285/uncompress.h
new file mode 100644
index 000000000..d5260b027
--- /dev/null
+++ b/include/asm-arm/arch-ebsa285/uncompress.h
@@ -0,0 +1,33 @@
+/*
+ * linux/include/asm-arm/arch-ebsa110/uncompress.h
+ *
+ * Copyright (C) 1996,1997,1998 Russell King
+ */
+
+/*
+ * This does not append a newline
+ */
+static void puts(const char *s)
+{
+ __asm__ __volatile__("
+ ldrb %0, [%2], #1
+ teq %0, #0
+ beq 3f
+1: strb %0, [%3]
+2: ldrb %1, [%3, #0x14]
+ and %1, %1, #0x60
+ teq %1, #0x60
+ bne 2b
+ teq %0, #'\n'
+ moveq %0, #'\r'
+ beq 1b
+ ldrb %0, [%2], #1
+ teq %0, #0
+ bne 1b
+3: " : : "r" (0), "r" (0), "r" (s), "r" (0xf0000be0) : "cc");
+}
+
+/*
+ * nothing to do
+ */
+#define arch_decomp_setup()