diff options
Diffstat (limited to 'arch/arm/mach-shark')
-rw-r--r-- | arch/arm/mach-shark/include/mach/debug-macro.S | 31 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/dma.h | 18 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/entry-macro.S | 41 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/hardware.h | 51 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/io.h | 56 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/irqs.h | 13 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/memory.h | 48 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/system.h | 28 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/timex.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/uncompress.h | 51 | ||||
-rw-r--r-- | arch/arm/mach-shark/include/mach/vmalloc.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-shark/irq.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-shark/leds.c | 2 |
13 files changed, 350 insertions, 2 deletions
diff --git a/arch/arm/mach-shark/include/mach/debug-macro.S b/arch/arm/mach-shark/include/mach/debug-macro.S new file mode 100644 index 000000000000..0836cb78b29a --- /dev/null +++ b/arch/arm/mach-shark/include/mach/debug-macro.S | |||
@@ -0,0 +1,31 @@ | |||
1 | /* arch/arm/mach-shark/include/mach/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, #0xe0000000 | ||
16 | orr \rx, \rx, #0x000003f8 | ||
17 | .endm | ||
18 | |||
19 | .macro senduart,rd,rx | ||
20 | strb \rd, [\rx] | ||
21 | .endm | ||
22 | |||
23 | .macro busyuart,rd,rx | ||
24 | mov \rd, #0 | ||
25 | 1001: add \rd, \rd, #1 | ||
26 | teq \rd, #0x10000 | ||
27 | bne 1001b | ||
28 | .endm | ||
29 | |||
30 | .macro waituart,rd,rx | ||
31 | .endm | ||
diff --git a/arch/arm/mach-shark/include/mach/dma.h b/arch/arm/mach-shark/include/mach/dma.h new file mode 100644 index 000000000000..c0a29bd2a74f --- /dev/null +++ b/arch/arm/mach-shark/include/mach/dma.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/dma.h | ||
3 | * | ||
4 | * by Alexander Schulz | ||
5 | */ | ||
6 | #ifndef __ASM_ARCH_DMA_H | ||
7 | #define __ASM_ARCH_DMA_H | ||
8 | |||
9 | /* Use only the lowest 4MB, nothing else works. | ||
10 | * The rest is not DMAable. See dev / .properties | ||
11 | * in OpenFirmware. | ||
12 | */ | ||
13 | #define MAX_DMA_ADDRESS 0xC0400000 | ||
14 | #define MAX_DMA_CHANNELS 8 | ||
15 | #define DMA_ISA_CASCADE 4 | ||
16 | |||
17 | #endif /* _ASM_ARCH_DMA_H */ | ||
18 | |||
diff --git a/arch/arm/mach-shark/include/mach/entry-macro.S b/arch/arm/mach-shark/include/mach/entry-macro.S new file mode 100644 index 000000000000..e2853c0a3333 --- /dev/null +++ b/arch/arm/mach-shark/include/mach/entry-macro.S | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/entry-macro.S | ||
3 | * | ||
4 | * Low-level IRQ helper macros for Shark 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 | .macro disable_fiq | ||
11 | .endm | ||
12 | |||
13 | .macro get_irqnr_preamble, base, tmp | ||
14 | .endm | ||
15 | |||
16 | .macro arch_ret_to_user, tmp1, tmp2 | ||
17 | .endm | ||
18 | |||
19 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
20 | mov r4, #0xe0000000 | ||
21 | |||
22 | mov \irqstat, #0x0C | ||
23 | strb \irqstat, [r4, #0x20] @outb(0x0C, 0x20) /* Poll command */ | ||
24 | ldrb \irqnr, [r4, #0x20] @irq = inb(0x20) & 7 | ||
25 | and \irqstat, \irqnr, #0x80 | ||
26 | teq \irqstat, #0 | ||
27 | beq 43f | ||
28 | and \irqnr, \irqnr, #7 | ||
29 | teq \irqnr, #2 | ||
30 | bne 44f | ||
31 | 43: mov \irqstat, #0x0C | ||
32 | strb \irqstat, [r4, #0xa0] @outb(0x0C, 0xA0) /* Poll command */ | ||
33 | ldrb \irqnr, [r4, #0xa0] @irq = (inb(0xA0) & 7) + 8 | ||
34 | and \irqstat, \irqnr, #0x80 | ||
35 | teq \irqstat, #0 | ||
36 | beq 44f | ||
37 | and \irqnr, \irqnr, #7 | ||
38 | add \irqnr, \irqnr, #8 | ||
39 | 44: teq \irqstat, #0 | ||
40 | .endm | ||
41 | |||
diff --git a/arch/arm/mach-shark/include/mach/hardware.h b/arch/arm/mach-shark/include/mach/hardware.h new file mode 100644 index 000000000000..cb0ee2943c1a --- /dev/null +++ b/arch/arm/mach-shark/include/mach/hardware.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/hardware.h | ||
3 | * | ||
4 | * by Alexander Schulz | ||
5 | * | ||
6 | * derived from: | ||
7 | * arch/arm/mach-ebsa110/include/mach/hardware.h | ||
8 | * Copyright (C) 1996-1999 Russell King. | ||
9 | */ | ||
10 | #ifndef __ASM_ARCH_HARDWARE_H | ||
11 | #define __ASM_ARCH_HARDWARE_H | ||
12 | |||
13 | #ifndef __ASSEMBLY__ | ||
14 | |||
15 | /* | ||
16 | * Mapping areas | ||
17 | */ | ||
18 | #define IO_BASE 0xe0000000 | ||
19 | |||
20 | #else | ||
21 | |||
22 | #define IO_BASE 0 | ||
23 | |||
24 | #endif | ||
25 | |||
26 | #define IO_SIZE 0x08000000 | ||
27 | #define IO_START 0x40000000 | ||
28 | #define ROMCARD_SIZE 0x08000000 | ||
29 | #define ROMCARD_START 0x10000000 | ||
30 | |||
31 | #define PCIO_BASE 0xe0000000 | ||
32 | |||
33 | |||
34 | /* defines for the Framebuffer */ | ||
35 | #define FB_START 0x06000000 | ||
36 | #define FB_SIZE 0x01000000 | ||
37 | |||
38 | #define UNCACHEABLE_ADDR 0xdf010000 | ||
39 | |||
40 | #define SEQUOIA_LED_GREEN (1<<6) | ||
41 | #define SEQUOIA_LED_AMBER (1<<5) | ||
42 | #define SEQUOIA_LED_BACK (1<<7) | ||
43 | |||
44 | #define pcibios_assign_all_busses() 1 | ||
45 | |||
46 | #define PCIBIOS_MIN_IO 0x6000 | ||
47 | #define PCIBIOS_MIN_MEM 0x50000000 | ||
48 | #define PCIMEM_BASE 0xe8000000 | ||
49 | |||
50 | #endif | ||
51 | |||
diff --git a/arch/arm/mach-shark/include/mach/io.h b/arch/arm/mach-shark/include/mach/io.h new file mode 100644 index 000000000000..92475922c068 --- /dev/null +++ b/arch/arm/mach-shark/include/mach/io.h | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/io.h | ||
3 | * | ||
4 | * by Alexander Schulz | ||
5 | * | ||
6 | * derived from: | ||
7 | * arch/arm/mach-ebsa110/include/mach/io.h | ||
8 | * Copyright (C) 1997,1998 Russell King | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARM_ARCH_IO_H | ||
12 | #define __ASM_ARM_ARCH_IO_H | ||
13 | |||
14 | #include <mach/hardware.h> | ||
15 | |||
16 | #define IO_SPACE_LIMIT 0xffffffff | ||
17 | |||
18 | /* | ||
19 | * We use two different types of addressing - PC style addresses, and ARM | ||
20 | * addresses. PC style accesses the PC hardware with the normal PC IO | ||
21 | * addresses, eg 0x3f8 for serial#1. ARM addresses are 0x80000000+ | ||
22 | * and are translated to the start of IO. | ||
23 | */ | ||
24 | #define __PORT_PCIO(x) (!((x) & 0x80000000)) | ||
25 | |||
26 | #define __io(a) ((void __iomem *)(PCIO_BASE + (a))) | ||
27 | |||
28 | |||
29 | static inline unsigned int __ioaddr (unsigned int port) \ | ||
30 | { \ | ||
31 | if (__PORT_PCIO(port)) \ | ||
32 | return (unsigned int)(PCIO_BASE + (port)); \ | ||
33 | else \ | ||
34 | return (unsigned int)(IO_BASE + (port)); \ | ||
35 | } | ||
36 | |||
37 | #define __mem_pci(addr) (addr) | ||
38 | |||
39 | /* | ||
40 | * Translated address IO functions | ||
41 | * | ||
42 | * IO address has already been translated to a virtual address | ||
43 | */ | ||
44 | #define outb_t(v,p) \ | ||
45 | (*(volatile unsigned char *)(p) = (v)) | ||
46 | |||
47 | #define inb_t(p) \ | ||
48 | (*(volatile unsigned char *)(p)) | ||
49 | |||
50 | #define outl_t(v,p) \ | ||
51 | (*(volatile unsigned long *)(p) = (v)) | ||
52 | |||
53 | #define inl_t(p) \ | ||
54 | (*(volatile unsigned long *)(p)) | ||
55 | |||
56 | #endif | ||
diff --git a/arch/arm/mach-shark/include/mach/irqs.h b/arch/arm/mach-shark/include/mach/irqs.h new file mode 100644 index 000000000000..0586acd7cdd5 --- /dev/null +++ b/arch/arm/mach-shark/include/mach/irqs.h | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/irqs.h | ||
3 | * | ||
4 | * by Alexander Schulz | ||
5 | */ | ||
6 | |||
7 | #define NR_IRQS 16 | ||
8 | |||
9 | #define IRQ_ISA_KEYBOARD 1 | ||
10 | #define RTC_IRQ 8 | ||
11 | #define I8042_KBD_IRQ 1 | ||
12 | #define I8042_AUX_IRQ 12 | ||
13 | #define IRQ_HARDDISK 14 | ||
diff --git a/arch/arm/mach-shark/include/mach/memory.h b/arch/arm/mach-shark/include/mach/memory.h new file mode 100644 index 000000000000..b7874ad9f9f6 --- /dev/null +++ b/arch/arm/mach-shark/include/mach/memory.h | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/memory.h | ||
3 | * | ||
4 | * by Alexander Schulz | ||
5 | * | ||
6 | * derived from: | ||
7 | * arch/arm/mach-ebsa110/include/mach/memory.h | ||
8 | * Copyright (c) 1996-1999 Russell King. | ||
9 | */ | ||
10 | #ifndef __ASM_ARCH_MEMORY_H | ||
11 | #define __ASM_ARCH_MEMORY_H | ||
12 | |||
13 | #include <asm/sizes.h> | ||
14 | |||
15 | /* | ||
16 | * Physical DRAM offset. | ||
17 | */ | ||
18 | #define PHYS_OFFSET UL(0x08000000) | ||
19 | |||
20 | #ifndef __ASSEMBLY__ | ||
21 | |||
22 | static inline void __arch_adjust_zones(int node, unsigned long *zone_size, unsigned long *zhole_size) | ||
23 | { | ||
24 | if (node != 0) return; | ||
25 | /* Only the first 4 MB (=1024 Pages) are usable for DMA */ | ||
26 | zone_size[1] = zone_size[0] - 1024; | ||
27 | zone_size[0] = 1024; | ||
28 | zhole_size[1] = zhole_size[0]; | ||
29 | zhole_size[0] = 0; | ||
30 | } | ||
31 | |||
32 | #define arch_adjust_zones(node, size, holes) \ | ||
33 | __arch_adjust_zones(node, size, holes) | ||
34 | |||
35 | #define ISA_DMA_THRESHOLD (PHYS_OFFSET + SZ_4M - 1) | ||
36 | |||
37 | #endif | ||
38 | |||
39 | #define __virt_to_bus(x) __virt_to_phys(x) | ||
40 | #define __bus_to_virt(x) __phys_to_virt(x) | ||
41 | |||
42 | /* | ||
43 | * Cache flushing area | ||
44 | */ | ||
45 | #define FLUSH_BASE_PHYS 0x80000000 | ||
46 | #define FLUSH_BASE 0xdf000000 | ||
47 | |||
48 | #endif | ||
diff --git a/arch/arm/mach-shark/include/mach/system.h b/arch/arm/mach-shark/include/mach/system.h new file mode 100644 index 000000000000..85aceef6f874 --- /dev/null +++ b/arch/arm/mach-shark/include/mach/system.h | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/system.h | ||
3 | * | ||
4 | * by Alexander Schulz | ||
5 | */ | ||
6 | #ifndef __ASM_ARCH_SYSTEM_H | ||
7 | #define __ASM_ARCH_SYSTEM_H | ||
8 | |||
9 | #include <asm/io.h> | ||
10 | |||
11 | static void arch_reset(char mode) | ||
12 | { | ||
13 | short temp; | ||
14 | local_irq_disable(); | ||
15 | /* Reset the Machine via pc[3] of the sequoia chipset */ | ||
16 | outw(0x09,0x24); | ||
17 | temp=inw(0x26); | ||
18 | temp = temp | (1<<3) | (1<<10); | ||
19 | outw(0x09,0x24); | ||
20 | outw(temp,0x26); | ||
21 | |||
22 | } | ||
23 | |||
24 | static inline void arch_idle(void) | ||
25 | { | ||
26 | } | ||
27 | |||
28 | #endif | ||
diff --git a/arch/arm/mach-shark/include/mach/timex.h b/arch/arm/mach-shark/include/mach/timex.h new file mode 100644 index 000000000000..bb6eeaebed86 --- /dev/null +++ b/arch/arm/mach-shark/include/mach/timex.h | |||
@@ -0,0 +1,7 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/timex.h | ||
3 | * | ||
4 | * by Alexander Schulz | ||
5 | */ | ||
6 | |||
7 | #define CLOCK_TICK_RATE 1193180 | ||
diff --git a/arch/arm/mach-shark/include/mach/uncompress.h b/arch/arm/mach-shark/include/mach/uncompress.h new file mode 100644 index 000000000000..3725e1633418 --- /dev/null +++ b/arch/arm/mach-shark/include/mach/uncompress.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/uncompress.h | ||
3 | * by Alexander Schulz | ||
4 | * | ||
5 | * derived from: | ||
6 | * arch/arm/mach-footbridge/include/mach/uncompress.h | ||
7 | * Copyright (C) 1996,1997,1998 Russell King | ||
8 | */ | ||
9 | |||
10 | #define SERIAL_BASE ((volatile unsigned char *)0x400003f8) | ||
11 | |||
12 | static inline void putc(int c) | ||
13 | { | ||
14 | int t; | ||
15 | |||
16 | SERIAL_BASE[0] = c; | ||
17 | t=0x10000; | ||
18 | while (t--); | ||
19 | } | ||
20 | |||
21 | static inline void flush(void) | ||
22 | { | ||
23 | } | ||
24 | |||
25 | #ifdef DEBUG | ||
26 | static void putn(unsigned long z) | ||
27 | { | ||
28 | int i; | ||
29 | char x; | ||
30 | |||
31 | putc('0'); | ||
32 | putc('x'); | ||
33 | for (i=0;i<8;i++) { | ||
34 | x='0'+((z>>((7-i)*4))&0xf); | ||
35 | if (x>'9') x=x-'0'+'A'-10; | ||
36 | putc(x); | ||
37 | } | ||
38 | } | ||
39 | |||
40 | static void putr() | ||
41 | { | ||
42 | putc('\n'); | ||
43 | putc('\r'); | ||
44 | } | ||
45 | #endif | ||
46 | |||
47 | /* | ||
48 | * nothing to do | ||
49 | */ | ||
50 | #define arch_decomp_setup() | ||
51 | #define arch_decomp_wdog() | ||
diff --git a/arch/arm/mach-shark/include/mach/vmalloc.h b/arch/arm/mach-shark/include/mach/vmalloc.h new file mode 100644 index 000000000000..f6c6837c5451 --- /dev/null +++ b/arch/arm/mach-shark/include/mach/vmalloc.h | |||
@@ -0,0 +1,4 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/vmalloc.h | ||
3 | */ | ||
4 | #define VMALLOC_END (PAGE_OFFSET + 0x10000000) | ||
diff --git a/arch/arm/mach-shark/irq.c b/arch/arm/mach-shark/irq.c index 5b0c6af44ec6..44b0811b400c 100644 --- a/arch/arm/mach-shark/irq.c +++ b/arch/arm/mach-shark/irq.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * by Alexander Schulz | 4 | * by Alexander Schulz |
5 | * | 5 | * |
6 | * derived from linux/arch/ppc/kernel/i8259.c and: | 6 | * derived from linux/arch/ppc/kernel/i8259.c and: |
7 | * include/asm-arm/arch-ebsa110/irq.h | 7 | * arch/arm/mach-ebsa110/include/mach/irq.h |
8 | * Copyright (C) 1996-1998 Russell King | 8 | * Copyright (C) 1996-1998 Russell King |
9 | */ | 9 | */ |
10 | 10 | ||
diff --git a/arch/arm/mach-shark/leds.c b/arch/arm/mach-shark/leds.c index 333ece0aad49..b1896471aa3c 100644 --- a/arch/arm/mach-shark/leds.c +++ b/arch/arm/mach-shark/leds.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include <linux/spinlock.h> | 21 | #include <linux/spinlock.h> |
22 | #include <linux/ioport.h> | 22 | #include <linux/ioport.h> |
23 | 23 | ||
24 | #include <asm/arch/hardware.h> | 24 | #include <mach/hardware.h> |
25 | #include <asm/leds.h> | 25 | #include <asm/leds.h> |
26 | #include <asm/io.h> | 26 | #include <asm/io.h> |
27 | #include <asm/system.h> | 27 | #include <asm/system.h> |