aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-31 00:54:37 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-31 00:54:37 -0400
commit6a302358d87fedaf7bda12b8e909265ebf1ce674 (patch)
tree9bb5d79d812d531ae7031fe4aecf18151e41f716 /arch
parent8e268f333012c62fc6a5a10e1e2a19c1c389853e (diff)
parente06c4e5775b1efc4e476f2430439e45867775f5f (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.23
* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.23: sh: Fix fs.h removal from mm.h regressions. sh: fix get_wchan() for SH kernels without framepointers sh: arch/sh/boot - fix shell usage rtc: rtc-sh: Correct sh_rtc_set_time() for some SH-3 parts. sh: remove support for sh7300 and solution engine 7300 sh: Add sh to the CC_OPTIMIZE_FOR_SIZE dependencies. sh: Kill off virt_to_bus()/bus_to_virt(). sh: sh-sci - fix SH7708 support sh: Restrict DSP support to specific CPUs. sh: Silence sq compile warning on sh4 nommu. sh: Kill the rest of the SE73180 cruft. sh: remove support for sh73180 and solution engine 73180 sh: remove old broken pint code sh: Reclaim beginning of P3 space for vmalloc area. sh: Fix Dreamcast DMA issues. sh: Add kmap_coherent()/kunmap_coherent() interface for SH-4.
Diffstat (limited to 'arch')
-rw-r--r--arch/sh/Kconfig33
-rw-r--r--arch/sh/Makefile2
-rw-r--r--arch/sh/boards/se/7300/Makefile5
-rw-r--r--arch/sh/boards/se/7300/io.c268
-rw-r--r--arch/sh/boards/se/7300/irq.c40
-rw-r--r--arch/sh/boards/se/7300/setup.c74
-rw-r--r--arch/sh/boards/se/73180/Makefile5
-rw-r--r--arch/sh/boards/se/73180/io.c268
-rw-r--r--arch/sh/boards/se/73180/irq.c136
-rw-r--r--arch/sh/boards/se/73180/setup.c75
-rw-r--r--arch/sh/boot/Makefile7
-rw-r--r--arch/sh/boot/compressed/Makefile7
-rw-r--r--arch/sh/configs/se7300_defconfig696
-rw-r--r--arch/sh/configs/se73180_defconfig648
-rw-r--r--arch/sh/drivers/dma/dma-api.c7
-rw-r--r--arch/sh/kernel/cpu/irq/Makefile1
-rw-r--r--arch/sh/kernel/cpu/irq/ipr.c2
-rw-r--r--arch/sh/kernel/cpu/irq/pint.c220
-rw-r--r--arch/sh/kernel/cpu/sh3/Makefile4
-rw-r--r--arch/sh/kernel/cpu/sh3/clock-sh7710.c (renamed from arch/sh/kernel/cpu/sh3/clock-sh7300.c)26
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7300.c43
-rw-r--r--arch/sh/kernel/cpu/sh4/probe.c6
-rw-r--r--arch/sh/kernel/cpu/sh4/sq.c18
-rw-r--r--arch/sh/kernel/cpu/sh4a/Makefile2
-rw-r--r--arch/sh/kernel/cpu/sh4a/clock-sh73180.c81
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh73180.c43
-rw-r--r--arch/sh/kernel/init_task.c2
-rw-r--r--arch/sh/kernel/process.c7
-rw-r--r--arch/sh/kernel/setup.c3
-rw-r--r--arch/sh/kernel/sys_sh.c1
-rw-r--r--arch/sh/kernel/timers/timer-tmu.c3
-rw-r--r--arch/sh/kernel/vsyscall/vsyscall.c1
-rw-r--r--arch/sh/mm/Kconfig14
-rw-r--r--arch/sh/mm/cache-sh4.c14
-rw-r--r--arch/sh/mm/pg-sh4.c76
-rw-r--r--arch/sh/tools/mach-types2
36 files changed, 97 insertions, 2743 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index f87f429e0b24..54878f07cf0c 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -90,6 +90,9 @@ config ARCH_HAS_ILOG2_U64
90 bool 90 bool
91 default n 91 default n
92 92
93config ARCH_NO_VIRT_TO_BUS
94 def_bool y
95
93source "init/Kconfig" 96source "init/Kconfig"
94 97
95menu "System type" 98menu "System type"
@@ -134,8 +137,8 @@ config SH_FPU_EMU
134 137
135config SH_DSP 138config SH_DSP
136 bool "DSP support" 139 bool "DSP support"
137 default y if SH4AL_DSP || !CPU_SH4 140 depends on CPU_HAS_DSP
138 default n 141 default y
139 help 142 help
140 Selecting this option will enable support for SH processors that 143 Selecting this option will enable support for SH processors that
141 have DSP units (ie, SH2-DSP, SH3-DSP, and SH4AL-DSP). 144 have DSP units (ie, SH2-DSP, SH3-DSP, and SH4AL-DSP).
@@ -172,9 +175,6 @@ config SPECULATIVE_EXECUTION
172config CPU_HAS_INTEVT 175config CPU_HAS_INTEVT
173 bool 176 bool
174 177
175config CPU_HAS_PINT_IRQ
176 bool
177
178config CPU_HAS_MASKREG_IRQ 178config CPU_HAS_MASKREG_IRQ
179 bool 179 bool
180 180
@@ -202,6 +202,9 @@ config CPU_HAS_SR_RB
202config CPU_HAS_PTEA 202config CPU_HAS_PTEA
203 bool 203 bool
204 204
205config CPU_HAS_DSP
206 bool
207
205endmenu 208endmenu
206 209
207menu "Board support" 210menu "Board support"
@@ -261,14 +264,6 @@ config SH_7780_SOLUTION_ENGINE
261 Select 7780 SolutionEngine if configuring for a Renesas SH7780 264 Select 7780 SolutionEngine if configuring for a Renesas SH7780
262 evaluation board. 265 evaluation board.
263 266
264config SH_7300_SOLUTION_ENGINE
265 bool "SolutionEngine7300"
266 select SOLUTION_ENGINE
267 depends on CPU_SUBTYPE_SH7300
268 help
269 Select 7300 SolutionEngine if configuring for a Hitachi
270 SH7300(SH-Mobile V) evaluation board.
271
272config SH_7343_SOLUTION_ENGINE 267config SH_7343_SOLUTION_ENGINE
273 bool "SolutionEngine7343" 268 bool "SolutionEngine7343"
274 select SOLUTION_ENGINE 269 select SOLUTION_ENGINE
@@ -277,14 +272,6 @@ config SH_7343_SOLUTION_ENGINE
277 Select 7343 SolutionEngine if configuring for a Hitachi 272 Select 7343 SolutionEngine if configuring for a Hitachi
278 SH7343 (SH-Mobile 3AS) evaluation board. 273 SH7343 (SH-Mobile 3AS) evaluation board.
279 274
280config SH_73180_SOLUTION_ENGINE
281 bool "SolutionEngine73180"
282 select SOLUTION_ENGINE
283 depends on CPU_SUBTYPE_SH73180
284 help
285 Select 73180 SolutionEngine if configuring for a Hitachi
286 SH73180(SH-Mobile 3) evaluation board.
287
288config SH_7751_SYSTEMH 275config SH_7751_SYSTEMH
289 bool "SystemH7751R" 276 bool "SystemH7751R"
290 depends on CPU_SUBTYPE_SH7751R 277 depends on CPU_SUBTYPE_SH7751R
@@ -448,10 +435,10 @@ config SH_TIMER_IRQ
448 435
449config SH_PCLK_FREQ 436config SH_PCLK_FREQ
450 int "Peripheral clock frequency (in Hz)" 437 int "Peripheral clock frequency (in Hz)"
451 default "27000000" if CPU_SUBTYPE_SH73180 || CPU_SUBTYPE_SH7343 438 default "27000000" if CPU_SUBTYPE_SH7343
452 default "31250000" if CPU_SUBTYPE_SH7619 439 default "31250000" if CPU_SUBTYPE_SH7619
453 default "32000000" if CPU_SUBTYPE_SH7722 440 default "32000000" if CPU_SUBTYPE_SH7722
454 default "33333333" if CPU_SUBTYPE_SH7300 || CPU_SUBTYPE_SH7770 || \ 441 default "33333333" if CPU_SUBTYPE_SH7770 || \
455 CPU_SUBTYPE_SH7760 || CPU_SUBTYPE_SH7705 || \ 442 CPU_SUBTYPE_SH7760 || CPU_SUBTYPE_SH7705 || \
456 CPU_SUBTYPE_SH7206 443 CPU_SUBTYPE_SH7206
457 default "60000000" if CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7751R 444 default "60000000" if CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7751R
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index 0016609d1eba..3d211aa33cd8 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -91,9 +91,7 @@ machdir-$(CONFIG_SH_SOLUTION_ENGINE) += se/770x
91machdir-$(CONFIG_SH_7722_SOLUTION_ENGINE) += se/7722 91machdir-$(CONFIG_SH_7722_SOLUTION_ENGINE) += se/7722
92machdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) += se/7751 92machdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) += se/7751
93machdir-$(CONFIG_SH_7780_SOLUTION_ENGINE) += se/7780 93machdir-$(CONFIG_SH_7780_SOLUTION_ENGINE) += se/7780
94machdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) += se/7300
95machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) += se/7343 94machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) += se/7343
96machdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) += se/73180
97machdir-$(CONFIG_SH_HP6XX) += hp6xx 95machdir-$(CONFIG_SH_HP6XX) += hp6xx
98machdir-$(CONFIG_SH_DREAMCAST) += dreamcast 96machdir-$(CONFIG_SH_DREAMCAST) += dreamcast
99machdir-$(CONFIG_SH_MPC1211) += mpc1211 97machdir-$(CONFIG_SH_MPC1211) += mpc1211
diff --git a/arch/sh/boards/se/7300/Makefile b/arch/sh/boards/se/7300/Makefile
deleted file mode 100644
index 46247368f14b..000000000000
--- a/arch/sh/boards/se/7300/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
1#
2# Makefile for the 7300 SolutionEngine specific parts of the kernel
3#
4
5obj-y := setup.o io.o irq.o
diff --git a/arch/sh/boards/se/7300/io.c b/arch/sh/boards/se/7300/io.c
deleted file mode 100644
index 8a03d7a52a7c..000000000000
--- a/arch/sh/boards/se/7300/io.c
+++ /dev/null
@@ -1,268 +0,0 @@
1/*
2 * arch/sh/boards/se/7300/io.c
3 *
4 * Copyright (C) 2003 YOSHII Takashi <yoshii-takashi@hitachi-ul.co.jp>
5 * Based on arch/sh/kernel/io_shmse.c
6 *
7 * I/O routine for SH-Mobile3 73180 SolutionEngine.
8 *
9 */
10
11#include <linux/kernel.h>
12#include <asm/io.h>
13#include <asm/se7300.h>
14
15#define badio(fn, a) panic("bad i/o operation %s for %08lx.", #fn, a)
16
17struct iop {
18 unsigned long start, end;
19 unsigned long base;
20 struct iop *(*check) (struct iop * p, unsigned long port);
21 unsigned char (*inb) (struct iop * p, unsigned long port);
22 unsigned short (*inw) (struct iop * p, unsigned long port);
23 void (*outb) (struct iop * p, unsigned char value, unsigned long port);
24 void (*outw) (struct iop * p, unsigned short value, unsigned long port);
25};
26
27struct iop *
28simple_check(struct iop *p, unsigned long port)
29{
30 if ((p->start <= port) && (port <= p->end))
31 return p;
32 else
33 badio(check, port);
34}
35
36struct iop *
37ide_check(struct iop *p, unsigned long port)
38{
39 if (((0x1f0 <= port) && (port <= 0x1f7)) || (port == 0x3f7))
40 return p;
41 return NULL;
42}
43
44unsigned char
45simple_inb(struct iop *p, unsigned long port)
46{
47 return *(unsigned char *) (p->base + port);
48}
49
50unsigned short
51simple_inw(struct iop *p, unsigned long port)
52{
53 return *(unsigned short *) (p->base + port);
54}
55
56void
57simple_outb(struct iop *p, unsigned char value, unsigned long port)
58{
59 *(unsigned char *) (p->base + port) = value;
60}
61
62void
63simple_outw(struct iop *p, unsigned short value, unsigned long port)
64{
65 *(unsigned short *) (p->base + port) = value;
66}
67
68unsigned char
69pcc_inb(struct iop *p, unsigned long port)
70{
71 unsigned long addr = p->base + port + 0x40000;
72 unsigned long v;
73
74 if (port & 1)
75 addr += 0x00400000;
76 v = *(volatile unsigned char *) addr;
77 return v;
78}
79
80void
81pcc_outb(struct iop *p, unsigned char value, unsigned long port)
82{
83 unsigned long addr = p->base + port + 0x40000;
84
85 if (port & 1)
86 addr += 0x00400000;
87 *(volatile unsigned char *) addr = value;
88}
89
90unsigned char
91bad_inb(struct iop *p, unsigned long port)
92{
93 badio(inb, port);
94}
95
96void
97bad_outb(struct iop *p, unsigned char value, unsigned long port)
98{
99 badio(inw, port);
100}
101
102#ifdef CONFIG_SMC91X
103/* MSTLANEX01 LAN at 0xb400:0000 */
104static struct iop laniop = {
105 .start = 0x300,
106 .end = 0x30f,
107 .base = 0xb4000000,
108 .check = simple_check,
109 .inb = simple_inb,
110 .inw = simple_inw,
111 .outb = simple_outb,
112 .outw = simple_outw,
113};
114#endif
115
116/* NE2000 pc card NIC */
117static struct iop neiop = {
118 .start = 0x280,
119 .end = 0x29f,
120 .base = 0xb0600000 + 0x80, /* soft 0x280 -> hard 0x300 */
121 .check = simple_check,
122 .inb = pcc_inb,
123 .inw = simple_inw,
124 .outb = pcc_outb,
125 .outw = simple_outw,
126};
127
128#ifdef CONFIG_IDE
129/* CF in CF slot */
130static struct iop cfiop = {
131 .base = 0xb0600000,
132 .check = ide_check,
133 .inb = pcc_inb,
134 .inw = simple_inw,
135 .outb = pcc_outb,
136 .outw = simple_outw,
137};
138#endif
139
140static __inline__ struct iop *
141port2iop(unsigned long port)
142{
143 if (0) ;
144#if defined(CONFIG_SMC91X)
145 else if (laniop.check(&laniop, port))
146 return &laniop;
147#endif
148#if defined(CONFIG_NE2000)
149 else if (neiop.check(&neiop, port))
150 return &neiop;
151#endif
152#if defined(CONFIG_IDE)
153 else if (cfiop.check(&cfiop, port))
154 return &cfiop;
155#endif
156 else
157 return &neiop; /* fallback */
158}
159
160static inline void
161delay(void)
162{
163 ctrl_inw(0xac000000);
164 ctrl_inw(0xac000000);
165}
166
167unsigned char
168sh7300se_inb(unsigned long port)
169{
170 struct iop *p = port2iop(port);
171 return (p->inb) (p, port);
172}
173
174unsigned char
175sh7300se_inb_p(unsigned long port)
176{
177 unsigned char v = sh7300se_inb(port);
178 delay();
179 return v;
180}
181
182unsigned short
183sh7300se_inw(unsigned long port)
184{
185 struct iop *p = port2iop(port);
186 return (p->inw) (p, port);
187}
188
189unsigned int
190sh7300se_inl(unsigned long port)
191{
192 badio(inl, port);
193}
194
195void
196sh7300se_outb(unsigned char value, unsigned long port)
197{
198 struct iop *p = port2iop(port);
199 (p->outb) (p, value, port);
200}
201
202void
203sh7300se_outb_p(unsigned char value, unsigned long port)
204{
205 sh7300se_outb(value, port);
206 delay();
207}
208
209void
210sh7300se_outw(unsigned short value, unsigned long port)
211{
212 struct iop *p = port2iop(port);
213 (p->outw) (p, value, port);
214}
215
216void
217sh7300se_outl(unsigned int value, unsigned long port)
218{
219 badio(outl, port);
220}
221
222void
223sh7300se_insb(unsigned long port, void *addr, unsigned long count)
224{
225 unsigned char *a = addr;
226 struct iop *p = port2iop(port);
227 while (count--)
228 *a++ = (p->inb) (p, port);
229}
230
231void
232sh7300se_insw(unsigned long port, void *addr, unsigned long count)
233{
234 unsigned short *a = addr;
235 struct iop *p = port2iop(port);
236 while (count--)
237 *a++ = (p->inw) (p, port);
238}
239
240void
241sh7300se_insl(unsigned long port, void *addr, unsigned long count)
242{
243 badio(insl, port);
244}
245
246void
247sh7300se_outsb(unsigned long port, const void *addr, unsigned long count)
248{
249 unsigned char *a = (unsigned char *) addr;
250 struct iop *p = port2iop(port);
251 while (count--)
252 (p->outb) (p, *a++, port);
253}
254
255void
256sh7300se_outsw(unsigned long port, const void *addr, unsigned long count)
257{
258 unsigned short *a = (unsigned short *) addr;
259 struct iop *p = port2iop(port);
260 while (count--)
261 (p->outw) (p, *a++, port);
262}
263
264void
265sh7300se_outsl(unsigned long port, const void *addr, unsigned long count)
266{
267 badio(outsw, port);
268}
diff --git a/arch/sh/boards/se/7300/irq.c b/arch/sh/boards/se/7300/irq.c
deleted file mode 100644
index 1279d776d60f..000000000000
--- a/arch/sh/boards/se/7300/irq.c
+++ /dev/null
@@ -1,40 +0,0 @@
1/*
2 * linux/arch/sh/boards/se/7300/irq.c
3 *
4 * Copyright (C) 2003 Takashi Kusuda <kusuda-takashi@hitachi-ul.co.jp>
5 *
6 * SH-Mobile SolutionEngine 7300 Support.
7 *
8 */
9
10#include <linux/init.h>
11#include <linux/irq.h>
12#include <asm/irq.h>
13#include <asm/io.h>
14#include <asm/se7300.h>
15
16static struct ipr_data se7300_ipr_map[] = {
17 /* PC_IRQ[0-3] -> IRQ0 (32) */
18 { IRQ0_IRQ, IRQ0_IPR_ADDR, IRQ0_IPR_POS, 0x0f - IRQ0_IRQ },
19 /* A_IRQ[0-3] -> IRQ1 (33) */
20 { IRQ1_IRQ, IRQ1_IPR_ADDR, IRQ1_IPR_POS, 0x0f - IRQ1_IRQ },
21 { SIOF0_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
22 { DMTE2_IRQ, DMA1_IPR_ADDR, DMA1_IPR_POS, DMA1_PRIORITY },
23 { DMTE3_IRQ, DMA1_IPR_ADDR, DMA1_IPR_POS, DMA1_PRIORITY },
24 { VIO_IRQ, VIO_IPR_ADDR, VIO_IPR_POS, VIO_PRIORITY },
25};
26
27/*
28 * Initialize IRQ setting
29 */
30void __init
31init_7300se_IRQ(void)
32{
33 ctrl_outw(0x0028, PA_EPLD_MODESET); /* mode set IRQ0,1 active low. */
34 ctrl_outw(0xa000, INTC_ICR1); /* IRQ mode; IRQ0,1 enable. */
35 ctrl_outw(0x0000, PORT_PFCR); /* use F for IRQ[3:0] and SIU. */
36
37 make_ipr_irq(se7300_ipr_map, ARRAY_SIZE(se7300_ipr_map));
38
39 ctrl_outw(0x2000, PA_MRSHPC + 0x0c); /* mrshpc irq enable */
40}
diff --git a/arch/sh/boards/se/7300/setup.c b/arch/sh/boards/se/7300/setup.c
deleted file mode 100644
index eb469f5b6e97..000000000000
--- a/arch/sh/boards/se/7300/setup.c
+++ /dev/null
@@ -1,74 +0,0 @@
1/*
2 * linux/arch/sh/boards/se/7300/setup.c
3 *
4 * Copyright (C) 2003 Takashi Kusuda <kusuda-takashi@hitachi-ul.co.jp>
5 *
6 * SH-Mobile SolutionEngine 7300 Support.
7 *
8 */
9#include <linux/init.h>
10#include <linux/platform_device.h>
11#include <asm/machvec.h>
12#include <asm/se7300.h>
13
14void init_7300se_IRQ(void);
15
16static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 };
17
18static struct resource heartbeat_resources[] = {
19 [0] = {
20 .start = PA_LED,
21 .end = PA_LED + ARRAY_SIZE(heartbeat_bit_pos) - 1,
22 .flags = IORESOURCE_MEM,
23 },
24};
25
26static struct platform_device heartbeat_device = {
27 .name = "heartbeat",
28 .id = -1,
29 .dev = {
30 .platform_data = heartbeat_bit_pos,
31 },
32 .num_resources = ARRAY_SIZE(heartbeat_resources),
33 .resource = heartbeat_resources,
34};
35
36static struct platform_device *se7300_devices[] __initdata = {
37 &heartbeat_device,
38};
39
40static int __init se7300_devices_setup(void)
41{
42 return platform_add_devices(se7300_devices, ARRAY_SIZE(se7300_devices));
43}
44__initcall(se7300_devices_setup);
45
46/*
47 * The Machine Vector
48 */
49static struct sh_machine_vector mv_7300se __initmv = {
50 .mv_name = "SolutionEngine 7300",
51 .mv_nr_irqs = 109,
52 .mv_inb = sh7300se_inb,
53 .mv_inw = sh7300se_inw,
54 .mv_inl = sh7300se_inl,
55 .mv_outb = sh7300se_outb,
56 .mv_outw = sh7300se_outw,
57 .mv_outl = sh7300se_outl,
58
59 .mv_inb_p = sh7300se_inb_p,
60 .mv_inw_p = sh7300se_inw,
61 .mv_inl_p = sh7300se_inl,
62 .mv_outb_p = sh7300se_outb_p,
63 .mv_outw_p = sh7300se_outw,
64 .mv_outl_p = sh7300se_outl,
65
66 .mv_insb = sh7300se_insb,
67 .mv_insw = sh7300se_insw,
68 .mv_insl = sh7300se_insl,
69 .mv_outsb = sh7300se_outsb,
70 .mv_outsw = sh7300se_outsw,
71 .mv_outsl = sh7300se_outsl,
72
73 .mv_init_irq = init_7300se_IRQ,
74};
diff --git a/arch/sh/boards/se/73180/Makefile b/arch/sh/boards/se/73180/Makefile
deleted file mode 100644
index e7c09967c529..000000000000
--- a/arch/sh/boards/se/73180/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
1#
2# Makefile for the 73180 SolutionEngine specific parts of the kernel
3#
4
5obj-y := setup.o io.o irq.o
diff --git a/arch/sh/boards/se/73180/io.c b/arch/sh/boards/se/73180/io.c
deleted file mode 100644
index 72715575458b..000000000000
--- a/arch/sh/boards/se/73180/io.c
+++ /dev/null
@@ -1,268 +0,0 @@
1/*
2 * arch/sh/boards/se/73180/io.c
3 *
4 * Copyright (C) 2003 YOSHII Takashi <yoshii-takashi@hitachi-ul.co.jp>
5 * Based on arch/sh/boards/se/7300/io.c
6 *
7 * I/O routine for SH-Mobile3 73180 SolutionEngine.
8 *
9 */
10
11#include <linux/kernel.h>
12#include <asm/mach/se73180.h>
13#include <asm/io.h>
14
15#define badio(fn, a) panic("bad i/o operation %s for %08lx.", #fn, a)
16
17struct iop {
18 unsigned long start, end;
19 unsigned long base;
20 struct iop *(*check) (struct iop * p, unsigned long port);
21 unsigned char (*inb) (struct iop * p, unsigned long port);
22 unsigned short (*inw) (struct iop * p, unsigned long port);
23 void (*outb) (struct iop * p, unsigned char value, unsigned long port);
24 void (*outw) (struct iop * p, unsigned short value, unsigned long port);
25};
26
27struct iop *
28simple_check(struct iop *p, unsigned long port)
29{
30 if ((p->start <= port) && (port <= p->end))
31 return p;
32 else
33 badio(check, port);
34}
35
36struct iop *
37ide_check(struct iop *p, unsigned long port)
38{
39 if (((0x1f0 <= port) && (port <= 0x1f7)) || (port == 0x3f7))
40 return p;
41 return NULL;
42}
43
44unsigned char
45simple_inb(struct iop *p, unsigned long port)
46{
47 return *(unsigned char *) (p->base + port);
48}
49
50unsigned short
51simple_inw(struct iop *p, unsigned long port)
52{
53 return *(unsigned short *) (p->base + port);
54}
55
56void
57simple_outb(struct iop *p, unsigned char value, unsigned long port)
58{
59 *(unsigned char *) (p->base + port) = value;
60}
61
62void
63simple_outw(struct iop *p, unsigned short value, unsigned long port)
64{
65 *(unsigned short *) (p->base + port) = value;
66}
67
68unsigned char
69pcc_inb(struct iop *p, unsigned long port)
70{
71 unsigned long addr = p->base + port + 0x40000;
72 unsigned long v;
73
74 if (port & 1)
75 addr += 0x00400000;
76 v = *(volatile unsigned char *) addr;
77 return v;
78}
79
80void
81pcc_outb(struct iop *p, unsigned char value, unsigned long port)
82{
83 unsigned long addr = p->base + port + 0x40000;
84
85 if (port & 1)
86 addr += 0x00400000;
87 *(volatile unsigned char *) addr = value;
88}
89
90unsigned char
91bad_inb(struct iop *p, unsigned long port)
92{
93 badio(inb, port);
94}
95
96void
97bad_outb(struct iop *p, unsigned char value, unsigned long port)
98{
99 badio(inw, port);
100}
101
102#ifdef CONFIG_SMC91X
103/* MSTLANEX01 LAN at 0xb400:0000 */
104static struct iop laniop = {
105 .start = 0x300,
106 .end = 0x30f,
107 .base = 0xb4000000,
108 .check = simple_check,
109 .inb = simple_inb,
110 .inw = simple_inw,
111 .outb = simple_outb,
112 .outw = simple_outw,
113};
114#endif
115
116/* NE2000 pc card NIC */
117static struct iop neiop = {
118 .start = 0x280,
119 .end = 0x29f,
120 .base = 0xb0600000 + 0x80, /* soft 0x280 -> hard 0x300 */
121 .check = simple_check,
122 .inb = pcc_inb,
123 .inw = simple_inw,
124 .outb = pcc_outb,
125 .outw = simple_outw,
126};
127
128#ifdef CONFIG_IDE
129/* CF in CF slot */
130static struct iop cfiop = {
131 .base = 0xb0600000,
132 .check = ide_check,
133 .inb = pcc_inb,
134 .inw = simple_inw,
135 .outb = pcc_outb,
136 .outw = simple_outw,
137};
138#endif
139
140static __inline__ struct iop *
141port2iop(unsigned long port)
142{
143 if (0) ;
144#if defined(CONFIG_SMC91X)
145 else if (laniop.check(&laniop, port))
146 return &laniop;
147#endif
148#if defined(CONFIG_NE2000)
149 else if (neiop.check(&neiop, port))
150 return &neiop;
151#endif
152#if defined(CONFIG_IDE)
153 else if (cfiop.check(&cfiop, port))
154 return &cfiop;
155#endif
156 else
157 return &neiop; /* fallback */
158}
159
160static inline void
161delay(void)
162{
163 ctrl_inw(0xac000000);
164 ctrl_inw(0xac000000);
165}
166
167unsigned char
168sh73180se_inb(unsigned long port)
169{
170 struct iop *p = port2iop(port);
171 return (p->inb) (p, port);
172}
173
174unsigned char
175sh73180se_inb_p(unsigned long port)
176{
177 unsigned char v = sh73180se_inb(port);
178 delay();
179 return v;
180}
181
182unsigned short
183sh73180se_inw(unsigned long port)
184{
185 struct iop *p = port2iop(port);
186 return (p->inw) (p, port);
187}
188
189unsigned int
190sh73180se_inl(unsigned long port)
191{
192 badio(inl, port);
193}
194
195void
196sh73180se_outb(unsigned char value, unsigned long port)
197{
198 struct iop *p = port2iop(port);
199 (p->outb) (p, value, port);
200}
201
202void
203sh73180se_outb_p(unsigned char value, unsigned long port)
204{
205 sh73180se_outb(value, port);
206 delay();
207}
208
209void
210sh73180se_outw(unsigned short value, unsigned long port)
211{
212 struct iop *p = port2iop(port);
213 (p->outw) (p, value, port);
214}
215
216void
217sh73180se_outl(unsigned int value, unsigned long port)
218{
219 badio(outl, port);
220}
221
222void
223sh73180se_insb(unsigned long port, void *addr, unsigned long count)
224{
225 unsigned char *a = addr;
226 struct iop *p = port2iop(port);
227 while (count--)
228 *a++ = (p->inb) (p, port);
229}
230
231void
232sh73180se_insw(unsigned long port, void *addr, unsigned long count)
233{
234 unsigned short *a = addr;
235 struct iop *p = port2iop(port);
236 while (count--)
237 *a++ = (p->inw) (p, port);
238}
239
240void
241sh73180se_insl(unsigned long port, void *addr, unsigned long count)
242{
243 badio(insl, port);
244}
245
246void
247sh73180se_outsb(unsigned long port, const void *addr, unsigned long count)
248{
249 unsigned char *a = (unsigned char *) addr;
250 struct iop *p = port2iop(port);
251 while (count--)
252 (p->outb) (p, *a++, port);
253}
254
255void
256sh73180se_outsw(unsigned long port, const void *addr, unsigned long count)
257{
258 unsigned short *a = (unsigned short *) addr;
259 struct iop *p = port2iop(port);
260 while (count--)
261 (p->outw) (p, *a++, port);
262}
263
264void
265sh73180se_outsl(unsigned long port, const void *addr, unsigned long count)
266{
267 badio(outsw, port);
268}
diff --git a/arch/sh/boards/se/73180/irq.c b/arch/sh/boards/se/73180/irq.c
deleted file mode 100644
index e7200c56bb45..000000000000
--- a/arch/sh/boards/se/73180/irq.c
+++ /dev/null
@@ -1,136 +0,0 @@
1/*
2 * arch/sh/boards/se/73180/irq.c
3 *
4 * Copyright (C) 2003 Takashi Kusuda <kusuda-takashi@hitachi-ul.co.jp>
5 * Based on arch/sh/boards/se/7300/irq.c
6 *
7 * Modified for SH-Mobile SolutionEngine 73180 Support
8 * by YOSHII Takashi <yoshii-takashi@hitachi-ul.co.jp>
9 *
10 */
11
12#include <linux/init.h>
13#include <linux/irq.h>
14#include <asm/irq.h>
15#include <asm/io.h>
16#include <asm/mach/se73180.h>
17
18static int
19irq2intreq(int irq)
20{
21 if (irq == 10)
22 return 5;
23 return 7 - (irq - 32);
24}
25
26static void
27disable_intreq_irq(unsigned int irq)
28{
29 ctrl_outb(1 << (7 - irq2intreq(irq)), INTMSK0);
30}
31
32static void
33enable_intreq_irq(unsigned int irq)
34{
35 ctrl_outb(1 << (7 - irq2intreq(irq)), INTMSKCLR0);
36}
37
38static void
39mask_and_ack_intreq_irq(unsigned int irq)
40{
41 disable_intreq_irq(irq);
42}
43
44static unsigned int
45startup_intreq_irq(unsigned int irq)
46{
47 enable_intreq_irq(irq);
48 return 0;
49}
50
51static void
52shutdown_intreq_irq(unsigned int irq)
53{
54 disable_intreq_irq(irq);
55}
56
57static void
58end_intreq_irq(unsigned int irq)
59{
60 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
61 enable_intreq_irq(irq);
62}
63
64static struct hw_interrupt_type intreq_irq_type = {
65 .typename = "intreq",
66 .startup = startup_intreq_irq,
67 .shutdown = shutdown_intreq_irq,
68 .enable = enable_intreq_irq,
69 .disable = disable_intreq_irq,
70 .ack = mask_and_ack_intreq_irq,
71 .end = end_intreq_irq
72};
73
74void
75make_intreq_irq(unsigned int irq)
76{
77 disable_irq_nosync(irq);
78 irq_desc[irq].chip = &intreq_irq_type;
79 disable_intreq_irq(irq);
80}
81
82int
83shmse_irq_demux(int irq)
84{
85 if (irq == IRQ5_IRQ)
86 return 10;
87 return irq;
88}
89
90static struct ipr_data se73180_siof0_ipr_map[] = {
91 { SIOF0_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
92};
93static struct ipr_data se73180_vpu_ipr_map[] = {
94 { VPU_IRQ, VPU_IPR_ADDR, VPU_IPR_POS, 8 },
95};
96static struct ipr_data se73180_other_ipr_map[] = {
97 { DMTE2_IRQ, DMA1_IPR_ADDR, DMA1_IPR_POS, DMA1_PRIORITY },
98 { DMTE3_IRQ, DMA1_IPR_ADDR, DMA1_IPR_POS, DMA1_PRIORITY },
99 { DMTE4_IRQ, DMA2_IPR_ADDR, DMA2_IPR_POS, DMA2_PRIORITY },
100 { IIC0_ALI_IRQ, IIC0_IPR_ADDR, IIC0_IPR_POS, IIC0_PRIORITY },
101 { IIC0_TACKI_IRQ, IIC0_IPR_ADDR, IIC0_IPR_POS, IIC0_PRIORITY },
102 { IIC0_WAITI_IRQ, IIC0_IPR_ADDR, IIC0_IPR_POS, IIC0_PRIORITY },
103 { IIC0_DTEI_IRQ, IIC0_IPR_ADDR, IIC0_IPR_POS, IIC0_PRIORITY },
104 { SIOF0_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
105 { SIU_IRQ, SIU_IPR_ADDR, SIU_IPR_POS, SIU_PRIORITY },
106
107 /* VIO interrupt */
108 { CEU_IRQ, VIO_IPR_ADDR, VIO_IPR_POS, VIO_PRIORITY },
109 { BEU_IRQ, VIO_IPR_ADDR, VIO_IPR_POS, VIO_PRIORITY },
110 { VEU_IRQ, VIO_IPR_ADDR, VIO_IPR_POS, VIO_PRIORITY },
111
112 { LCDC_IRQ, LCDC_IPR_ADDR, LCDC_IPR_POS, LCDC_PRIORITY },
113};
114
115/*
116 * Initialize IRQ setting
117 */
118void __init
119init_73180se_IRQ(void)
120{
121 make_ipr_irq(se73180_siof0_ipr_map, ARRAY_SIZE(se73180_siof0_ipr_map));
122
123 ctrl_outw(0x2000, 0xb03fffec); /* mrshpc irq enable */
124 ctrl_outw(0x2000, 0xb07fffec); /* mrshpc irq enable */
125 ctrl_outl(3 << ((7 - 5) * 4), INTC_INTPRI0); /* irq5 pri=3 */
126 ctrl_outw(2 << ((7 - 5) * 2), INTC_ICR1); /* low-level irq */
127 make_intreq_irq(10);
128
129 make_ipr_irq(se73180_vpu_ipr_map, ARRAY_SIZE(se73180_vpu_ipr_map));
130
131 ctrl_outb(0x0f, INTC_IMCR5); /* enable SCIF IRQ */
132
133 make_ipr_irq(se73180_other_ipr_map, ARRAY_SIZE(se73180_other_ipr_map));
134
135 ctrl_outw(0x2000, PA_MRSHPC + 0x0c); /* mrshpc irq enable */
136}
diff --git a/arch/sh/boards/se/73180/setup.c b/arch/sh/boards/se/73180/setup.c
deleted file mode 100644
index 1deee8556642..000000000000
--- a/arch/sh/boards/se/73180/setup.c
+++ /dev/null
@@ -1,75 +0,0 @@
1/*
2 * arch/sh/boards/se/73180/setup.c
3 *
4 * Copyright (C) 2003 Takashi Kusuda <kusuda-takashi@hitachi-ul.co.jp>
5 * Based on arch/sh/setup_shmse.c
6 *
7 * Modified for 73180 SolutionEngine
8 * by YOSHII Takashi <yoshii-takashi@hitachi-ul.co.jp>
9 *
10 */
11
12#include <linux/init.h>
13#include <linux/platform_device.h>
14#include <asm/machvec.h>
15#include <asm/se73180.h>
16#include <asm/irq.h>
17
18void init_73180se_IRQ(void);
19
20static struct resource heartbeat_resources[] = {
21 [0] = {
22 .start = PA_LED,
23 .end = PA_LED + 8 - 1,
24 .flags = IORESOURCE_MEM,
25 },
26};
27
28static struct platform_device heartbeat_device = {
29 .name = "heartbeat",
30 .id = -1,
31 .num_resources = ARRAY_SIZE(heartbeat_resources),
32 .resource = heartbeat_resources,
33};
34
35static struct platform_device *se73180_devices[] __initdata = {
36 &heartbeat_device,
37};
38
39static int __init se73180_devices_setup(void)
40{
41 return platform_add_devices(se73180_devices,
42 ARRAY_SIZE(se73180_devices));
43}
44__initcall(se73180_devices_setup);
45
46/*
47 * The Machine Vector
48 */
49static struct sh_machine_vector mv_73180se __initmv = {
50 .mv_name = "SolutionEngine 73180",
51 .mv_nr_irqs = 108,
52 .mv_inb = sh73180se_inb,
53 .mv_inw = sh73180se_inw,
54 .mv_inl = sh73180se_inl,
55 .mv_outb = sh73180se_outb,
56 .mv_outw = sh73180se_outw,
57 .mv_outl = sh73180se_outl,
58
59 .mv_inb_p = sh73180se_inb_p,
60 .mv_inw_p = sh73180se_inw,
61 .mv_inl_p = sh73180se_inl,
62 .mv_outb_p = sh73180se_outb_p,
63 .mv_outw_p = sh73180se_outw,
64 .mv_outl_p = sh73180se_outl,
65
66 .mv_insb = sh73180se_insb,
67 .mv_insw = sh73180se_insw,
68 .mv_insl = sh73180se_insl,
69 .mv_outsb = sh73180se_outsb,
70 .mv_outsw = sh73180se_outsw,
71 .mv_outsl = sh73180se_outsl,
72
73 .mv_init_irq = init_73180se_IRQ,
74 .mv_irq_demux = shmse_irq_demux,
75};
diff --git a/arch/sh/boot/Makefile b/arch/sh/boot/Makefile
index 11dc272c618e..4c5ffdcd55b6 100644
--- a/arch/sh/boot/Makefile
+++ b/arch/sh/boot/Makefile
@@ -32,9 +32,10 @@ $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
32$(obj)/compressed/vmlinux: FORCE 32$(obj)/compressed/vmlinux: FORCE
33 $(Q)$(MAKE) $(build)=$(obj)/compressed $@ 33 $(Q)$(MAKE) $(build)=$(obj)/compressed $@
34 34
35KERNEL_LOAD := $(shell printf "0x%8x" $$[$(CONFIG_PAGE_OFFSET) + \ 35KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%8x" \
36 $(CONFIG_MEMORY_START) + \ 36 $$[$(CONFIG_PAGE_OFFSET) + \
37 $(CONFIG_ZERO_PAGE_OFFSET)+0x1000]) 37 $(CONFIG_MEMORY_START) + \
38 $(CONFIG_ZERO_PAGE_OFFSET)+0x1000]')
38 39
39quiet_cmd_uimage = UIMAGE $@ 40quiet_cmd_uimage = UIMAGE $@
40 cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sh -O linux -T kernel \ 41 cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sh -O linux -T kernel \
diff --git a/arch/sh/boot/compressed/Makefile b/arch/sh/boot/compressed/Makefile
index d9512416f885..013504ae1122 100644
--- a/arch/sh/boot/compressed/Makefile
+++ b/arch/sh/boot/compressed/Makefile
@@ -16,9 +16,10 @@ endif
16# 16#
17# IMAGE_OFFSET is the load offset of the compression loader 17# IMAGE_OFFSET is the load offset of the compression loader
18# 18#
19IMAGE_OFFSET := $(shell printf "0x%08x" $$[$(CONFIG_PAGE_OFFSET) + \ 19IMAGE_OFFSET := $(shell /bin/bash -c 'printf "0x%08x" \
20 $(CONFIG_MEMORY_START) + \ 20 $$[$(CONFIG_PAGE_OFFSET) + \
21 $(CONFIG_BOOT_LINK_OFFSET)]) 21 $(CONFIG_MEMORY_START) + \
22 $(CONFIG_BOOT_LINK_OFFSET)]')
22 23
23LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) 24LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
24 25
diff --git a/arch/sh/configs/se7300_defconfig b/arch/sh/configs/se7300_defconfig
deleted file mode 100644
index 8a217908b81f..000000000000
--- a/arch/sh/configs/se7300_defconfig
+++ /dev/null
@@ -1,696 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18
4# Tue Oct 3 11:43:22 2006
5#
6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14
15#
16# Code maturity level options
17#
18CONFIG_EXPERIMENTAL=y
19CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32
21
22#
23# General setup
24#
25CONFIG_LOCALVERSION=""
26CONFIG_LOCALVERSION_AUTO=y
27# CONFIG_SWAP is not set
28# CONFIG_SYSVIPC is not set
29# CONFIG_BSD_PROCESS_ACCT is not set
30# CONFIG_UTS_NS is not set
31# CONFIG_IKCONFIG is not set
32# CONFIG_RELAY is not set
33CONFIG_INITRAMFS_SOURCE=""
34# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
35CONFIG_SYSCTL=y
36CONFIG_EMBEDDED=y
37CONFIG_UID16=y
38# CONFIG_SYSCTL_SYSCALL is not set
39# CONFIG_KALLSYMS is not set
40# CONFIG_HOTPLUG is not set
41CONFIG_PRINTK=y
42CONFIG_BUG=y
43CONFIG_ELF_CORE=y
44CONFIG_BASE_FULL=y
45# CONFIG_FUTEX is not set
46# CONFIG_EPOLL is not set
47CONFIG_SHMEM=y
48CONFIG_SLAB=y
49CONFIG_VM_EVENT_COUNTERS=y
50# CONFIG_TINY_SHMEM is not set
51CONFIG_BASE_SMALL=0
52# CONFIG_SLOB is not set
53
54#
55# Loadable module support
56#
57# CONFIG_MODULES is not set
58
59#
60# Block layer
61#
62CONFIG_BLOCK=y
63# CONFIG_LBD is not set
64# CONFIG_BLK_DEV_IO_TRACE is not set
65# CONFIG_LSF is not set
66
67#
68# IO Schedulers
69#
70CONFIG_IOSCHED_NOOP=y
71# CONFIG_IOSCHED_AS is not set
72# CONFIG_IOSCHED_DEADLINE is not set
73# CONFIG_IOSCHED_CFQ is not set
74# CONFIG_DEFAULT_AS is not set
75# CONFIG_DEFAULT_DEADLINE is not set
76# CONFIG_DEFAULT_CFQ is not set
77CONFIG_DEFAULT_NOOP=y
78CONFIG_DEFAULT_IOSCHED="noop"
79
80#
81# System type
82#
83CONFIG_SOLUTION_ENGINE=y
84# CONFIG_SH_SOLUTION_ENGINE is not set
85# CONFIG_SH_7751_SOLUTION_ENGINE is not set
86CONFIG_SH_7300_SOLUTION_ENGINE=y
87# CONFIG_SH_7343_SOLUTION_ENGINE is not set
88# CONFIG_SH_73180_SOLUTION_ENGINE is not set
89# CONFIG_SH_7751_SYSTEMH is not set
90# CONFIG_SH_HP6XX is not set
91# CONFIG_SH_EC3104 is not set
92# CONFIG_SH_SATURN is not set
93# CONFIG_SH_DREAMCAST is not set
94# CONFIG_SH_BIGSUR is not set
95# CONFIG_SH_MPC1211 is not set
96# CONFIG_SH_SH03 is not set
97# CONFIG_SH_SECUREEDGE5410 is not set
98# CONFIG_SH_HS7751RVOIP is not set
99# CONFIG_SH_7710VOIPGW is not set
100# CONFIG_SH_RTS7751R2D is not set
101# CONFIG_SH_R7780RP is not set
102# CONFIG_SH_EDOSK7705 is not set
103# CONFIG_SH_SH4202_MICRODEV is not set
104# CONFIG_SH_LANDISK is not set
105# CONFIG_SH_TITAN is not set
106# CONFIG_SH_SHMIN is not set
107# CONFIG_SH_UNKNOWN is not set
108
109#
110# Processor selection
111#
112CONFIG_CPU_SH3=y
113
114#
115# SH-2 Processor Support
116#
117# CONFIG_CPU_SUBTYPE_SH7604 is not set
118
119#
120# SH-3 Processor Support
121#
122CONFIG_CPU_SUBTYPE_SH7300=y
123# CONFIG_CPU_SUBTYPE_SH7705 is not set
124# CONFIG_CPU_SUBTYPE_SH7706 is not set
125# CONFIG_CPU_SUBTYPE_SH7707 is not set
126# CONFIG_CPU_SUBTYPE_SH7708 is not set
127# CONFIG_CPU_SUBTYPE_SH7709 is not set
128# CONFIG_CPU_SUBTYPE_SH7710 is not set
129
130#
131# SH-4 Processor Support
132#
133# CONFIG_CPU_SUBTYPE_SH7750 is not set
134# CONFIG_CPU_SUBTYPE_SH7091 is not set
135# CONFIG_CPU_SUBTYPE_SH7750R is not set
136# CONFIG_CPU_SUBTYPE_SH7750S is not set
137# CONFIG_CPU_SUBTYPE_SH7751 is not set
138# CONFIG_CPU_SUBTYPE_SH7751R is not set
139# CONFIG_CPU_SUBTYPE_SH7760 is not set
140# CONFIG_CPU_SUBTYPE_SH4_202 is not set
141
142#
143# ST40 Processor Support
144#
145# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
146# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
147
148#
149# SH-4A Processor Support
150#
151# CONFIG_CPU_SUBTYPE_SH7770 is not set
152# CONFIG_CPU_SUBTYPE_SH7780 is not set
153
154#
155# SH4AL-DSP Processor Support
156#
157# CONFIG_CPU_SUBTYPE_SH73180 is not set
158# CONFIG_CPU_SUBTYPE_SH7343 is not set
159
160#
161# Memory management options
162#
163CONFIG_MMU=y
164CONFIG_PAGE_OFFSET=0x80000000
165CONFIG_MEMORY_START=0x0c000000
166CONFIG_MEMORY_SIZE=0x04000000
167CONFIG_VSYSCALL=y
168CONFIG_SELECT_MEMORY_MODEL=y
169CONFIG_FLATMEM_MANUAL=y
170# CONFIG_DISCONTIGMEM_MANUAL is not set
171# CONFIG_SPARSEMEM_MANUAL is not set
172CONFIG_FLATMEM=y
173CONFIG_FLAT_NODE_MEM_MAP=y
174# CONFIG_SPARSEMEM_STATIC is not set
175CONFIG_SPLIT_PTLOCK_CPUS=4
176# CONFIG_RESOURCES_64BIT is not set
177
178#
179# Cache configuration
180#
181# CONFIG_SH_DIRECT_MAPPED is not set
182# CONFIG_SH_WRITETHROUGH is not set
183# CONFIG_SH_OCRAM is not set
184
185#
186# Processor features
187#
188CONFIG_CPU_LITTLE_ENDIAN=y
189# CONFIG_SH_FPU_EMU is not set
190CONFIG_SH_DSP=y
191# CONFIG_SH_ADC is not set
192CONFIG_CPU_HAS_INTEVT=y
193CONFIG_CPU_HAS_SR_RB=y
194
195#
196# Timer support
197#
198CONFIG_SH_TMU=y
199CONFIG_SH_PCLK_FREQ=33333333
200
201#
202# CPU Frequency scaling
203#
204# CONFIG_CPU_FREQ is not set
205
206#
207# DMA support
208#
209# CONFIG_SH_DMA is not set
210
211#
212# Companion Chips
213#
214# CONFIG_HD6446X_SERIES is not set
215CONFIG_HEARTBEAT=y
216
217#
218# Kernel features
219#
220# CONFIG_HZ_100 is not set
221CONFIG_HZ_250=y
222# CONFIG_HZ_1000 is not set
223CONFIG_HZ=250
224# CONFIG_KEXEC is not set
225# CONFIG_SMP is not set
226CONFIG_PREEMPT_NONE=y
227# CONFIG_PREEMPT_VOLUNTARY is not set
228# CONFIG_PREEMPT is not set
229
230#
231# Boot options
232#
233CONFIG_ZERO_PAGE_OFFSET=0x00001000
234CONFIG_BOOT_LINK_OFFSET=0x00210000
235# CONFIG_UBC_WAKEUP is not set
236CONFIG_CMDLINE_BOOL=y
237CONFIG_CMDLINE="console=ttySC0,38400 root=/dev/ram0"
238
239#
240# Bus options
241#
242# CONFIG_PCI is not set
243
244#
245# PCCARD (PCMCIA/CardBus) support
246#
247
248#
249# PCI Hotplug Support
250#
251
252#
253# Executable file formats
254#
255CONFIG_BINFMT_ELF=y
256# CONFIG_BINFMT_FLAT is not set
257# CONFIG_BINFMT_MISC is not set
258
259#
260# Power management options (EXPERIMENTAL)
261#
262# CONFIG_PM is not set
263
264#
265# Networking
266#
267# CONFIG_NET is not set
268
269#
270# Device Drivers
271#
272
273#
274# Generic Driver Options
275#
276CONFIG_STANDALONE=y
277CONFIG_PREVENT_FIRMWARE_BUILD=y
278# CONFIG_SYS_HYPERVISOR is not set
279
280#
281# Connector - unified userspace <-> kernelspace linker
282#
283
284#
285# Memory Technology Devices (MTD)
286#
287# CONFIG_MTD is not set
288
289#
290# Parallel port support
291#
292# CONFIG_PARPORT is not set
293
294#
295# Plug and Play support
296#
297
298#
299# Block devices
300#
301# CONFIG_BLK_DEV_COW_COMMON is not set
302# CONFIG_BLK_DEV_LOOP is not set
303CONFIG_BLK_DEV_RAM=y
304CONFIG_BLK_DEV_RAM_COUNT=16
305CONFIG_BLK_DEV_RAM_SIZE=4096
306CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
307CONFIG_BLK_DEV_INITRD=y
308# CONFIG_CDROM_PKTCDVD is not set
309
310#
311# ATA/ATAPI/MFM/RLL support
312#
313# CONFIG_IDE is not set
314
315#
316# SCSI device support
317#
318# CONFIG_RAID_ATTRS is not set
319# CONFIG_SCSI is not set
320# CONFIG_SCSI_NETLINK is not set
321
322#
323# Serial ATA (prod) and Parallel ATA (experimental) drivers
324#
325# CONFIG_ATA is not set
326
327#
328# Multi-device support (RAID and LVM)
329#
330# CONFIG_MD is not set
331
332#
333# Fusion MPT device support
334#
335# CONFIG_FUSION is not set
336
337#
338# IEEE 1394 (FireWire) support
339#
340
341#
342# I2O device support
343#
344
345#
346# ISDN subsystem
347#
348
349#
350# Telephony Support
351#
352# CONFIG_PHONE is not set
353
354#
355# Input device support
356#
357CONFIG_INPUT=y
358# CONFIG_INPUT_FF_MEMLESS is not set
359
360#
361# Userland interfaces
362#
363CONFIG_INPUT_MOUSEDEV=y
364CONFIG_INPUT_MOUSEDEV_PSAUX=y
365CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
366CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
367# CONFIG_INPUT_JOYDEV is not set
368# CONFIG_INPUT_TSDEV is not set
369# CONFIG_INPUT_EVDEV is not set
370# CONFIG_INPUT_EVBUG is not set
371
372#
373# Input Device Drivers
374#
375# CONFIG_INPUT_KEYBOARD is not set
376# CONFIG_INPUT_MOUSE is not set
377# CONFIG_INPUT_JOYSTICK is not set
378# CONFIG_INPUT_TOUCHSCREEN is not set
379# CONFIG_INPUT_MISC is not set
380
381#
382# Hardware I/O ports
383#
384CONFIG_SERIO=y
385# CONFIG_SERIO_I8042 is not set
386# CONFIG_SERIO_SERPORT is not set
387# CONFIG_SERIO_LIBPS2 is not set
388# CONFIG_SERIO_RAW is not set
389# CONFIG_GAMEPORT is not set
390
391#
392# Character devices
393#
394# CONFIG_VT is not set
395# CONFIG_SERIAL_NONSTANDARD is not set
396
397#
398# Serial drivers
399#
400# CONFIG_SERIAL_8250 is not set
401
402#
403# Non-8250 serial port support
404#
405CONFIG_SERIAL_SH_SCI=y
406CONFIG_SERIAL_SH_SCI_NR_UARTS=2
407CONFIG_SERIAL_SH_SCI_CONSOLE=y
408CONFIG_SERIAL_CORE=y
409CONFIG_SERIAL_CORE_CONSOLE=y
410# CONFIG_UNIX98_PTYS is not set
411# CONFIG_LEGACY_PTYS is not set
412
413#
414# IPMI
415#
416CONFIG_IPMI_HANDLER=y
417# CONFIG_IPMI_PANIC_EVENT is not set
418CONFIG_IPMI_DEVICE_INTERFACE=y
419# CONFIG_IPMI_SI is not set
420CONFIG_IPMI_WATCHDOG=y
421# CONFIG_IPMI_POWEROFF is not set
422
423#
424# Watchdog Cards
425#
426CONFIG_WATCHDOG=y
427# CONFIG_WATCHDOG_NOWAYOUT is not set
428
429#
430# Watchdog Device Drivers
431#
432CONFIG_SOFT_WATCHDOG=y
433# CONFIG_SH_WDT is not set
434CONFIG_HW_RANDOM=y
435# CONFIG_GEN_RTC is not set
436# CONFIG_DTLK is not set
437# CONFIG_R3964 is not set
438
439#
440# Ftape, the floppy tape device driver
441#
442# CONFIG_RAW_DRIVER is not set
443
444#
445# TPM devices
446#
447# CONFIG_TCG_TPM is not set
448# CONFIG_TELCLOCK is not set
449
450#
451# I2C support
452#
453# CONFIG_I2C is not set
454
455#
456# SPI support
457#
458# CONFIG_SPI is not set
459# CONFIG_SPI_MASTER is not set
460
461#
462# Dallas's 1-wire bus
463#
464
465#
466# Hardware Monitoring support
467#
468CONFIG_HWMON=y
469# CONFIG_HWMON_VID is not set
470# CONFIG_SENSORS_ABITUGURU is not set
471# CONFIG_SENSORS_F71805F is not set
472# CONFIG_SENSORS_VT1211 is not set
473# CONFIG_HWMON_DEBUG_CHIP is not set
474
475#
476# Misc devices
477#
478
479#
480# Multimedia devices
481#
482# CONFIG_VIDEO_DEV is not set
483CONFIG_VIDEO_V4L2=y
484
485#
486# Digital Video Broadcasting Devices
487#
488
489#
490# Graphics support
491#
492CONFIG_FIRMWARE_EDID=y
493# CONFIG_FB is not set
494# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
495
496#
497# Sound
498#
499# CONFIG_SOUND is not set
500
501#
502# USB support
503#
504# CONFIG_USB_ARCH_HAS_HCD is not set
505# CONFIG_USB_ARCH_HAS_OHCI is not set
506# CONFIG_USB_ARCH_HAS_EHCI is not set
507
508#
509# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
510#
511
512#
513# USB Gadget Support
514#
515# CONFIG_USB_GADGET is not set
516
517#
518# MMC/SD Card support
519#
520# CONFIG_MMC is not set
521
522#
523# LED devices
524#
525# CONFIG_NEW_LEDS is not set
526
527#
528# LED drivers
529#
530
531#
532# LED Triggers
533#
534
535#
536# InfiniBand support
537#
538
539#
540# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
541#
542
543#
544# Real Time Clock
545#
546# CONFIG_RTC_CLASS is not set
547
548#
549# DMA Engine support
550#
551# CONFIG_DMA_ENGINE is not set
552
553#
554# DMA Clients
555#
556
557#
558# DMA Devices
559#
560
561#
562# File systems
563#
564CONFIG_EXT2_FS=y
565# CONFIG_EXT2_FS_XATTR is not set
566# CONFIG_EXT2_FS_XIP is not set
567# CONFIG_EXT3_FS is not set
568# CONFIG_REISERFS_FS is not set
569# CONFIG_JFS_FS is not set
570# CONFIG_FS_POSIX_ACL is not set
571# CONFIG_XFS_FS is not set
572# CONFIG_MINIX_FS is not set
573# CONFIG_ROMFS_FS is not set
574CONFIG_INOTIFY=y
575CONFIG_INOTIFY_USER=y
576# CONFIG_QUOTA is not set
577CONFIG_DNOTIFY=y
578# CONFIG_AUTOFS_FS is not set
579# CONFIG_AUTOFS4_FS is not set
580# CONFIG_FUSE_FS is not set
581
582#
583# CD-ROM/DVD Filesystems
584#
585# CONFIG_ISO9660_FS is not set
586# CONFIG_UDF_FS is not set
587
588#
589# DOS/FAT/NT Filesystems
590#
591# CONFIG_MSDOS_FS is not set
592# CONFIG_VFAT_FS is not set
593# CONFIG_NTFS_FS is not set
594
595#
596# Pseudo filesystems
597#
598CONFIG_PROC_FS=y
599CONFIG_PROC_KCORE=y
600CONFIG_PROC_SYSCTL=y
601CONFIG_SYSFS=y
602# CONFIG_TMPFS is not set
603# CONFIG_HUGETLBFS is not set
604# CONFIG_HUGETLB_PAGE is not set
605CONFIG_RAMFS=y
606# CONFIG_CONFIGFS_FS is not set
607
608#
609# Miscellaneous filesystems
610#
611# CONFIG_ADFS_FS is not set
612# CONFIG_AFFS_FS is not set
613# CONFIG_HFS_FS is not set
614# CONFIG_HFSPLUS_FS is not set
615# CONFIG_BEFS_FS is not set
616# CONFIG_BFS_FS is not set
617# CONFIG_EFS_FS is not set
618# CONFIG_CRAMFS is not set
619# CONFIG_VXFS_FS is not set
620# CONFIG_HPFS_FS is not set
621# CONFIG_QNX4FS_FS is not set
622# CONFIG_SYSV_FS is not set
623# CONFIG_UFS_FS is not set
624
625#
626# Partition Types
627#
628# CONFIG_PARTITION_ADVANCED is not set
629CONFIG_MSDOS_PARTITION=y
630
631#
632# Native Language Support
633#
634# CONFIG_NLS is not set
635
636#
637# Profiling support
638#
639# CONFIG_PROFILING is not set
640
641#
642# Kernel hacking
643#
644# CONFIG_PRINTK_TIME is not set
645CONFIG_ENABLE_MUST_CHECK=y
646# CONFIG_MAGIC_SYSRQ is not set
647# CONFIG_UNUSED_SYMBOLS is not set
648# CONFIG_DEBUG_KERNEL is not set
649CONFIG_LOG_BUF_SHIFT=14
650# CONFIG_DEBUG_BUGVERBOSE is not set
651# CONFIG_DEBUG_FS is not set
652CONFIG_FRAME_POINTER=y
653# CONFIG_UNWIND_INFO is not set
654CONFIG_SH_STANDARD_BIOS=y
655CONFIG_EARLY_PRINTK=y
656CONFIG_KGDB=y
657
658#
659# KGDB configuration options
660#
661# CONFIG_MORE_COMPILE_OPTIONS is not set
662# CONFIG_KGDB_NMI is not set
663# CONFIG_KGDB_THREAD is not set
664# CONFIG_SH_KGDB_CONSOLE is not set
665# CONFIG_KGDB_SYSRQ is not set
666# CONFIG_KGDB_KERNEL_ASSERTS is not set
667
668#
669# Serial port setup
670#
671CONFIG_KGDB_DEFPORT=1
672CONFIG_KGDB_DEFBAUD=115200
673CONFIG_KGDB_DEFPARITY_N=y
674# CONFIG_KGDB_DEFPARITY_E is not set
675# CONFIG_KGDB_DEFPARITY_O is not set
676CONFIG_KGDB_DEFBITS_8=y
677# CONFIG_KGDB_DEFBITS_7 is not set
678
679#
680# Security options
681#
682# CONFIG_KEYS is not set
683# CONFIG_SECURITY is not set
684
685#
686# Cryptographic options
687#
688# CONFIG_CRYPTO is not set
689
690#
691# Library routines
692#
693# CONFIG_CRC_CCITT is not set
694# CONFIG_CRC16 is not set
695CONFIG_CRC32=y
696# CONFIG_LIBCRC32C is not set
diff --git a/arch/sh/configs/se73180_defconfig b/arch/sh/configs/se73180_defconfig
deleted file mode 100644
index 1a766153cbb0..000000000000
--- a/arch/sh/configs/se73180_defconfig
+++ /dev/null
@@ -1,648 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18
4# Tue Oct 3 11:44:45 2006
5#
6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14
15#
16# Code maturity level options
17#
18CONFIG_EXPERIMENTAL=y
19CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32
21
22#
23# General setup
24#
25CONFIG_LOCALVERSION=""
26CONFIG_LOCALVERSION_AUTO=y
27CONFIG_SWAP=y
28# CONFIG_SYSVIPC is not set
29# CONFIG_BSD_PROCESS_ACCT is not set
30# CONFIG_UTS_NS is not set
31# CONFIG_IKCONFIG is not set
32# CONFIG_RELAY is not set
33CONFIG_INITRAMFS_SOURCE=""
34# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
35CONFIG_SYSCTL=y
36CONFIG_EMBEDDED=y
37CONFIG_UID16=y
38# CONFIG_SYSCTL_SYSCALL is not set
39# CONFIG_KALLSYMS is not set
40# CONFIG_HOTPLUG is not set
41CONFIG_PRINTK=y
42CONFIG_BUG=y
43CONFIG_ELF_CORE=y
44CONFIG_BASE_FULL=y
45# CONFIG_FUTEX is not set
46# CONFIG_EPOLL is not set
47CONFIG_SHMEM=y
48CONFIG_SLAB=y
49CONFIG_VM_EVENT_COUNTERS=y
50# CONFIG_TINY_SHMEM is not set
51CONFIG_BASE_SMALL=0
52# CONFIG_SLOB is not set
53
54#
55# Loadable module support
56#
57CONFIG_MODULES=y
58# CONFIG_MODULE_UNLOAD is not set
59# CONFIG_MODVERSIONS is not set
60# CONFIG_MODULE_SRCVERSION_ALL is not set
61# CONFIG_KMOD is not set
62
63#
64# Block layer
65#
66CONFIG_BLOCK=y
67# CONFIG_LBD is not set
68# CONFIG_LSF is not set
69
70#
71# IO Schedulers
72#
73CONFIG_IOSCHED_NOOP=y
74# CONFIG_IOSCHED_AS is not set
75# CONFIG_IOSCHED_DEADLINE is not set
76# CONFIG_IOSCHED_CFQ is not set
77# CONFIG_DEFAULT_AS is not set
78# CONFIG_DEFAULT_DEADLINE is not set
79# CONFIG_DEFAULT_CFQ is not set
80CONFIG_DEFAULT_NOOP=y
81CONFIG_DEFAULT_IOSCHED="noop"
82
83#
84# System type
85#
86CONFIG_SOLUTION_ENGINE=y
87# CONFIG_SH_SOLUTION_ENGINE is not set
88# CONFIG_SH_7751_SOLUTION_ENGINE is not set
89# CONFIG_SH_7300_SOLUTION_ENGINE is not set
90# CONFIG_SH_7343_SOLUTION_ENGINE is not set
91CONFIG_SH_73180_SOLUTION_ENGINE=y
92# CONFIG_SH_7751_SYSTEMH is not set
93# CONFIG_SH_HP6XX is not set
94# CONFIG_SH_EC3104 is not set
95# CONFIG_SH_SATURN is not set
96# CONFIG_SH_DREAMCAST is not set
97# CONFIG_SH_BIGSUR is not set
98# CONFIG_SH_MPC1211 is not set
99# CONFIG_SH_SH03 is not set
100# CONFIG_SH_SECUREEDGE5410 is not set
101# CONFIG_SH_HS7751RVOIP is not set
102# CONFIG_SH_7710VOIPGW is not set
103# CONFIG_SH_RTS7751R2D is not set
104# CONFIG_SH_R7780RP is not set
105# CONFIG_SH_EDOSK7705 is not set
106# CONFIG_SH_SH4202_MICRODEV is not set
107# CONFIG_SH_LANDISK is not set
108# CONFIG_SH_TITAN is not set
109# CONFIG_SH_SHMIN is not set
110# CONFIG_SH_UNKNOWN is not set
111
112#
113# Processor selection
114#
115CONFIG_CPU_SH4=y
116CONFIG_CPU_SH4A=y
117CONFIG_CPU_SH4AL_DSP=y
118
119#
120# SH-2 Processor Support
121#
122# CONFIG_CPU_SUBTYPE_SH7604 is not set
123
124#
125# SH-3 Processor Support
126#
127# CONFIG_CPU_SUBTYPE_SH7300 is not set
128# CONFIG_CPU_SUBTYPE_SH7705 is not set
129# CONFIG_CPU_SUBTYPE_SH7706 is not set
130# CONFIG_CPU_SUBTYPE_SH7707 is not set
131# CONFIG_CPU_SUBTYPE_SH7708 is not set
132# CONFIG_CPU_SUBTYPE_SH7709 is not set
133# CONFIG_CPU_SUBTYPE_SH7710 is not set
134
135#
136# SH-4 Processor Support
137#
138# CONFIG_CPU_SUBTYPE_SH7750 is not set
139# CONFIG_CPU_SUBTYPE_SH7091 is not set
140# CONFIG_CPU_SUBTYPE_SH7750R is not set
141# CONFIG_CPU_SUBTYPE_SH7750S is not set
142# CONFIG_CPU_SUBTYPE_SH7751 is not set
143# CONFIG_CPU_SUBTYPE_SH7751R is not set
144# CONFIG_CPU_SUBTYPE_SH7760 is not set
145# CONFIG_CPU_SUBTYPE_SH4_202 is not set
146
147#
148# ST40 Processor Support
149#
150# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
151# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
152
153#
154# SH-4A Processor Support
155#
156# CONFIG_CPU_SUBTYPE_SH7770 is not set
157# CONFIG_CPU_SUBTYPE_SH7780 is not set
158
159#
160# SH4AL-DSP Processor Support
161#
162CONFIG_CPU_SUBTYPE_SH73180=y
163# CONFIG_CPU_SUBTYPE_SH7343 is not set
164
165#
166# Memory management options
167#
168CONFIG_MMU=y
169CONFIG_PAGE_OFFSET=0x80000000
170CONFIG_MEMORY_START=0x0c000000
171CONFIG_MEMORY_SIZE=0x02000000
172CONFIG_32BIT=y
173CONFIG_VSYSCALL=y
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_SPLIT_PTLOCK_CPUS=4
182# CONFIG_RESOURCES_64BIT is not set
183
184#
185# Cache configuration
186#
187# CONFIG_SH_DIRECT_MAPPED is not set
188# CONFIG_SH_WRITETHROUGH is not set
189# CONFIG_SH_OCRAM is not set
190
191#
192# Processor features
193#
194CONFIG_CPU_LITTLE_ENDIAN=y
195# CONFIG_SH_FPU is not set
196# CONFIG_SH_FPU_EMU is not set
197CONFIG_SH_DSP=y
198# CONFIG_SH_STORE_QUEUES is not set
199CONFIG_CPU_HAS_INTEVT=y
200CONFIG_CPU_HAS_SR_RB=y
201
202#
203# Timer support
204#
205CONFIG_SH_TMU=y
206CONFIG_SH_PCLK_FREQ=27000000
207
208#
209# CPU Frequency scaling
210#
211# CONFIG_CPU_FREQ is not set
212
213#
214# DMA support
215#
216# CONFIG_SH_DMA is not set
217
218#
219# Companion Chips
220#
221# CONFIG_HD6446X_SERIES is not set
222CONFIG_HEARTBEAT=y
223
224#
225# Kernel features
226#
227# CONFIG_HZ_100 is not set
228CONFIG_HZ_250=y
229# CONFIG_HZ_1000 is not set
230CONFIG_HZ=250
231# CONFIG_KEXEC is not set
232# CONFIG_SMP is not set
233CONFIG_PREEMPT_NONE=y
234# CONFIG_PREEMPT_VOLUNTARY is not set
235# CONFIG_PREEMPT is not set
236
237#
238# Boot options
239#
240CONFIG_ZERO_PAGE_OFFSET=0x00010000
241CONFIG_BOOT_LINK_OFFSET=0x00800000
242# CONFIG_UBC_WAKEUP is not set
243CONFIG_CMDLINE_BOOL=y
244CONFIG_CMDLINE="console=ttySC0,38400 root=/dev/ram"
245
246#
247# Bus options
248#
249# CONFIG_PCI is not set
250
251#
252# PCCARD (PCMCIA/CardBus) support
253#
254
255#
256# PCI Hotplug Support
257#
258
259#
260# Executable file formats
261#
262CONFIG_BINFMT_ELF=y
263# CONFIG_BINFMT_FLAT is not set
264# CONFIG_BINFMT_MISC is not set
265
266#
267# Power management options (EXPERIMENTAL)
268#
269# CONFIG_PM is not set
270
271#
272# Networking
273#
274# CONFIG_NET is not set
275
276#
277# Device Drivers
278#
279
280#
281# Generic Driver Options
282#
283CONFIG_STANDALONE=y
284CONFIG_PREVENT_FIRMWARE_BUILD=y
285# CONFIG_SYS_HYPERVISOR is not set
286
287#
288# Connector - unified userspace <-> kernelspace linker
289#
290
291#
292# Memory Technology Devices (MTD)
293#
294# CONFIG_MTD is not set
295
296#
297# Parallel port support
298#
299# CONFIG_PARPORT is not set
300
301#
302# Plug and Play support
303#
304
305#
306# Block devices
307#
308# CONFIG_BLK_DEV_COW_COMMON is not set
309CONFIG_BLK_DEV_LOOP=y
310# CONFIG_BLK_DEV_CRYPTOLOOP is not set
311CONFIG_BLK_DEV_RAM=y
312CONFIG_BLK_DEV_RAM_COUNT=16
313CONFIG_BLK_DEV_RAM_SIZE=4096
314CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
315CONFIG_BLK_DEV_INITRD=y
316# CONFIG_CDROM_PKTCDVD is not set
317
318#
319# ATA/ATAPI/MFM/RLL support
320#
321# CONFIG_IDE is not set
322
323#
324# SCSI device support
325#
326# CONFIG_RAID_ATTRS is not set
327# CONFIG_SCSI is not set
328# CONFIG_SCSI_NETLINK is not set
329
330#
331# Serial ATA (prod) and Parallel ATA (experimental) drivers
332#
333# CONFIG_ATA is not set
334
335#
336# Multi-device support (RAID and LVM)
337#
338# CONFIG_MD is not set
339
340#
341# Fusion MPT device support
342#
343# CONFIG_FUSION is not set
344
345#
346# IEEE 1394 (FireWire) support
347#
348
349#
350# I2O device support
351#
352
353#
354# ISDN subsystem
355#
356
357#
358# Telephony Support
359#
360# CONFIG_PHONE is not set
361
362#
363# Input device support
364#
365# CONFIG_INPUT is not set
366
367#
368# Hardware I/O ports
369#
370# CONFIG_SERIO is not set
371# CONFIG_GAMEPORT is not set
372
373#
374# Character devices
375#
376# CONFIG_VT is not set
377# CONFIG_SERIAL_NONSTANDARD is not set
378
379#
380# Serial drivers
381#
382# CONFIG_SERIAL_8250 is not set
383
384#
385# Non-8250 serial port support
386#
387CONFIG_SERIAL_SH_SCI=y
388CONFIG_SERIAL_SH_SCI_NR_UARTS=2
389CONFIG_SERIAL_SH_SCI_CONSOLE=y
390CONFIG_SERIAL_CORE=y
391CONFIG_SERIAL_CORE_CONSOLE=y
392# CONFIG_UNIX98_PTYS is not set
393# CONFIG_LEGACY_PTYS is not set
394
395#
396# IPMI
397#
398# CONFIG_IPMI_HANDLER is not set
399
400#
401# Watchdog Cards
402#
403CONFIG_WATCHDOG=y
404# CONFIG_WATCHDOG_NOWAYOUT is not set
405
406#
407# Watchdog Device Drivers
408#
409# CONFIG_SOFT_WATCHDOG is not set
410# CONFIG_SH_WDT is not set
411CONFIG_HW_RANDOM=y
412# CONFIG_GEN_RTC is not set
413# CONFIG_DTLK is not set
414# CONFIG_R3964 is not set
415
416#
417# Ftape, the floppy tape device driver
418#
419# CONFIG_RAW_DRIVER is not set
420
421#
422# TPM devices
423#
424# CONFIG_TCG_TPM is not set
425# CONFIG_TELCLOCK is not set
426
427#
428# I2C support
429#
430# CONFIG_I2C is not set
431
432#
433# SPI support
434#
435# CONFIG_SPI is not set
436# CONFIG_SPI_MASTER is not set
437
438#
439# Dallas's 1-wire bus
440#
441
442#
443# Hardware Monitoring support
444#
445CONFIG_HWMON=y
446# CONFIG_HWMON_VID is not set
447# CONFIG_SENSORS_ABITUGURU is not set
448# CONFIG_SENSORS_F71805F is not set
449# CONFIG_SENSORS_VT1211 is not set
450# CONFIG_HWMON_DEBUG_CHIP is not set
451
452#
453# Misc devices
454#
455
456#
457# Multimedia devices
458#
459# CONFIG_VIDEO_DEV is not set
460CONFIG_VIDEO_V4L2=y
461
462#
463# Digital Video Broadcasting Devices
464#
465
466#
467# Graphics support
468#
469CONFIG_FIRMWARE_EDID=y
470# CONFIG_FB is not set
471
472#
473# Sound
474#
475# CONFIG_SOUND is not set
476
477#
478# USB support
479#
480# CONFIG_USB_ARCH_HAS_HCD is not set
481# CONFIG_USB_ARCH_HAS_OHCI is not set
482# CONFIG_USB_ARCH_HAS_EHCI is not set
483
484#
485# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
486#
487
488#
489# USB Gadget Support
490#
491# CONFIG_USB_GADGET is not set
492
493#
494# MMC/SD Card support
495#
496# CONFIG_MMC is not set
497
498#
499# LED devices
500#
501# CONFIG_NEW_LEDS is not set
502
503#
504# LED drivers
505#
506
507#
508# LED Triggers
509#
510
511#
512# InfiniBand support
513#
514
515#
516# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
517#
518
519#
520# Real Time Clock
521#
522# CONFIG_RTC_CLASS is not set
523
524#
525# DMA Engine support
526#
527# CONFIG_DMA_ENGINE is not set
528
529#
530# DMA Clients
531#
532
533#
534# DMA Devices
535#
536
537#
538# File systems
539#
540CONFIG_EXT2_FS=y
541# CONFIG_EXT2_FS_XATTR is not set
542# CONFIG_EXT2_FS_XIP is not set
543# CONFIG_EXT3_FS is not set
544# CONFIG_REISERFS_FS is not set
545# CONFIG_JFS_FS is not set
546# CONFIG_FS_POSIX_ACL is not set
547# CONFIG_XFS_FS is not set
548# CONFIG_MINIX_FS is not set
549# CONFIG_ROMFS_FS is not set
550CONFIG_INOTIFY=y
551CONFIG_INOTIFY_USER=y
552# CONFIG_QUOTA is not set
553CONFIG_DNOTIFY=y
554# CONFIG_AUTOFS_FS is not set
555# CONFIG_AUTOFS4_FS is not set
556# CONFIG_FUSE_FS is not set
557
558#
559# CD-ROM/DVD Filesystems
560#
561# CONFIG_ISO9660_FS is not set
562# CONFIG_UDF_FS is not set
563
564#
565# DOS/FAT/NT Filesystems
566#
567# CONFIG_MSDOS_FS is not set
568# CONFIG_VFAT_FS is not set
569# CONFIG_NTFS_FS is not set
570
571#
572# Pseudo filesystems
573#
574CONFIG_PROC_FS=y
575CONFIG_PROC_KCORE=y
576CONFIG_PROC_SYSCTL=y
577# CONFIG_SYSFS is not set
578CONFIG_TMPFS=y
579# CONFIG_TMPFS_POSIX_ACL is not set
580# CONFIG_HUGETLBFS is not set
581# CONFIG_HUGETLB_PAGE is not set
582CONFIG_RAMFS=y
583
584#
585# Miscellaneous filesystems
586#
587# CONFIG_ADFS_FS is not set
588# CONFIG_AFFS_FS is not set
589# CONFIG_HFS_FS is not set
590# CONFIG_HFSPLUS_FS is not set
591# CONFIG_BEFS_FS is not set
592# CONFIG_BFS_FS is not set
593# CONFIG_EFS_FS is not set
594# CONFIG_CRAMFS is not set
595# CONFIG_VXFS_FS is not set
596# CONFIG_HPFS_FS is not set
597# CONFIG_QNX4FS_FS is not set
598# CONFIG_SYSV_FS is not set
599# CONFIG_UFS_FS is not set
600
601#
602# Partition Types
603#
604# CONFIG_PARTITION_ADVANCED is not set
605CONFIG_MSDOS_PARTITION=y
606
607#
608# Native Language Support
609#
610# CONFIG_NLS is not set
611
612#
613# Profiling support
614#
615# CONFIG_PROFILING is not set
616
617#
618# Kernel hacking
619#
620# CONFIG_PRINTK_TIME is not set
621CONFIG_ENABLE_MUST_CHECK=y
622# CONFIG_MAGIC_SYSRQ is not set
623# CONFIG_UNUSED_SYMBOLS is not set
624# CONFIG_DEBUG_KERNEL is not set
625CONFIG_LOG_BUF_SHIFT=14
626# CONFIG_DEBUG_BUGVERBOSE is not set
627CONFIG_SH_STANDARD_BIOS=y
628# CONFIG_EARLY_SCIF_CONSOLE is not set
629# CONFIG_EARLY_PRINTK is not set
630# CONFIG_KGDB is not set
631
632#
633# Security options
634#
635# CONFIG_KEYS is not set
636
637#
638# Cryptographic options
639#
640# CONFIG_CRYPTO is not set
641
642#
643# Library routines
644#
645# CONFIG_CRC_CCITT is not set
646# CONFIG_CRC16 is not set
647CONFIG_CRC32=y
648# CONFIG_LIBCRC32C is not set
diff --git a/arch/sh/drivers/dma/dma-api.c b/arch/sh/drivers/dma/dma-api.c
index cf8e11994330..76ed816d9a24 100644
--- a/arch/sh/drivers/dma/dma-api.c
+++ b/arch/sh/drivers/dma/dma-api.c
@@ -31,8 +31,8 @@ struct dma_info *get_dma_info(unsigned int chan)
31 * the channel is. 31 * the channel is.
32 */ 32 */
33 list_for_each_entry(info, &registered_dmac_list, list) { 33 list_for_each_entry(info, &registered_dmac_list, list) {
34 if ((chan < info->first_channel_nr) || 34 if ((chan < info->first_vchannel_nr) ||
35 (chan >= info->first_channel_nr + info->nr_channels)) 35 (chan >= info->first_vchannel_nr + info->nr_channels))
36 continue; 36 continue;
37 37
38 return info; 38 return info;
@@ -82,7 +82,7 @@ struct dma_channel *get_dma_channel(unsigned int chan)
82 82
83 for (i = 0; i < info->nr_channels; i++) { 83 for (i = 0; i < info->nr_channels; i++) {
84 channel = &info->channels[i]; 84 channel = &info->channels[i];
85 if (channel->chan == chan) 85 if (channel->vchan == chan)
86 return channel; 86 return channel;
87 } 87 }
88 88
@@ -369,6 +369,7 @@ int register_dmac(struct dma_info *info)
369 } 369 }
370 370
371 total_channels = get_nr_channels(); 371 total_channels = get_nr_channels();
372 info->first_vchannel_nr = total_channels;
372 for (i = 0; i < info->nr_channels; i++) { 373 for (i = 0; i < info->nr_channels; i++) {
373 struct dma_channel *chan = &info->channels[i]; 374 struct dma_channel *chan = &info->channels[i];
374 375
diff --git a/arch/sh/kernel/cpu/irq/Makefile b/arch/sh/kernel/cpu/irq/Makefile
index 9ddb446ac930..60bfc05cf354 100644
--- a/arch/sh/kernel/cpu/irq/Makefile
+++ b/arch/sh/kernel/cpu/irq/Makefile
@@ -4,7 +4,6 @@
4obj-y += imask.o 4obj-y += imask.o
5 5
6obj-$(CONFIG_CPU_HAS_IPR_IRQ) += ipr.o 6obj-$(CONFIG_CPU_HAS_IPR_IRQ) += ipr.o
7obj-$(CONFIG_CPU_HAS_PINT_IRQ) += pint.o
8obj-$(CONFIG_CPU_HAS_MASKREG_IRQ) += maskreg.o 7obj-$(CONFIG_CPU_HAS_MASKREG_IRQ) += maskreg.o
9obj-$(CONFIG_CPU_HAS_INTC_IRQ) += intc.o 8obj-$(CONFIG_CPU_HAS_INTC_IRQ) += intc.o
10obj-$(CONFIG_CPU_HAS_INTC2_IRQ) += intc2.o 9obj-$(CONFIG_CPU_HAS_INTC2_IRQ) += intc2.o
diff --git a/arch/sh/kernel/cpu/irq/ipr.c b/arch/sh/kernel/cpu/irq/ipr.c
index 98e84f40c713..5da325414880 100644
--- a/arch/sh/kernel/cpu/irq/ipr.c
+++ b/arch/sh/kernel/cpu/irq/ipr.c
@@ -8,7 +8,7 @@
8 * 8 *
9 * Supported system: 9 * Supported system:
10 * On-chip supporting modules (TMU, RTC, etc.). 10 * On-chip supporting modules (TMU, RTC, etc.).
11 * On-chip supporting modules for SH7709/SH7709A/SH7729/SH7300. 11 * On-chip supporting modules for SH7709/SH7709A/SH7729.
12 * Hitachi SolutionEngine external I/O: 12 * Hitachi SolutionEngine external I/O:
13 * MS7709SE01, MS7709ASE01, and MS7750SE01 13 * MS7709SE01, MS7709ASE01, and MS7750SE01
14 * 14 *
diff --git a/arch/sh/kernel/cpu/irq/pint.c b/arch/sh/kernel/cpu/irq/pint.c
deleted file mode 100644
index 67602685df1a..000000000000
--- a/arch/sh/kernel/cpu/irq/pint.c
+++ /dev/null
@@ -1,220 +0,0 @@
1/*
2 * arch/sh/kernel/cpu/irq/pint.c - Interrupt handling for PINT-based IRQs.
3 *
4 * Copyright (C) 1999 Niibe Yutaka & Takeshi Yaegashi
5 * Copyright (C) 2000 Kazumoto Kojima
6 * Copyright (C) 2003 Takashi Kusuda <kusuda-takashi@hitachi-ul.co.jp>
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/irq.h>
15#include <linux/module.h>
16
17#include <asm/system.h>
18#include <asm/io.h>
19#include <asm/machvec.h>
20
21#if defined(CONFIG_CPU_SUBTYPE_SH7705)
22#define INTC_INTER 0xA4000014UL
23#define INTC_IPRD 0xA4000018UL
24#define INTC_ICR2 0xA4000012UL
25
26/* PFC */
27#define PORT_PACR 0xA4000100UL
28#define PORT_PBCR 0xA4000102UL
29#define PORT_PCCR 0xA4000104UL
30#define PORT_PDCR 0xA4000106UL
31#define PORT_PECR 0xA4000108UL
32#define PORT_PFCR 0xA400010AUL
33#define PORT_PGCR 0xA400010CUL
34#define PORT_PHCR 0xA400010EUL
35#define PORT_PJCR 0xA4000110UL
36#define PORT_PKCR 0xA4000112UL
37#define PORT_PLCR 0xA4000114UL
38#define PORT_PMCR 0xA4000118UL
39#define PORT_PNCR 0xA400011AUL
40#define PORT_PECR2 0xA4050148UL
41#define PORT_PFCR2 0xA405014AUL
42#define PORT_PNCR2 0xA405015AUL
43
44/* I/O port */
45#define PORT_PADR 0xA4000120UL
46#define PORT_PBDR 0xA4000122UL
47#define PORT_PCDR 0xA4000124UL
48#define PORT_PDDR 0xA4000126UL
49#define PORT_PEDR 0xA4000128UL
50#define PORT_PFDR 0xA400012AUL
51#define PORT_PGDR 0xA400012CUL
52#define PORT_PHDR 0xA400012EUL
53#define PORT_PJDR 0xA4000130UL
54#define PORT_PKDR 0xA4000132UL
55#define PORT_PLDR 0xA4000134UL
56#define PORT_PMDR 0xA4000138UL
57#define PORT_PNDR 0xA400013AUL
58
59#define PINT0_IRQ 40
60#define PINT8_IRQ 41
61#define PINT_IRQ_BASE 86
62
63#define PINT0_IPR_ADDR INTC_IPRD
64#define PINT0_IPR_POS 3
65#define PINT0_PRIORITY 2
66
67#define PINT8_IPR_ADDR INTC_IPRD
68#define PINT8_IPR_POS 2
69#define PINT8_PRIORITY 2
70
71#endif /* CONFIG_CPU_SUBTYPE_SH7705 */
72
73static unsigned char pint_map[256];
74static unsigned long portcr_mask;
75
76static void enable_pint_irq(unsigned int irq);
77static void disable_pint_irq(unsigned int irq);
78
79/* shutdown is same as "disable" */
80#define shutdown_pint_irq disable_pint_irq
81
82static void mask_and_ack_pint(unsigned int);
83static void end_pint_irq(unsigned int irq);
84
85static unsigned int startup_pint_irq(unsigned int irq)
86{
87 enable_pint_irq(irq);
88 return 0; /* never anything pending */
89}
90
91static struct hw_interrupt_type pint_irq_type = {
92 .typename = "PINT-IRQ",
93 .startup = startup_pint_irq,
94 .shutdown = shutdown_pint_irq,
95 .enable = enable_pint_irq,
96 .disable = disable_pint_irq,
97 .ack = mask_and_ack_pint,
98 .end = end_pint_irq
99};
100
101static void disable_pint_irq(unsigned int irq)
102{
103 unsigned long val;
104
105 val = ctrl_inw(INTC_INTER);
106 val &= ~(1 << (irq - PINT_IRQ_BASE));
107 ctrl_outw(val, INTC_INTER); /* disable PINTn */
108 portcr_mask &= ~(3 << (irq - PINT_IRQ_BASE)*2);
109}
110
111static void enable_pint_irq(unsigned int irq)
112{
113 unsigned long val;
114
115 val = ctrl_inw(INTC_INTER);
116 val |= 1 << (irq - PINT_IRQ_BASE);
117 ctrl_outw(val, INTC_INTER); /* enable PINTn */
118 portcr_mask |= 3 << (irq - PINT_IRQ_BASE)*2;
119}
120
121static void mask_and_ack_pint(unsigned int irq)
122{
123 disable_pint_irq(irq);
124}
125
126static void end_pint_irq(unsigned int irq)
127{
128 if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
129 enable_pint_irq(irq);
130}
131
132void make_pint_irq(unsigned int irq)
133{
134 disable_irq_nosync(irq);
135 irq_desc[irq].chip = &pint_irq_type;
136 disable_pint_irq(irq);
137}
138
139static struct ipr_data pint_ipr_map[] = {
140 { PINT0_IRQ, PINT0_IPR_ADDR, PINT0_IPR_POS, PINT0_PRIORITY },
141 { PINT8_IRQ, PINT8_IPR_ADDR, PINT8_IPR_POS, PINT8_PRIORITY },
142};
143
144void __init init_IRQ_pint(void)
145{
146 int i;
147
148 make_ipr_irq(pint_ipr_map, ARRAY_SIZE(pint_ipr_map));
149
150 enable_irq(PINT0_IRQ);
151 enable_irq(PINT8_IRQ);
152
153 for(i = 0; i < 16; i++)
154 make_pint_irq(PINT_IRQ_BASE + i);
155
156 for(i = 0; i < 256; i++) {
157 if (i & 1)
158 pint_map[i] = 0;
159 else if (i & 2)
160 pint_map[i] = 1;
161 else if (i & 4)
162 pint_map[i] = 2;
163 else if (i & 8)
164 pint_map[i] = 3;
165 else if (i & 0x10)
166 pint_map[i] = 4;
167 else if (i & 0x20)
168 pint_map[i] = 5;
169 else if (i & 0x40)
170 pint_map[i] = 6;
171 else if (i & 0x80)
172 pint_map[i] = 7;
173 }
174}
175
176int ipr_irq_demux(int irq)
177{
178 unsigned long creg, dreg, d, sav;
179
180 if (irq == PINT0_IRQ) {
181#if defined(CONFIG_CPU_SUBTYPE_SH7705) || defined(CONFIG_CPU_SUBTYPE_SH7707)
182 creg = PORT_PACR;
183 dreg = PORT_PADR;
184#else
185 creg = PORT_PCCR;
186 dreg = PORT_PCDR;
187#endif
188 sav = ctrl_inw(creg);
189 ctrl_outw(sav | portcr_mask, creg);
190 d = (~ctrl_inb(dreg) ^ ctrl_inw(INTC_ICR2)) &
191 ctrl_inw(INTC_INTER) & 0xff;
192 ctrl_outw(sav, creg);
193
194 if (d == 0)
195 return irq;
196
197 return PINT_IRQ_BASE + pint_map[d];
198 } else if (irq == PINT8_IRQ) {
199#if defined(CONFIG_CPU_SUBTYPE_SH7705) || defined(CONFIG_CPU_SUBTYPE_SH7707)
200 creg = PORT_PBCR;
201 dreg = PORT_PBDR;
202#else
203 creg = PORT_PFCR;
204 dreg = PORT_PFDR;
205#endif
206 sav = ctrl_inw(creg);
207 ctrl_outw(sav | (portcr_mask >> 16), creg);
208 d = (~ctrl_inb(dreg) ^ (ctrl_inw(INTC_ICR2) >> 8)) &
209 (ctrl_inw(INTC_INTER) >> 8) & 0xff;
210 ctrl_outw(sav, creg);
211
212 if (d == 0)
213 return irq;
214
215 return PINT_IRQ_BASE + 8 + pint_map[d];
216 }
217
218 return irq;
219}
220
diff --git a/arch/sh/kernel/cpu/sh3/Makefile b/arch/sh/kernel/cpu/sh3/Makefile
index 09faa056cd43..55b750763f66 100644
--- a/arch/sh/kernel/cpu/sh3/Makefile
+++ b/arch/sh/kernel/cpu/sh3/Makefile
@@ -10,16 +10,14 @@ obj-$(CONFIG_CPU_SUBTYPE_SH7706) += setup-sh7709.o
10obj-$(CONFIG_CPU_SUBTYPE_SH7707) += setup-sh7709.o 10obj-$(CONFIG_CPU_SUBTYPE_SH7707) += setup-sh7709.o
11obj-$(CONFIG_CPU_SUBTYPE_SH7708) += setup-sh7708.o 11obj-$(CONFIG_CPU_SUBTYPE_SH7708) += setup-sh7708.o
12obj-$(CONFIG_CPU_SUBTYPE_SH7709) += setup-sh7709.o 12obj-$(CONFIG_CPU_SUBTYPE_SH7709) += setup-sh7709.o
13obj-$(CONFIG_CPU_SUBTYPE_SH7300) += setup-sh7300.o
14obj-$(CONFIG_CPU_SUBTYPE_SH7710) += setup-sh7710.o 13obj-$(CONFIG_CPU_SUBTYPE_SH7710) += setup-sh7710.o
15obj-$(CONFIG_CPU_SUBTYPE_SH7712) += setup-sh7710.o 14obj-$(CONFIG_CPU_SUBTYPE_SH7712) += setup-sh7710.o
16 15
17# Primary on-chip clocks (common) 16# Primary on-chip clocks (common)
18clock-$(CONFIG_CPU_SH3) := clock-sh3.o 17clock-$(CONFIG_CPU_SH3) := clock-sh3.o
19clock-$(CONFIG_CPU_SUBTYPE_SH7300) := clock-sh7300.o
20clock-$(CONFIG_CPU_SUBTYPE_SH7705) := clock-sh7705.o 18clock-$(CONFIG_CPU_SUBTYPE_SH7705) := clock-sh7705.o
21clock-$(CONFIG_CPU_SUBTYPE_SH7706) := clock-sh7706.o 19clock-$(CONFIG_CPU_SUBTYPE_SH7706) := clock-sh7706.o
22clock-$(CONFIG_CPU_SUBTYPE_SH7709) := clock-sh7709.o 20clock-$(CONFIG_CPU_SUBTYPE_SH7709) := clock-sh7709.o
23clock-$(CONFIG_CPU_SUBTYPE_SH7710) := clock-sh7300.o 21clock-$(CONFIG_CPU_SUBTYPE_SH7710) := clock-sh7710.o
24 22
25obj-y += $(clock-y) 23obj-y += $(clock-y)
diff --git a/arch/sh/kernel/cpu/sh3/clock-sh7300.c b/arch/sh/kernel/cpu/sh3/clock-sh7710.c
index e804174b9625..4744c50ec449 100644
--- a/arch/sh/kernel/cpu/sh3/clock-sh7300.c
+++ b/arch/sh/kernel/cpu/sh3/clock-sh7710.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * arch/sh/kernel/cpu/sh3/clock-sh7300.c 2 * arch/sh/kernel/cpu/sh3/clock-sh7710.c
3 * 3 *
4 * SH7300 support for the clock framework 4 * SH7710 support for the clock framework
5 * 5 *
6 * Copyright (C) 2005 Paul Mundt 6 * Copyright (C) 2005 Paul Mundt
7 * 7 *
@@ -29,7 +29,7 @@ static void master_clk_init(struct clk *clk)
29 clk->rate *= md_table[ctrl_inw(FRQCR) & 0x0007]; 29 clk->rate *= md_table[ctrl_inw(FRQCR) & 0x0007];
30} 30}
31 31
32static struct clk_ops sh7300_master_clk_ops = { 32static struct clk_ops sh7710_master_clk_ops = {
33 .init = master_clk_init, 33 .init = master_clk_init,
34}; 34};
35 35
@@ -39,7 +39,7 @@ static void module_clk_recalc(struct clk *clk)
39 clk->rate = clk->parent->rate / md_table[idx]; 39 clk->rate = clk->parent->rate / md_table[idx];
40} 40}
41 41
42static struct clk_ops sh7300_module_clk_ops = { 42static struct clk_ops sh7710_module_clk_ops = {
43 .recalc = module_clk_recalc, 43 .recalc = module_clk_recalc,
44}; 44};
45 45
@@ -49,7 +49,7 @@ static void bus_clk_recalc(struct clk *clk)
49 clk->rate = clk->parent->rate / md_table[idx]; 49 clk->rate = clk->parent->rate / md_table[idx];
50} 50}
51 51
52static struct clk_ops sh7300_bus_clk_ops = { 52static struct clk_ops sh7710_bus_clk_ops = {
53 .recalc = bus_clk_recalc, 53 .recalc = bus_clk_recalc,
54}; 54};
55 55
@@ -59,20 +59,20 @@ static void cpu_clk_recalc(struct clk *clk)
59 clk->rate = clk->parent->rate / md_table[idx]; 59 clk->rate = clk->parent->rate / md_table[idx];
60} 60}
61 61
62static struct clk_ops sh7300_cpu_clk_ops = { 62static struct clk_ops sh7710_cpu_clk_ops = {
63 .recalc = cpu_clk_recalc, 63 .recalc = cpu_clk_recalc,
64}; 64};
65 65
66static struct clk_ops *sh7300_clk_ops[] = { 66static struct clk_ops *sh7710_clk_ops[] = {
67 &sh7300_master_clk_ops, 67 &sh7710_master_clk_ops,
68 &sh7300_module_clk_ops, 68 &sh7710_module_clk_ops,
69 &sh7300_bus_clk_ops, 69 &sh7710_bus_clk_ops,
70 &sh7300_cpu_clk_ops, 70 &sh7710_cpu_clk_ops,
71}; 71};
72 72
73void __init arch_init_clk_ops(struct clk_ops **ops, int idx) 73void __init arch_init_clk_ops(struct clk_ops **ops, int idx)
74{ 74{
75 if (idx < ARRAY_SIZE(sh7300_clk_ops)) 75 if (idx < ARRAY_SIZE(sh7710_clk_ops))
76 *ops = sh7300_clk_ops[idx]; 76 *ops = sh7710_clk_ops[idx];
77} 77}
78 78
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7300.c b/arch/sh/kernel/cpu/sh3/setup-sh7300.c
deleted file mode 100644
index ab4d204bfba5..000000000000
--- a/arch/sh/kernel/cpu/sh3/setup-sh7300.c
+++ /dev/null
@@ -1,43 +0,0 @@
1/*
2 * SH7300 Setup
3 *
4 * Copyright (C) 2006 Paul Mundt
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10#include <linux/platform_device.h>
11#include <linux/init.h>
12#include <linux/serial.h>
13#include <asm/sci.h>
14
15static struct plat_sci_port sci_platform_data[] = {
16 {
17 .mapbase = 0xa4430000,
18 .flags = UPF_BOOT_AUTOCONF,
19 .type = PORT_SCI,
20 .irqs = { 80, 80, 80, 80 },
21 }, {
22 .flags = 0,
23 }
24};
25
26static struct platform_device sci_device = {
27 .name = "sh-sci",
28 .id = -1,
29 .dev = {
30 .platform_data = sci_platform_data,
31 },
32};
33
34static struct platform_device *sh7300_devices[] __initdata = {
35 &sci_device,
36};
37
38static int __init sh7300_devices_setup(void)
39{
40 return platform_add_devices(sh7300_devices,
41 ARRAY_SIZE(sh7300_devices));
42}
43__initcall(sh7300_devices_setup);
diff --git a/arch/sh/kernel/cpu/sh4/probe.c b/arch/sh/kernel/cpu/sh4/probe.c
index 66c3f75647b2..98d28fb1ce16 100644
--- a/arch/sh/kernel/cpu/sh4/probe.c
+++ b/arch/sh/kernel/cpu/sh4/probe.c
@@ -90,12 +90,6 @@ int __init detect_cpu_and_cache_system(void)
90 current_cpu_data.type = CPU_SH7751; 90 current_cpu_data.type = CPU_SH7751;
91 current_cpu_data.flags |= CPU_HAS_FPU; 91 current_cpu_data.flags |= CPU_HAS_FPU;
92 break; 92 break;
93 case 0x2000:
94 current_cpu_data.type = CPU_SH73180;
95 current_cpu_data.icache.ways = 4;
96 current_cpu_data.dcache.ways = 4;
97 current_cpu_data.flags |= CPU_HAS_LLSC;
98 break;
99 case 0x2001: 93 case 0x2001:
100 case 0x2004: 94 case 0x2004:
101 current_cpu_data.type = CPU_SH7770; 95 current_cpu_data.type = CPU_SH7770;
diff --git a/arch/sh/kernel/cpu/sh4/sq.c b/arch/sh/kernel/cpu/sh4/sq.c
index b98d6c3e6f36..c21512c6044e 100644
--- a/arch/sh/kernel/cpu/sh4/sq.c
+++ b/arch/sh/kernel/cpu/sh4/sq.c
@@ -208,7 +208,6 @@ EXPORT_SYMBOL(sq_remap);
208void sq_unmap(unsigned long vaddr) 208void sq_unmap(unsigned long vaddr)
209{ 209{
210 struct sq_mapping **p, *map; 210 struct sq_mapping **p, *map;
211 struct vm_struct *vma;
212 int page; 211 int page;
213 212
214 for (p = &sq_mapping_list; (map = *p); p = &map->next) 213 for (p = &sq_mapping_list; (map = *p); p = &map->next)
@@ -225,11 +224,18 @@ void sq_unmap(unsigned long vaddr)
225 bitmap_release_region(sq_bitmap, page, get_order(map->size)); 224 bitmap_release_region(sq_bitmap, page, get_order(map->size));
226 225
227#ifdef CONFIG_MMU 226#ifdef CONFIG_MMU
228 vma = remove_vm_area((void *)(map->sq_addr & PAGE_MASK)); 227 {
229 if (!vma) { 228 /*
230 printk(KERN_ERR "%s: bad address 0x%08lx\n", 229 * Tear down the VMA in the MMU case.
231 __FUNCTION__, map->sq_addr); 230 */
232 return; 231 struct vm_struct *vma;
232
233 vma = remove_vm_area((void *)(map->sq_addr & PAGE_MASK));
234 if (!vma) {
235 printk(KERN_ERR "%s: bad address 0x%08lx\n",
236 __FUNCTION__, map->sq_addr);
237 return;
238 }
233 } 239 }
234#endif 240#endif
235 241
diff --git a/arch/sh/kernel/cpu/sh4a/Makefile b/arch/sh/kernel/cpu/sh4a/Makefile
index 400623286487..e6a1fb5f8484 100644
--- a/arch/sh/kernel/cpu/sh4a/Makefile
+++ b/arch/sh/kernel/cpu/sh4a/Makefile
@@ -6,13 +6,11 @@
6obj-$(CONFIG_CPU_SUBTYPE_SH7770) += setup-sh7770.o 6obj-$(CONFIG_CPU_SUBTYPE_SH7770) += setup-sh7770.o
7obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o 7obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o
8obj-$(CONFIG_CPU_SUBTYPE_SH7785) += setup-sh7785.o 8obj-$(CONFIG_CPU_SUBTYPE_SH7785) += setup-sh7785.o
9obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o
10obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o 9obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o
11obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o 10obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o
12obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o 11obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o
13 12
14# Primary on-chip clocks (common) 13# Primary on-chip clocks (common)
15clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o
16clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o 14clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o
17clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o 15clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o
18clock-$(CONFIG_CPU_SUBTYPE_SH7785) := clock-sh7785.o 16clock-$(CONFIG_CPU_SUBTYPE_SH7785) := clock-sh7785.o
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh73180.c b/arch/sh/kernel/cpu/sh4a/clock-sh73180.c
deleted file mode 100644
index 6d5ba373a75e..000000000000
--- a/arch/sh/kernel/cpu/sh4a/clock-sh73180.c
+++ /dev/null
@@ -1,81 +0,0 @@
1/*
2 * arch/sh/kernel/cpu/sh4a/clock-sh73180.c
3 *
4 * SH73180 support for the clock framework
5 *
6 * Copyright (C) 2005 Paul Mundt
7 *
8 * FRQCR parsing hacked out of arch/sh/kernel/time.c
9 *
10 * Copyright (C) 1999 Tetsuya Okada & Niibe Yutaka
11 * Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
12 * Copyright (C) 2002, 2003, 2004 Paul Mundt
13 * Copyright (C) 2002 M. R. Brown <mrbrown@linux-sh.org>
14 *
15 * This file is subject to the terms and conditions of the GNU General Public
16 * License. See the file "COPYING" in the main directory of this archive
17 * for more details.
18 */
19#include <linux/init.h>
20#include <linux/kernel.h>
21#include <asm/clock.h>
22#include <asm/freq.h>
23#include <asm/io.h>
24
25/*
26 * SH73180 uses a common set of divisors, so this is quite simple..
27 */
28static int divisors[] = { 1, 2, 3, 4, 6, 8, 12, 16 };
29
30static void master_clk_init(struct clk *clk)
31{
32 clk->rate *= divisors[ctrl_inl(FRQCR) & 0x0007];
33}
34
35static struct clk_ops sh73180_master_clk_ops = {
36 .init = master_clk_init,
37};
38
39static void module_clk_recalc(struct clk *clk)
40{
41 int idx = (ctrl_inl(FRQCR) & 0x0007);
42 clk->rate = clk->parent->rate / divisors[idx];
43}
44
45static struct clk_ops sh73180_module_clk_ops = {
46 .recalc = module_clk_recalc,
47};
48
49static void bus_clk_recalc(struct clk *clk)
50{
51 int idx = (ctrl_inl(FRQCR) >> 12) & 0x0007;
52 clk->rate = clk->parent->rate / divisors[idx];
53}
54
55static struct clk_ops sh73180_bus_clk_ops = {
56 .recalc = bus_clk_recalc,
57};
58
59static void cpu_clk_recalc(struct clk *clk)
60{
61 int idx = (ctrl_inl(FRQCR) >> 20) & 0x0007;
62 clk->rate = clk->parent->rate / divisors[idx];
63}
64
65static struct clk_ops sh73180_cpu_clk_ops = {
66 .recalc = cpu_clk_recalc,
67};
68
69static struct clk_ops *sh73180_clk_ops[] = {
70 &sh73180_master_clk_ops,
71 &sh73180_module_clk_ops,
72 &sh73180_bus_clk_ops,
73 &sh73180_cpu_clk_ops,
74};
75
76void __init arch_init_clk_ops(struct clk_ops **ops, int idx)
77{
78 if (idx < ARRAY_SIZE(sh73180_clk_ops))
79 *ops = sh73180_clk_ops[idx];
80}
81
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh73180.c b/arch/sh/kernel/cpu/sh4a/setup-sh73180.c
deleted file mode 100644
index cc9ea1e2e5df..000000000000
--- a/arch/sh/kernel/cpu/sh4a/setup-sh73180.c
+++ /dev/null
@@ -1,43 +0,0 @@
1/*
2 * SH73180 Setup
3 *
4 * Copyright (C) 2006 Paul Mundt
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10#include <linux/platform_device.h>
11#include <linux/init.h>
12#include <linux/serial.h>
13#include <asm/sci.h>
14
15static struct plat_sci_port sci_platform_data[] = {
16 {
17 .mapbase = 0xffe80000,
18 .flags = UPF_BOOT_AUTOCONF,
19 .type = PORT_SCIF,
20 .irqs = { 80, 81, 83, 82 },
21 }, {
22 .flags = 0,
23 }
24};
25
26static struct platform_device sci_device = {
27 .name = "sh-sci",
28 .id = -1,
29 .dev = {
30 .platform_data = sci_platform_data,
31 },
32};
33
34static struct platform_device *sh73180_devices[] __initdata = {
35 &sci_device,
36};
37
38static int __init sh73180_devices_setup(void)
39{
40 return platform_add_devices(sh73180_devices,
41 ARRAY_SIZE(sh73180_devices));
42}
43__initcall(sh73180_devices_setup);
diff --git a/arch/sh/kernel/init_task.c b/arch/sh/kernel/init_task.c
index 44053ea92936..4b449c4a6bad 100644
--- a/arch/sh/kernel/init_task.c
+++ b/arch/sh/kernel/init_task.c
@@ -3,7 +3,7 @@
3#include <linux/sched.h> 3#include <linux/sched.h>
4#include <linux/init_task.h> 4#include <linux/init_task.h>
5#include <linux/mqueue.h> 5#include <linux/mqueue.h>
6 6#include <linux/fs.h>
7#include <asm/uaccess.h> 7#include <asm/uaccess.h>
8#include <asm/pgtable.h> 8#include <asm/pgtable.h>
9 9
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c
index 6334a4c54c7c..15ae322dbd74 100644
--- a/arch/sh/kernel/process.c
+++ b/arch/sh/kernel/process.c
@@ -18,6 +18,7 @@
18#include <linux/kdebug.h> 18#include <linux/kdebug.h>
19#include <linux/tick.h> 19#include <linux/tick.h>
20#include <linux/reboot.h> 20#include <linux/reboot.h>
21#include <linux/fs.h>
21#include <asm/uaccess.h> 22#include <asm/uaccess.h>
22#include <asm/mmu_context.h> 23#include <asm/mmu_context.h>
23#include <asm/pgalloc.h> 24#include <asm/pgalloc.h>
@@ -474,7 +475,6 @@ out:
474 475
475unsigned long get_wchan(struct task_struct *p) 476unsigned long get_wchan(struct task_struct *p)
476{ 477{
477 unsigned long schedule_frame;
478 unsigned long pc; 478 unsigned long pc;
479 479
480 if (!p || p == current || p->state == TASK_RUNNING) 480 if (!p || p == current || p->state == TASK_RUNNING)
@@ -484,10 +484,13 @@ unsigned long get_wchan(struct task_struct *p)
484 * The same comment as on the Alpha applies here, too ... 484 * The same comment as on the Alpha applies here, too ...
485 */ 485 */
486 pc = thread_saved_pc(p); 486 pc = thread_saved_pc(p);
487
488#ifdef CONFIG_FRAME_POINTER
487 if (in_sched_functions(pc)) { 489 if (in_sched_functions(pc)) {
488 schedule_frame = (unsigned long)p->thread.sp; 490 unsigned long schedule_frame = (unsigned long)p->thread.sp;
489 return ((unsigned long *)schedule_frame)[21]; 491 return ((unsigned long *)schedule_frame)[21];
490 } 492 }
493#endif
491 494
492 return pc; 495 return pc;
493} 496}
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index c14a3e95d0b1..2cf7dec0d690 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -276,7 +276,6 @@ void __init setup_arch(char **cmdline_p)
276 276
277static const char *cpu_name[] = { 277static const char *cpu_name[] = {
278 [CPU_SH7206] = "SH7206", [CPU_SH7619] = "SH7619", 278 [CPU_SH7206] = "SH7206", [CPU_SH7619] = "SH7619",
279 [CPU_SH7300] = "SH7300",
280 [CPU_SH7705] = "SH7705", [CPU_SH7706] = "SH7706", 279 [CPU_SH7705] = "SH7705", [CPU_SH7706] = "SH7706",
281 [CPU_SH7707] = "SH7707", [CPU_SH7708] = "SH7708", 280 [CPU_SH7707] = "SH7707", [CPU_SH7708] = "SH7708",
282 [CPU_SH7709] = "SH7709", [CPU_SH7710] = "SH7710", 281 [CPU_SH7709] = "SH7709", [CPU_SH7710] = "SH7710",
@@ -284,7 +283,7 @@ static const char *cpu_name[] = {
284 [CPU_SH7729] = "SH7729", [CPU_SH7750] = "SH7750", 283 [CPU_SH7729] = "SH7729", [CPU_SH7750] = "SH7750",
285 [CPU_SH7750S] = "SH7750S", [CPU_SH7750R] = "SH7750R", 284 [CPU_SH7750S] = "SH7750S", [CPU_SH7750R] = "SH7750R",
286 [CPU_SH7751] = "SH7751", [CPU_SH7751R] = "SH7751R", 285 [CPU_SH7751] = "SH7751", [CPU_SH7751R] = "SH7751R",
287 [CPU_SH7760] = "SH7760", [CPU_SH73180] = "SH73180", 286 [CPU_SH7760] = "SH7760",
288 [CPU_ST40RA] = "ST40RA", [CPU_ST40GX1] = "ST40GX1", 287 [CPU_ST40RA] = "ST40RA", [CPU_ST40GX1] = "ST40GX1",
289 [CPU_SH4_202] = "SH4-202", [CPU_SH4_501] = "SH4-501", 288 [CPU_SH4_202] = "SH4-202", [CPU_SH4_501] = "SH4-501",
290 [CPU_SH7770] = "SH7770", [CPU_SH7780] = "SH7780", 289 [CPU_SH7770] = "SH7770", [CPU_SH7780] = "SH7780",
diff --git a/arch/sh/kernel/sys_sh.c b/arch/sh/kernel/sys_sh.c
index 76b1bc7f7029..024ce5dedd8c 100644
--- a/arch/sh/kernel/sys_sh.c
+++ b/arch/sh/kernel/sys_sh.c
@@ -21,6 +21,7 @@
21#include <linux/file.h> 21#include <linux/file.h>
22#include <linux/utsname.h> 22#include <linux/utsname.h>
23#include <linux/module.h> 23#include <linux/module.h>
24#include <linux/fs.h>
24#include <asm/cacheflush.h> 25#include <asm/cacheflush.h>
25#include <asm/uaccess.h> 26#include <asm/uaccess.h>
26#include <asm/ipc.h> 27#include <asm/ipc.h>
diff --git a/arch/sh/kernel/timers/timer-tmu.c b/arch/sh/kernel/timers/timer-tmu.c
index 7aca37d79766..8a545d54e2d3 100644
--- a/arch/sh/kernel/timers/timer-tmu.c
+++ b/arch/sh/kernel/timers/timer-tmu.c
@@ -173,8 +173,7 @@ static int tmu_timer_init(void)
173 173
174 tmu_timer_stop(); 174 tmu_timer_stop();
175 175
176#if !defined(CONFIG_CPU_SUBTYPE_SH7300) && \ 176#if !defined(CONFIG_CPU_SUBTYPE_SH7760) && \
177 !defined(CONFIG_CPU_SUBTYPE_SH7760) && \
178 !defined(CONFIG_CPU_SUBTYPE_SH7785) && \ 177 !defined(CONFIG_CPU_SUBTYPE_SH7785) && \
179 !defined(CONFIG_CPU_SUBTYPE_SHX3) 178 !defined(CONFIG_CPU_SUBTYPE_SHX3)
180 ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); 179 ctrl_outb(TMU_TOCR_INIT, TMU_TOCR);
diff --git a/arch/sh/kernel/vsyscall/vsyscall.c b/arch/sh/kernel/vsyscall/vsyscall.c
index 2aa9438361bc..95f4de0800ec 100644
--- a/arch/sh/kernel/vsyscall/vsyscall.c
+++ b/arch/sh/kernel/vsyscall/vsyscall.c
@@ -18,6 +18,7 @@
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/elf.h> 19#include <linux/elf.h>
20#include <linux/sched.h> 20#include <linux/sched.h>
21#include <linux/err.h>
21 22
22/* 23/*
23 * Should the kernel map a VDSO page into processes and pass its 24 * Should the kernel map a VDSO page into processes and pass its
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index 70da1c8d407e..43f3972a5fb9 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -27,6 +27,7 @@ config CPU_SH4A
27config CPU_SH4AL_DSP 27config CPU_SH4AL_DSP
28 bool 28 bool
29 select CPU_SH4A 29 select CPU_SH4A
30 select CPU_HAS_DSP
30 31
31config CPU_SUBTYPE_ST40 32config CPU_SUBTYPE_ST40
32 bool 33 bool
@@ -62,15 +63,10 @@ config CPU_SUBTYPE_SH7206
62 63
63# SH-3 Processor Support 64# SH-3 Processor Support
64 65
65config CPU_SUBTYPE_SH7300
66 bool "Support SH7300 processor"
67 select CPU_SH3
68
69config CPU_SUBTYPE_SH7705 66config CPU_SUBTYPE_SH7705
70 bool "Support SH7705 processor" 67 bool "Support SH7705 processor"
71 select CPU_SH3 68 select CPU_SH3
72 select CPU_HAS_IPR_IRQ 69 select CPU_HAS_IPR_IRQ
73 select CPU_HAS_PINT_IRQ
74 70
75config CPU_SUBTYPE_SH7706 71config CPU_SUBTYPE_SH7706
76 bool "Support SH7706 processor" 72 bool "Support SH7706 processor"
@@ -82,7 +78,6 @@ config CPU_SUBTYPE_SH7706
82config CPU_SUBTYPE_SH7707 78config CPU_SUBTYPE_SH7707
83 bool "Support SH7707 processor" 79 bool "Support SH7707 processor"
84 select CPU_SH3 80 select CPU_SH3
85 select CPU_HAS_PINT_IRQ
86 help 81 help
87 Select SH7707 if you have a 60 Mhz SH-3 HD6417707 CPU. 82 Select SH7707 if you have a 60 Mhz SH-3 HD6417707 CPU.
88 83
@@ -97,7 +92,6 @@ config CPU_SUBTYPE_SH7709
97 bool "Support SH7709 processor" 92 bool "Support SH7709 processor"
98 select CPU_SH3 93 select CPU_SH3
99 select CPU_HAS_IPR_IRQ 94 select CPU_HAS_IPR_IRQ
100 select CPU_HAS_PINT_IRQ
101 help 95 help
102 Select SH7709 if you have a 80 Mhz SH-3 HD6417709 CPU. 96 Select SH7709 if you have a 80 Mhz SH-3 HD6417709 CPU.
103 97
@@ -105,6 +99,7 @@ config CPU_SUBTYPE_SH7710
105 bool "Support SH7710 processor" 99 bool "Support SH7710 processor"
106 select CPU_SH3 100 select CPU_SH3
107 select CPU_HAS_IPR_IRQ 101 select CPU_HAS_IPR_IRQ
102 select CPU_HAS_DSP
108 help 103 help
109 Select SH7710 if you have a SH3-DSP SH7710 CPU. 104 Select SH7710 if you have a SH3-DSP SH7710 CPU.
110 105
@@ -112,6 +107,7 @@ config CPU_SUBTYPE_SH7712
112 bool "Support SH7712 processor" 107 bool "Support SH7712 processor"
113 select CPU_SH3 108 select CPU_SH3
114 select CPU_HAS_IPR_IRQ 109 select CPU_HAS_IPR_IRQ
110 select CPU_HAS_DSP
115 help 111 help
116 Select SH7712 if you have a SH3-DSP SH7712 CPU. 112 Select SH7712 if you have a SH3-DSP SH7712 CPU.
117 113
@@ -205,10 +201,6 @@ config CPU_SUBTYPE_SHX3
205 201
206# SH4AL-DSP Processor Support 202# SH4AL-DSP Processor Support
207 203
208config CPU_SUBTYPE_SH73180
209 bool "Support SH73180 processor"
210 select CPU_SH4AL_DSP
211
212config CPU_SUBTYPE_SH7343 204config CPU_SUBTYPE_SH7343
213 bool "Support SH7343 processor" 205 bool "Support SH7343 processor"
214 select CPU_SH4AL_DSP 206 select CPU_SH4AL_DSP
diff --git a/arch/sh/mm/cache-sh4.c b/arch/sh/mm/cache-sh4.c
index 981b04089055..86486326ef1d 100644
--- a/arch/sh/mm/cache-sh4.c
+++ b/arch/sh/mm/cache-sh4.c
@@ -77,16 +77,8 @@ static void __init emit_cache_params(void)
77/* 77/*
78 * SH-4 has virtually indexed and physically tagged cache. 78 * SH-4 has virtually indexed and physically tagged cache.
79 */ 79 */
80
81/* Worst case assumed to be 64k cache, direct-mapped i.e. 4 synonym bits. */
82#define MAX_P3_MUTEXES 16
83
84struct mutex p3map_mutex[MAX_P3_MUTEXES];
85
86void __init p3_cache_init(void) 80void __init p3_cache_init(void)
87{ 81{
88 int i;
89
90 compute_alias(&current_cpu_data.icache); 82 compute_alias(&current_cpu_data.icache);
91 compute_alias(&current_cpu_data.dcache); 83 compute_alias(&current_cpu_data.dcache);
92 84
@@ -106,12 +98,6 @@ void __init p3_cache_init(void)
106 } 98 }
107 99
108 emit_cache_params(); 100 emit_cache_params();
109
110 if (ioremap_page_range(P3SEG, P3SEG + (PAGE_SIZE * 4), 0, PAGE_KERNEL))
111 panic("%s failed.", __FUNCTION__);
112
113 for (i = 0; i < current_cpu_data.dcache.n_aliases; i++)
114 mutex_init(&p3map_mutex[i]);
115} 101}
116 102
117/* 103/*
diff --git a/arch/sh/mm/pg-sh4.c b/arch/sh/mm/pg-sh4.c
index df69da9ca69c..25f5c6f6821d 100644
--- a/arch/sh/mm/pg-sh4.c
+++ b/arch/sh/mm/pg-sh4.c
@@ -2,19 +2,45 @@
2 * arch/sh/mm/pg-sh4.c 2 * arch/sh/mm/pg-sh4.c
3 * 3 *
4 * Copyright (C) 1999, 2000, 2002 Niibe Yutaka 4 * Copyright (C) 1999, 2000, 2002 Niibe Yutaka
5 * Copyright (C) 2002 - 2005 Paul Mundt 5 * Copyright (C) 2002 - 2007 Paul Mundt
6 * 6 *
7 * Released under the terms of the GNU GPL v2.0. 7 * Released under the terms of the GNU GPL v2.0.
8 */ 8 */
9#include <linux/mm.h> 9#include <linux/mm.h>
10#include <linux/mutex.h> 10#include <linux/mutex.h>
11#include <linux/fs.h>
11#include <asm/mmu_context.h> 12#include <asm/mmu_context.h>
12#include <asm/cacheflush.h> 13#include <asm/cacheflush.h>
13 14
14extern struct mutex p3map_mutex[];
15
16#define CACHE_ALIAS (current_cpu_data.dcache.alias_mask) 15#define CACHE_ALIAS (current_cpu_data.dcache.alias_mask)
17 16
17static inline void *kmap_coherent(struct page *page, unsigned long addr)
18{
19 enum fixed_addresses idx;
20 unsigned long vaddr, flags;
21 pte_t pte;
22
23 inc_preempt_count();
24
25 idx = (addr & current_cpu_data.dcache.alias_mask) >> PAGE_SHIFT;
26 vaddr = __fix_to_virt(FIX_CMAP_END - idx);
27 pte = mk_pte(page, PAGE_KERNEL);
28
29 local_irq_save(flags);
30 flush_tlb_one(get_asid(), vaddr);
31 local_irq_restore(flags);
32
33 update_mmu_cache(NULL, vaddr, pte);
34
35 return (void *)vaddr;
36}
37
38static inline void kunmap_coherent(struct page *page)
39{
40 dec_preempt_count();
41 preempt_check_resched();
42}
43
18/* 44/*
19 * clear_user_page 45 * clear_user_page
20 * @to: P1 address 46 * @to: P1 address
@@ -27,25 +53,9 @@ void clear_user_page(void *to, unsigned long address, struct page *page)
27 if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) 53 if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0)
28 clear_page(to); 54 clear_page(to);
29 else { 55 else {
30 unsigned long phys_addr = PHYSADDR(to); 56 void *vto = kmap_coherent(page, address);
31 unsigned long p3_addr = P3SEG + (address & CACHE_ALIAS); 57 __clear_user_page(vto, to);
32 pgd_t *pgd = pgd_offset_k(p3_addr); 58 kunmap_coherent(vto);
33 pud_t *pud = pud_offset(pgd, p3_addr);
34 pmd_t *pmd = pmd_offset(pud, p3_addr);
35 pte_t *pte = pte_offset_kernel(pmd, p3_addr);
36 pte_t entry;
37 unsigned long flags;
38
39 entry = pfn_pte(phys_addr >> PAGE_SHIFT, PAGE_KERNEL);
40 mutex_lock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
41 set_pte(pte, entry);
42 local_irq_save(flags);
43 flush_tlb_one(get_asid(), p3_addr);
44 local_irq_restore(flags);
45 update_mmu_cache(NULL, p3_addr, entry);
46 __clear_user_page((void *)p3_addr, to);
47 pte_clear(&init_mm, p3_addr, pte);
48 mutex_unlock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
49 } 59 }
50} 60}
51 61
@@ -63,25 +73,9 @@ void copy_user_page(void *to, void *from, unsigned long address,
63 if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) 73 if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0)
64 copy_page(to, from); 74 copy_page(to, from);
65 else { 75 else {
66 unsigned long phys_addr = PHYSADDR(to); 76 void *vfrom = kmap_coherent(page, address);
67 unsigned long p3_addr = P3SEG + (address & CACHE_ALIAS); 77 __copy_user_page(vfrom, from, to);
68 pgd_t *pgd = pgd_offset_k(p3_addr); 78 kunmap_coherent(vfrom);
69 pud_t *pud = pud_offset(pgd, p3_addr);
70 pmd_t *pmd = pmd_offset(pud, p3_addr);
71 pte_t *pte = pte_offset_kernel(pmd, p3_addr);
72 pte_t entry;
73 unsigned long flags;
74
75 entry = pfn_pte(phys_addr >> PAGE_SHIFT, PAGE_KERNEL);
76 mutex_lock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
77 set_pte(pte, entry);
78 local_irq_save(flags);
79 flush_tlb_one(get_asid(), p3_addr);
80 local_irq_restore(flags);
81 update_mmu_cache(NULL, p3_addr, entry);
82 __copy_user_page((void *)p3_addr, from, to);
83 pte_clear(&init_mm, p3_addr, pte);
84 mutex_unlock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
85 } 79 }
86} 80}
87 81
diff --git a/arch/sh/tools/mach-types b/arch/sh/tools/mach-types
index 4b5e9305092e..439bfe3d29af 100644
--- a/arch/sh/tools/mach-types
+++ b/arch/sh/tools/mach-types
@@ -8,12 +8,10 @@
8SE SH_SOLUTION_ENGINE 8SE SH_SOLUTION_ENGINE
97751SE SH_7751_SOLUTION_ENGINE 97751SE SH_7751_SOLUTION_ENGINE
107722SE SH_7722_SOLUTION_ENGINE 107722SE SH_7722_SOLUTION_ENGINE
117300SE SH_7300_SOLUTION_ENGINE
127343SE SH_7343_SOLUTION_ENGINE 117343SE SH_7343_SOLUTION_ENGINE
137206SE SH_7206_SOLUTION_ENGINE 127206SE SH_7206_SOLUTION_ENGINE
147619SE SH_7619_SOLUTION_ENGINE 137619SE SH_7619_SOLUTION_ENGINE
157780SE SH_7780_SOLUTION_ENGINE 147780SE SH_7780_SOLUTION_ENGINE
1673180SE SH_73180_SOLUTION_ENGINE
177751SYSTEMH SH_7751_SYSTEMH 157751SYSTEMH SH_7751_SYSTEMH
18HP6XX SH_HP6XX 16HP6XX SH_HP6XX
19HD64461 HD64461 17HD64461 HD64461