diff options
author | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 18:17:31 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 18:17:31 +0900 |
commit | 2c7834a6f15fe6c50ed4766f1bb6f9183b9e2740 (patch) | |
tree | 2dee1fc4b2cd69d8e7f07e0462c57c98261a9fcf /arch/sh/boards/hp6xx | |
parent | bc8fb5d0471473f775378d09db712dcb8eeece75 (diff) | |
download | blackbird-op-linux-2c7834a6f15fe6c50ed4766f1bb6f9183b9e2740.tar.gz blackbird-op-linux-2c7834a6f15fe6c50ed4766f1bb6f9183b9e2740.zip |
sh: machvec rework.
Some more machvec overhauling and setup code cleanup. Kill off
get_system_type() and platform_setup(), we can do these both
through the machvec. While we're add it, kill off more useless
mach.c's and drop some legacy cruft from setup.c.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/boards/hp6xx')
-rw-r--r-- | arch/sh/boards/hp6xx/Makefile | 4 | ||||
-rw-r--r-- | arch/sh/boards/hp6xx/setup.c | 47 |
2 files changed, 40 insertions, 11 deletions
diff --git a/arch/sh/boards/hp6xx/Makefile b/arch/sh/boards/hp6xx/Makefile index fdf98ffcf437..ff1b7f5b4e91 100644 --- a/arch/sh/boards/hp6xx/Makefile +++ b/arch/sh/boards/hp6xx/Makefile @@ -2,8 +2,6 @@ # Makefile for the HP6xx specific parts of the kernel # -obj-y := mach.o setup.o +obj-y := setup.o obj-$(CONFIG_PM) += pm.o pm_wakeup.o obj-$(CONFIG_APM) += hp6xx_apm.o - - diff --git a/arch/sh/boards/hp6xx/setup.c b/arch/sh/boards/hp6xx/setup.c index 629016bec809..60ab17ad6054 100644 --- a/arch/sh/boards/hp6xx/setup.c +++ b/arch/sh/boards/hp6xx/setup.c @@ -19,12 +19,7 @@ #define SCPCR 0xa4000116 #define SCPDR 0xa4000136 -const char *get_system_type(void) -{ - return "HP6xx"; -} - -int __init platform_setup(void) +static void __init hp6xx_setup(char **cmdline_p) { u8 v8; u16 v; @@ -64,6 +59,42 @@ int __init platform_setup(void) v &= ~SCPCR_TS_MASK; v |= SCPCR_TS_ENABLE; ctrl_outw(v, SCPCR); - - return 0; } + +/* + * XXX: This is stupid, we should have a generic machine vector for the cchips + * and just wrap the platform setup code in to this, as it's the only thing + * that ends up being different. + */ +struct sh_machine_vector mv_hp6xx __initmv = { + .mv_name = "hp6xx", + .mv_setup = hp6xx_setup, + .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM, + + .mv_inb = hd64461_inb, + .mv_inw = hd64461_inw, + .mv_inl = hd64461_inl, + .mv_outb = hd64461_outb, + .mv_outw = hd64461_outw, + .mv_outl = hd64461_outl, + + .mv_inb_p = hd64461_inb_p, + .mv_inw_p = hd64461_inw, + .mv_inl_p = hd64461_inl, + .mv_outb_p = hd64461_outb_p, + .mv_outw_p = hd64461_outw, + .mv_outl_p = hd64461_outl, + + .mv_insb = hd64461_insb, + .mv_insw = hd64461_insw, + .mv_insl = hd64461_insl, + .mv_outsb = hd64461_outsb, + .mv_outsw = hd64461_outsw, + .mv_outsl = hd64461_outsl, + + .mv_readw = hd64461_readw, + .mv_writew = hd64461_writew, + + .mv_irq_demux = hd64461_irq_demux, +}; +ALIAS_MV(hp6xx) |