diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-05-15 15:38:30 +0900 |
---|---|---|
committer | Paul Mundt <lethal@hera.kernel.org> | 2007-06-08 02:43:40 +0000 |
commit | fd8f20e8e2f8f1d9201086bff444c8d35f0a6a45 (patch) | |
tree | 0823660fdd2ec53c6dede452d0802f54119bbde6 /arch | |
parent | 82f81f4784479df17a80caff4a7156da0a2f7dea (diff) | |
download | lwn-fd8f20e8e2f8f1d9201086bff444c8d35f0a6a45.tar.gz lwn-fd8f20e8e2f8f1d9201086bff444c8d35f0a6a45.zip |
sh: Rip out special unknown machvec.
This kills off the BareCPU board as a "special" machvec, rather,
we leave this as a default for when no other vector is available,
or when we want to use it in combination with other vectors for
testing with generic ops. As sh_mv is copied out anyways (or
overloaded when an alternate vector is explicitly selected), this
doesn't consume any additional memory.
The generic machvec can be forcibly selected with sh_mv=generic,
or by not having any other boards enabled.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/Kconfig | 14 | ||||
-rw-r--r-- | arch/sh/Makefile | 1 | ||||
-rw-r--r-- | arch/sh/boards/unknown/Makefile | 6 | ||||
-rw-r--r-- | arch/sh/boards/unknown/setup.c | 20 | ||||
-rw-r--r-- | arch/sh/kernel/cf-enabler.c | 6 | ||||
-rw-r--r-- | arch/sh/kernel/machvec.c | 12 | ||||
-rw-r--r-- | arch/sh/kernel/setup.c | 2 |
7 files changed, 13 insertions, 48 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 4c9d8fc59fe2..6c42c8ed9781 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -381,18 +381,6 @@ config SH_LBOX_RE2 help Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2. -config SH_UNKNOWN - bool "BareCPU" - help - "Bare CPU" aka "unknown" means an SH-based system which is not one - of the specific ones mentioned above, which means you need to enter - all sorts of stuff like CONFIG_MEMORY_START because the config - system doesn't already know what it is. You get a machine vector - without any platform-specific code in it, so things like the RTC may - not work. - - This option is for the early stages of porting to a new machine. - endmenu source "arch/sh/boards/renesas/hs7751rvoip/Kconfig" @@ -401,7 +389,7 @@ source "arch/sh/boards/renesas/r7780rp/Kconfig" config CF_ENABLER bool "Compact Flash Enabler support" - depends on SH_SOLUTION_ENGINE || SH_UNKNOWN || SH_SH03 + depends on SH_SOLUTION_ENGINE || SH_SH03 ---help--- Compact Flash is a small, removable mass storage device introduced in 1994 originally as a PCMCIA device. If you say `Y' here, you diff --git a/arch/sh/Makefile b/arch/sh/Makefile index c7323e7dce67..ec2d82eda90d 100644 --- a/arch/sh/Makefile +++ b/arch/sh/Makefile @@ -113,7 +113,6 @@ machdir-$(CONFIG_SH_SHMIN) += shmin machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) += se/7206 machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) += se/7619 machdir-$(CONFIG_SH_LBOX_RE2) += lboxre2 -machdir-$(CONFIG_SH_UNKNOWN) += unknown incdir-y := $(notdir $(machdir-y)) diff --git a/arch/sh/boards/unknown/Makefile b/arch/sh/boards/unknown/Makefile deleted file mode 100644 index 7d18f408b0c5..000000000000 --- a/arch/sh/boards/unknown/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# -# Makefile for unknown SH boards -# - -obj-y := setup.o - diff --git a/arch/sh/boards/unknown/setup.c b/arch/sh/boards/unknown/setup.c deleted file mode 100644 index f975a1f9094b..000000000000 --- a/arch/sh/boards/unknown/setup.c +++ /dev/null @@ -1,20 +0,0 @@ -/* - * linux/arch/sh/boards/unknown/setup.c - * - * Copyright (C) 2002 Paul Mundt - * - * May be copied or modified under the terms of the GNU General Public - * License. See linux/COPYING for more information. - * - * Setup code for an unknown machine (internal peripherals only) - * - * This is the simplest of all boards, and serves only as a quick and dirty - * method to start debugging a new board during bring-up until proper board - * setup code is written. - */ -#include <linux/init.h> -#include <asm/machvec.h> - -static struct sh_machine_vector mv_unknown __initmv = { - .mv_name = "Unknown", -}; diff --git a/arch/sh/kernel/cf-enabler.c b/arch/sh/kernel/cf-enabler.c index ebc73b85094a..1c3b99642e1c 100644 --- a/arch/sh/kernel/cf-enabler.c +++ b/arch/sh/kernel/cf-enabler.c @@ -75,11 +75,7 @@ static int __init cf_init_default(void) #if defined(CONFIG_CPU_SH4) allocate_cf_area(); #endif -#if defined(CONFIG_SH_UNKNOWN) - /* This should be done in each board's init_xxx_irq. */ - make_imask_irq(14); - disable_irq(14); -#endif + return 0; } diff --git a/arch/sh/kernel/machvec.c b/arch/sh/kernel/machvec.c index e8121de5faa4..23c5948f0124 100644 --- a/arch/sh/kernel/machvec.c +++ b/arch/sh/kernel/machvec.c @@ -35,6 +35,8 @@ static struct sh_machine_vector * __init get_mv_byname(const char *name) return NULL; } +static unsigned int __initdata machvec_selected; + static int __init early_parse_mv(char *from) { char mv_name[MV_NAME_SIZE] = ""; @@ -55,9 +57,15 @@ static int __init early_parse_mv(char *from) mv_name[mv_len] = '\0'; from = mv_end; + machvec_selected = 1; + + /* Boot with the generic vector */ + if (strcmp(mv_name, "generic") == 0) + return 0; + mvp = get_mv_byname(mv_name); if (unlikely(!mvp)) { - printk("Available vectors:\n\n\t"); + printk("Available vectors:\n\n\t'%s', ", sh_mv.mv_name); for_each_mv(mvp) printk("'%s', ", mvp->mv_name); printk("\n\n"); @@ -76,7 +84,7 @@ void __init sh_mv_setup(void) * Only overload the machvec if one hasn't been selected on * the command line with sh_mv= */ - if (strcmp(sh_mv.mv_name, "Unknown") != 0) { + if (!machvec_selected) { unsigned long machvec_size; machvec_size = ((unsigned long)&__machvec_end - diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 55ed653c7a67..6f1ea9b33374 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c @@ -47,7 +47,7 @@ struct sh_cpuinfo boot_cpu_data = { CPU_SH_NONE, 10000000, }; * The machine vector. First entry in .machvec.init, or clobbered by * sh_mv= on the command line, prior to .machvec.init teardown. */ -struct sh_machine_vector sh_mv = { .mv_name = "Unknown", }; +struct sh_machine_vector sh_mv = { .mv_name = "generic", }; #ifdef CONFIG_VT struct screen_info screen_info; |