diff options
Diffstat (limited to 'include/asm-arm/arch-ebsa110')
-rw-r--r-- | include/asm-arm/arch-ebsa110/debug-macro.S | 34 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/dma.h | 19 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/entry-macro.S | 33 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/hardware.h | 66 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/io.h | 78 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/irqs.h | 20 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/memory.h | 31 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/param.h | 4 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/system.h | 39 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/timex.h | 19 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/uncompress.h | 44 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/vmalloc.h | 21 |
12 files changed, 408 insertions, 0 deletions
diff --git a/include/asm-arm/arch-ebsa110/debug-macro.S b/include/asm-arm/arch-ebsa110/debug-macro.S new file mode 100644 index 000000000000..dcd03a40c502 --- /dev/null +++ b/include/asm-arm/arch-ebsa110/debug-macro.S | |||
@@ -0,0 +1,34 @@ | |||
1 | /* linux/include/asm-arm/arch-ebsa110/debug-macro.S | ||
2 | * | ||
3 | * Debugging macro include header | ||
4 | * | ||
5 | * Copyright (C) 1994-1999 Russell King | ||
6 | * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | * | ||
12 | **/ | ||
13 | |||
14 | .macro addruart,rx | ||
15 | mov \rx, #0xf0000000 | ||
16 | orr \rx, \rx, #0x00000be0 | ||
17 | .endm | ||
18 | |||
19 | .macro senduart,rd,rx | ||
20 | strb \rd, [\rx] | ||
21 | .endm | ||
22 | |||
23 | .macro busyuart,rd,rx | ||
24 | 1002: ldrb \rd, [\rx, #0x14] | ||
25 | and \rd, \rd, #0x60 | ||
26 | teq \rd, #0x60 | ||
27 | bne 1002b | ||
28 | .endm | ||
29 | |||
30 | .macro waituart,rd,rx | ||
31 | 1001: ldrb \rd, [\rx, #0x18] | ||
32 | tst \rd, #0x10 | ||
33 | beq 1001b | ||
34 | .endm | ||
diff --git a/include/asm-arm/arch-ebsa110/dma.h b/include/asm-arm/arch-ebsa110/dma.h new file mode 100644 index 000000000000..d491776ac1cc --- /dev/null +++ b/include/asm-arm/arch-ebsa110/dma.h | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/dma.h | ||
3 | * | ||
4 | * Copyright (C) 1997,1998 Russell King | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * EBSA110 DMA definitions | ||
11 | */ | ||
12 | #ifndef __ASM_ARCH_DMA_H | ||
13 | #define __ASM_ARCH_DMA_H | ||
14 | |||
15 | #define MAX_DMA_ADDRESS 0xffffffff | ||
16 | #define MAX_DMA_CHANNELS 0 | ||
17 | |||
18 | #endif /* _ASM_ARCH_DMA_H */ | ||
19 | |||
diff --git a/include/asm-arm/arch-ebsa110/entry-macro.S b/include/asm-arm/arch-ebsa110/entry-macro.S new file mode 100644 index 000000000000..b12ca04f998c --- /dev/null +++ b/include/asm-arm/arch-ebsa110/entry-macro.S | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-ebsa110/entry-macro.S | ||
3 | * | ||
4 | * Low-level IRQ helper macros for ebsa110 platform. | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | |||
12 | |||
13 | #define IRQ_STAT 0xff000000 /* read */ | ||
14 | |||
15 | .macro disable_fiq | ||
16 | .endm | ||
17 | |||
18 | .macro get_irqnr_and_base, irqnr, stat, base, tmp | ||
19 | mov \base, #IRQ_STAT | ||
20 | ldrb \stat, [\base] @ get interrupts | ||
21 | mov \irqnr, #0 | ||
22 | tst \stat, #15 | ||
23 | addeq \irqnr, \irqnr, #4 | ||
24 | moveq \stat, \stat, lsr #4 | ||
25 | tst \stat, #3 | ||
26 | addeq \irqnr, \irqnr, #2 | ||
27 | moveq \stat, \stat, lsr #2 | ||
28 | tst \stat, #1 | ||
29 | addeq \irqnr, \irqnr, #1 | ||
30 | moveq \stat, \stat, lsr #1 | ||
31 | tst \stat, #1 @ bit 0 should be set | ||
32 | .endm | ||
33 | |||
diff --git a/include/asm-arm/arch-ebsa110/hardware.h b/include/asm-arm/arch-ebsa110/hardware.h new file mode 100644 index 000000000000..4e41c2358f4e --- /dev/null +++ b/include/asm-arm/arch-ebsa110/hardware.h | |||
@@ -0,0 +1,66 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/hardware.h | ||
3 | * | ||
4 | * Copyright (C) 1996-2000 Russell King. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This file contains the hardware definitions of the EBSA-110. | ||
11 | */ | ||
12 | #ifndef __ASM_ARCH_HARDWARE_H | ||
13 | #define __ASM_ARCH_HARDWARE_H | ||
14 | |||
15 | /* | ||
16 | * The EBSA110 has a weird "ISA IO" region: | ||
17 | * | ||
18 | * Region 0 (addr = 0xf0000000 + io << 2) | ||
19 | * -------------------------------------------------------- | ||
20 | * Physical region IO region | ||
21 | * f0000fe0 - f0000ffc 3f8 - 3ff ttyS0 | ||
22 | * f0000e60 - f0000e64 398 - 399 | ||
23 | * f0000de0 - f0000dfc 378 - 37f lp0 | ||
24 | * f0000be0 - f0000bfc 2f8 - 2ff ttyS1 | ||
25 | * | ||
26 | * Region 1 (addr = 0xf0000000 + (io & ~1) << 1 + (io & 1)) | ||
27 | * -------------------------------------------------------- | ||
28 | * Physical region IO region | ||
29 | * f00014f1 a79 pnp write data | ||
30 | * f00007c0 - f00007c1 3e0 - 3e1 pcmcia | ||
31 | * f00004f1 279 pnp address | ||
32 | * f0000440 - f000046c 220 - 236 eth0 | ||
33 | * f0000405 203 pnp read data | ||
34 | */ | ||
35 | |||
36 | #define ISAMEM_PHYS 0xe0000000 | ||
37 | #define ISAMEM_SIZE 0x10000000 | ||
38 | |||
39 | #define ISAIO_PHYS 0xf0000000 | ||
40 | #define ISAIO_SIZE PGDIR_SIZE | ||
41 | |||
42 | #define TRICK0_PHYS 0xf2000000 | ||
43 | #define TRICK1_PHYS 0xf2400000 | ||
44 | #define TRICK2_PHYS 0xf2800000 | ||
45 | #define TRICK3_PHYS 0xf2c00000 | ||
46 | #define TRICK4_PHYS 0xf3000000 | ||
47 | #define TRICK5_PHYS 0xf3400000 | ||
48 | #define TRICK6_PHYS 0xf3800000 | ||
49 | #define TRICK7_PHYS 0xf3c00000 | ||
50 | |||
51 | #define ISAMEM_BASE 0xe0000000 | ||
52 | #define ISAIO_BASE 0xf0000000 | ||
53 | |||
54 | #define PIT_BASE 0xfc000000 | ||
55 | #define SOFT_BASE 0xfd000000 | ||
56 | |||
57 | /* | ||
58 | * RAM definitions | ||
59 | */ | ||
60 | #define FLUSH_BASE_PHYS 0x40000000 | ||
61 | #define FLUSH_BASE 0xdf000000 | ||
62 | |||
63 | #define UNCACHEABLE_ADDR 0xff000000 /* IRQ_STAT */ | ||
64 | |||
65 | #endif | ||
66 | |||
diff --git a/include/asm-arm/arch-ebsa110/io.h b/include/asm-arm/arch-ebsa110/io.h new file mode 100644 index 000000000000..68e04c0bb3f7 --- /dev/null +++ b/include/asm-arm/arch-ebsa110/io.h | |||
@@ -0,0 +1,78 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/io.h | ||
3 | * | ||
4 | * Copyright (C) 1997,1998 Russell King | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * Modifications: | ||
11 | * 06-Dec-1997 RMK Created. | ||
12 | */ | ||
13 | #ifndef __ASM_ARM_ARCH_IO_H | ||
14 | #define __ASM_ARM_ARCH_IO_H | ||
15 | |||
16 | #define IO_SPACE_LIMIT 0xffff | ||
17 | |||
18 | u8 __inb8(unsigned int port); | ||
19 | void __outb8(u8 val, unsigned int port); | ||
20 | |||
21 | u8 __inb16(unsigned int port); | ||
22 | void __outb16(u8 val, unsigned int port); | ||
23 | |||
24 | u16 __inw(unsigned int port); | ||
25 | void __outw(u16 val, unsigned int port); | ||
26 | |||
27 | u32 __inl(unsigned int port); | ||
28 | void __outl(u32 val, unsigned int port); | ||
29 | |||
30 | u8 __readb(void __iomem *addr); | ||
31 | u16 __readw(void __iomem *addr); | ||
32 | u32 __readl(void __iomem *addr); | ||
33 | |||
34 | void __writeb(u8 val, void __iomem *addr); | ||
35 | void __writew(u16 val, void __iomem *addr); | ||
36 | void __writel(u32 val, void __iomem *addr); | ||
37 | |||
38 | /* | ||
39 | * Argh, someone forgot the IOCS16 line. We therefore have to handle | ||
40 | * the byte stearing by selecting the correct byte IO functions here. | ||
41 | */ | ||
42 | #ifdef ISA_SIXTEEN_BIT_PERIPHERAL | ||
43 | #define inb(p) __inb16(p) | ||
44 | #define outb(v,p) __outb16(v,p) | ||
45 | #else | ||
46 | #define inb(p) __inb8(p) | ||
47 | #define outb(v,p) __outb8(v,p) | ||
48 | #endif | ||
49 | |||
50 | #define inw(p) __inw(p) | ||
51 | #define outw(v,p) __outw(v,p) | ||
52 | |||
53 | #define inl(p) __inl(p) | ||
54 | #define outl(v,p) __outl(v,p) | ||
55 | |||
56 | #define readb(b) __readb(b) | ||
57 | #define readw(b) __readw(b) | ||
58 | #define readl(b) __readl(b) | ||
59 | #define readb_relaxed(addr) readb(addr) | ||
60 | #define readw_relaxed(addr) readw(addr) | ||
61 | #define readl_relaxed(addr) readl(addr) | ||
62 | |||
63 | #define writeb(v,b) __writeb(v,b) | ||
64 | #define writew(v,b) __writew(v,b) | ||
65 | #define writel(v,b) __writel(v,b) | ||
66 | |||
67 | #define __arch_ioremap(cookie,sz,c,a) ((void __iomem *)(cookie)) | ||
68 | #define __arch_iounmap(cookie) do { } while (0) | ||
69 | |||
70 | extern void insb(unsigned int port, void *buf, int sz); | ||
71 | extern void insw(unsigned int port, void *buf, int sz); | ||
72 | extern void insl(unsigned int port, void *buf, int sz); | ||
73 | |||
74 | extern void outsb(unsigned int port, const void *buf, int sz); | ||
75 | extern void outsw(unsigned int port, const void *buf, int sz); | ||
76 | extern void outsl(unsigned int port, const void *buf, int sz); | ||
77 | |||
78 | #endif | ||
diff --git a/include/asm-arm/arch-ebsa110/irqs.h b/include/asm-arm/arch-ebsa110/irqs.h new file mode 100644 index 000000000000..ded9bd9d7b8b --- /dev/null +++ b/include/asm-arm/arch-ebsa110/irqs.h | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/irqs.h | ||
3 | * | ||
4 | * Copyright (C) 1996 Russell King | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #define NR_IRQS 8 | ||
12 | |||
13 | #define IRQ_EBSA110_PRINTER 0 | ||
14 | #define IRQ_EBSA110_COM1 1 | ||
15 | #define IRQ_EBSA110_COM2 2 | ||
16 | #define IRQ_EBSA110_ETHERNET 3 | ||
17 | #define IRQ_EBSA110_TIMER0 4 | ||
18 | #define IRQ_EBSA110_TIMER1 5 | ||
19 | #define IRQ_EBSA110_PCMCIA 6 | ||
20 | #define IRQ_EBSA110_IMMEDIATE 7 | ||
diff --git a/include/asm-arm/arch-ebsa110/memory.h b/include/asm-arm/arch-ebsa110/memory.h new file mode 100644 index 000000000000..5a9493e12275 --- /dev/null +++ b/include/asm-arm/arch-ebsa110/memory.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/memory.h | ||
3 | * | ||
4 | * Copyright (C) 1996-1999 Russell King. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * Changelog: | ||
11 | * 20-Oct-1996 RMK Created | ||
12 | * 31-Dec-1997 RMK Fixed definitions to reduce warnings | ||
13 | * 21-Mar-1999 RMK Renamed to memory.h | ||
14 | * RMK Moved TASK_SIZE and PAGE_OFFSET here | ||
15 | */ | ||
16 | #ifndef __ASM_ARCH_MEMORY_H | ||
17 | #define __ASM_ARCH_MEMORY_H | ||
18 | |||
19 | /* | ||
20 | * Physical DRAM offset. | ||
21 | */ | ||
22 | #define PHYS_OFFSET (0x00000000UL) | ||
23 | |||
24 | /* | ||
25 | * We keep this 1:1 so that we don't interfere | ||
26 | * with the PCMCIA memory regions | ||
27 | */ | ||
28 | #define __virt_to_bus(x) (x) | ||
29 | #define __bus_to_virt(x) (x) | ||
30 | |||
31 | #endif | ||
diff --git a/include/asm-arm/arch-ebsa110/param.h b/include/asm-arm/arch-ebsa110/param.h new file mode 100644 index 000000000000..be19b08d1c75 --- /dev/null +++ b/include/asm-arm/arch-ebsa110/param.h | |||
@@ -0,0 +1,4 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/param.h | ||
3 | */ | ||
4 | #define HZ 200 | ||
diff --git a/include/asm-arm/arch-ebsa110/system.h b/include/asm-arm/arch-ebsa110/system.h new file mode 100644 index 000000000000..d7c8fece0bc5 --- /dev/null +++ b/include/asm-arm/arch-ebsa110/system.h | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/system.h | ||
3 | * | ||
4 | * Copyright (C) 1996-2000 Russell King. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef __ASM_ARCH_SYSTEM_H | ||
11 | #define __ASM_ARCH_SYSTEM_H | ||
12 | |||
13 | /* | ||
14 | * EBSA110 idling methodology: | ||
15 | * | ||
16 | * We can not execute the "wait for interrupt" instruction since that | ||
17 | * will stop our MCLK signal (which provides the clock for the glue | ||
18 | * logic, and therefore the timer interrupt). | ||
19 | * | ||
20 | * Instead, we spin, polling the IRQ_STAT register for the occurrence | ||
21 | * of any interrupt with core clock down to the memory clock. | ||
22 | */ | ||
23 | static inline void arch_idle(void) | ||
24 | { | ||
25 | const char *irq_stat = (char *)0xff000000; | ||
26 | |||
27 | /* disable clock switching */ | ||
28 | asm volatile ("mcr p15, 0, ip, c15, c2, 2" : : : "cc"); | ||
29 | |||
30 | /* wait for an interrupt to occur */ | ||
31 | while (!*irq_stat); | ||
32 | |||
33 | /* enable clock switching */ | ||
34 | asm volatile ("mcr p15, 0, ip, c15, c1, 2" : : : "cc"); | ||
35 | } | ||
36 | |||
37 | #define arch_reset(mode) cpu_reset(0x80000000) | ||
38 | |||
39 | #endif | ||
diff --git a/include/asm-arm/arch-ebsa110/timex.h b/include/asm-arm/arch-ebsa110/timex.h new file mode 100644 index 000000000000..1e9ef045092b --- /dev/null +++ b/include/asm-arm/arch-ebsa110/timex.h | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/timex.h | ||
3 | * | ||
4 | * Copyright (C) 1997, 1998 Russell King | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * EBSA110 architecture timex specifications | ||
11 | */ | ||
12 | |||
13 | /* | ||
14 | * On the EBSA, the clock ticks at weird rates. | ||
15 | * This is therefore not used to calculate the | ||
16 | * divisor. | ||
17 | */ | ||
18 | #define CLOCK_TICK_RATE 47894000 | ||
19 | |||
diff --git a/include/asm-arm/arch-ebsa110/uncompress.h b/include/asm-arm/arch-ebsa110/uncompress.h new file mode 100644 index 000000000000..eee95581a923 --- /dev/null +++ b/include/asm-arm/arch-ebsa110/uncompress.h | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/uncompress.h | ||
3 | * | ||
4 | * Copyright (C) 1996,1997,1998 Russell King | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | /* | ||
12 | * This does not append a newline | ||
13 | */ | ||
14 | static void putstr(const char *s) | ||
15 | { | ||
16 | unsigned long tmp1, tmp2; | ||
17 | __asm__ __volatile__( | ||
18 | "ldrb %0, [%2], #1\n" | ||
19 | " teq %0, #0\n" | ||
20 | " beq 3f\n" | ||
21 | "1: strb %0, [%3]\n" | ||
22 | "2: ldrb %1, [%3, #0x14]\n" | ||
23 | " and %1, %1, #0x60\n" | ||
24 | " teq %1, #0x60\n" | ||
25 | " bne 2b\n" | ||
26 | " teq %0, #'\n'\n" | ||
27 | " moveq %0, #'\r'\n" | ||
28 | " beq 1b\n" | ||
29 | " ldrb %0, [%2], #1\n" | ||
30 | " teq %0, #0\n" | ||
31 | " bne 1b\n" | ||
32 | "3: ldrb %1, [%3, #0x14]\n" | ||
33 | " and %1, %1, #0x60\n" | ||
34 | " teq %1, #0x60\n" | ||
35 | " bne 3b" | ||
36 | : "=&r" (tmp1), "=&r" (tmp2) | ||
37 | : "r" (s), "r" (0xf0000be0) : "cc"); | ||
38 | } | ||
39 | |||
40 | /* | ||
41 | * nothing to do | ||
42 | */ | ||
43 | #define arch_decomp_setup() | ||
44 | #define arch_decomp_wdog() | ||
diff --git a/include/asm-arm/arch-ebsa110/vmalloc.h b/include/asm-arm/arch-ebsa110/vmalloc.h new file mode 100644 index 000000000000..759659be109f --- /dev/null +++ b/include/asm-arm/arch-ebsa110/vmalloc.h | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ebsa110/vmalloc.h | ||
3 | * | ||
4 | * Copyright (C) 1998 Russell King | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | /* | ||
12 | * Just any arbitrary offset to the start of the vmalloc VM area: the | ||
13 | * current 8MB value just means that there will be a 8MB "hole" after the | ||
14 | * physical memory until the kernel virtual memory starts. That means that | ||
15 | * any out-of-bounds memory accesses will hopefully be caught. | ||
16 | * The vmalloc() routines leaves a hole of 4kB between each vmalloced | ||
17 | * area for the same reason. ;) | ||
18 | */ | ||
19 | #define VMALLOC_OFFSET (8*1024*1024) | ||
20 | #define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1)) | ||
21 | #define VMALLOC_END (PAGE_OFFSET + 0x1f000000) | ||