diff options
Diffstat (limited to 'arch/sh/boards/mach-cayman')
-rw-r--r-- | arch/sh/boards/mach-cayman/Makefile | 2 | ||||
-rw-r--r-- | arch/sh/boards/mach-cayman/irq.c | 17 | ||||
-rw-r--r-- | arch/sh/boards/mach-cayman/panic.c | 49 | ||||
-rw-r--r-- | arch/sh/boards/mach-cayman/setup.c | 2 |
4 files changed, 52 insertions, 18 deletions
diff --git a/arch/sh/boards/mach-cayman/Makefile b/arch/sh/boards/mach-cayman/Makefile index cafe1ac3b29c..00fa3eaecb1b 100644 --- a/arch/sh/boards/mach-cayman/Makefile +++ b/arch/sh/boards/mach-cayman/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # | 1 | # |
2 | # Makefile for the Hitachi Cayman specific parts of the kernel | 2 | # Makefile for the Hitachi Cayman specific parts of the kernel |
3 | # | 3 | # |
4 | obj-y := setup.o irq.o | 4 | obj-y := setup.o irq.o panic.o |
diff --git a/arch/sh/boards/mach-cayman/irq.c b/arch/sh/boards/mach-cayman/irq.c index da62ad516994..33f770856319 100644 --- a/arch/sh/boards/mach-cayman/irq.c +++ b/arch/sh/boards/mach-cayman/irq.c | |||
@@ -142,26 +142,11 @@ int cayman_irq_demux(int evt) | |||
142 | return irq; | 142 | return irq; |
143 | } | 143 | } |
144 | 144 | ||
145 | #if defined(CONFIG_PROC_FS) && defined(CONFIG_SYSCTL) | ||
146 | int cayman_irq_describe(char* p, int irq) | ||
147 | { | ||
148 | if (irq < NR_INTC_IRQS) { | ||
149 | return intc_irq_describe(p, irq); | ||
150 | } else if (irq < NR_INTC_IRQS + 8) { | ||
151 | return sprintf(p, "(SMSC %d)", irq - NR_INTC_IRQS); | ||
152 | } else if ((irq >= NR_INTC_IRQS + 24) && (irq < NR_INTC_IRQS + 32)) { | ||
153 | return sprintf(p, "(PCI2 %d)", irq - (NR_INTC_IRQS + 24)); | ||
154 | } | ||
155 | |||
156 | return 0; | ||
157 | } | ||
158 | #endif | ||
159 | |||
160 | void init_cayman_irq(void) | 145 | void init_cayman_irq(void) |
161 | { | 146 | { |
162 | int i; | 147 | int i; |
163 | 148 | ||
164 | epld_virt = onchip_remap(EPLD_BASE, 1024, "EPLD"); | 149 | epld_virt = (unsigned long)ioremap_nocache(EPLD_BASE, 1024); |
165 | if (!epld_virt) { | 150 | if (!epld_virt) { |
166 | printk(KERN_ERR "Cayman IRQ: Unable to remap EPLD\n"); | 151 | printk(KERN_ERR "Cayman IRQ: Unable to remap EPLD\n"); |
167 | return; | 152 | return; |
diff --git a/arch/sh/boards/mach-cayman/panic.c b/arch/sh/boards/mach-cayman/panic.c new file mode 100644 index 000000000000..d1e67306d07c --- /dev/null +++ b/arch/sh/boards/mach-cayman/panic.c | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2003 Richard Curnow, SuperH UK Limited | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | */ | ||
8 | |||
9 | #include <linux/kernel.h> | ||
10 | #include <linux/io.h> | ||
11 | #include <cpu/registers.h> | ||
12 | |||
13 | /* THIS IS A PHYSICAL ADDRESS */ | ||
14 | #define HDSP2534_ADDR (0x04002100) | ||
15 | |||
16 | static void poor_mans_delay(void) | ||
17 | { | ||
18 | int i; | ||
19 | |||
20 | for (i = 0; i < 2500000; i++) | ||
21 | cpu_relax(); | ||
22 | } | ||
23 | |||
24 | static void show_value(unsigned long x) | ||
25 | { | ||
26 | int i; | ||
27 | unsigned nibble; | ||
28 | for (i = 0; i < 8; i++) { | ||
29 | nibble = ((x >> (i * 4)) & 0xf); | ||
30 | |||
31 | __raw_writeb(nibble + ((nibble > 9) ? 55 : 48), | ||
32 | HDSP2534_ADDR + 0xe0 + ((7 - i) << 2)); | ||
33 | } | ||
34 | } | ||
35 | |||
36 | void | ||
37 | panic_handler(unsigned long panicPC, unsigned long panicSSR, | ||
38 | unsigned long panicEXPEVT) | ||
39 | { | ||
40 | while (1) { | ||
41 | /* This piece of code displays the PC on the LED display */ | ||
42 | show_value(panicPC); | ||
43 | poor_mans_delay(); | ||
44 | show_value(panicSSR); | ||
45 | poor_mans_delay(); | ||
46 | show_value(panicEXPEVT); | ||
47 | poor_mans_delay(); | ||
48 | } | ||
49 | } | ||
diff --git a/arch/sh/boards/mach-cayman/setup.c b/arch/sh/boards/mach-cayman/setup.c index e7f9cc5f2ff1..7e8216ac31bd 100644 --- a/arch/sh/boards/mach-cayman/setup.c +++ b/arch/sh/boards/mach-cayman/setup.c | |||
@@ -102,7 +102,7 @@ static int __init smsc_superio_setup(void) | |||
102 | { | 102 | { |
103 | unsigned char devid, devrev; | 103 | unsigned char devid, devrev; |
104 | 104 | ||
105 | smsc_superio_virt = onchip_remap(SMSC_SUPERIO_BASE, 1024, "SMSC SuperIO"); | 105 | smsc_superio_virt = (unsigned long)ioremap_nocache(SMSC_SUPERIO_BASE, 1024); |
106 | if (!smsc_superio_virt) { | 106 | if (!smsc_superio_virt) { |
107 | panic("Unable to remap SMSC SuperIO\n"); | 107 | panic("Unable to remap SMSC SuperIO\n"); |
108 | } | 108 | } |