diff options
author | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 05:17:31 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 05:17:31 -0400 |
commit | 2c7834a6f15fe6c50ed4766f1bb6f9183b9e2740 (patch) | |
tree | 2dee1fc4b2cd69d8e7f07e0462c57c98261a9fcf | |
parent | bc8fb5d0471473f775378d09db712dcb8eeece75 (diff) |
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>
31 files changed, 481 insertions, 776 deletions
diff --git a/arch/sh/boards/bigsur/setup.c b/arch/sh/boards/bigsur/setup.c index dfeede9da50..9711c20fc9e 100644 --- a/arch/sh/boards/bigsur/setup.c +++ b/arch/sh/boards/bigsur/setup.c | |||
@@ -41,31 +41,7 @@ | |||
41 | // Big Sur Init Routines | 41 | // Big Sur Init Routines |
42 | /*===========================================================*/ | 42 | /*===========================================================*/ |
43 | 43 | ||
44 | const char *get_system_type(void) | 44 | static void __init bigsur_setup(char **cmdline_p) |
45 | { | ||
46 | return "Big Sur"; | ||
47 | } | ||
48 | |||
49 | /* | ||
50 | * The Machine Vector | ||
51 | */ | ||
52 | extern void heartbeat_bigsur(void); | ||
53 | extern void init_bigsur_IRQ(void); | ||
54 | |||
55 | struct sh_machine_vector mv_bigsur __initmv = { | ||
56 | .mv_nr_irqs = NR_IRQS, // Defined in <asm/irq.h> | ||
57 | |||
58 | .mv_isa_port2addr = bigsur_isa_port2addr, | ||
59 | .mv_irq_demux = bigsur_irq_demux, | ||
60 | |||
61 | .mv_init_irq = init_bigsur_IRQ, | ||
62 | #ifdef CONFIG_HEARTBEAT | ||
63 | .mv_heartbeat = heartbeat_bigsur, | ||
64 | #endif | ||
65 | }; | ||
66 | ALIAS_MV(bigsur) | ||
67 | |||
68 | int __init platform_setup(void) | ||
69 | { | 45 | { |
70 | /* Mask all 2nd level IRQ's */ | 46 | /* Mask all 2nd level IRQ's */ |
71 | outb(-1,BIGSUR_IMR0); | 47 | outb(-1,BIGSUR_IMR0); |
@@ -89,7 +65,24 @@ int __init platform_setup(void) | |||
89 | outw(1, BIGSUR_ETHR+0xe); | 65 | outw(1, BIGSUR_ETHR+0xe); |
90 | /* set the IO port to BIGSUR_ETHER_IOPORT */ | 66 | /* set the IO port to BIGSUR_ETHER_IOPORT */ |
91 | outw(BIGSUR_ETHER_IOPORT<<3, BIGSUR_ETHR+0x2); | 67 | outw(BIGSUR_ETHER_IOPORT<<3, BIGSUR_ETHR+0x2); |
92 | |||
93 | return 0; | ||
94 | } | 68 | } |
95 | 69 | ||
70 | /* | ||
71 | * The Machine Vector | ||
72 | */ | ||
73 | extern void heartbeat_bigsur(void); | ||
74 | extern void init_bigsur_IRQ(void); | ||
75 | |||
76 | struct sh_machine_vector mv_bigsur __initmv = { | ||
77 | .mv_name = "Big Sur", | ||
78 | .mv_setup = bigsur_setup, | ||
79 | |||
80 | .mv_isa_port2addr = bigsur_isa_port2addr, | ||
81 | .mv_irq_demux = bigsur_irq_demux, | ||
82 | |||
83 | .mv_init_irq = init_bigsur_IRQ, | ||
84 | #ifdef CONFIG_HEARTBEAT | ||
85 | .mv_heartbeat = heartbeat_bigsur, | ||
86 | #endif | ||
87 | }; | ||
88 | ALIAS_MV(bigsur) | ||
diff --git a/arch/sh/boards/dreamcast/setup.c b/arch/sh/boards/dreamcast/setup.c index a00ac94beb0..f13017eeeb2 100644 --- a/arch/sh/boards/dreamcast/setup.c +++ b/arch/sh/boards/dreamcast/setup.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
23 | #include <linux/irq.h> | 23 | #include <linux/irq.h> |
24 | #include <linux/device.h> | 24 | #include <linux/device.h> |
25 | |||
26 | #include <asm/io.h> | 25 | #include <asm/io.h> |
27 | #include <asm/irq.h> | 26 | #include <asm/irq.h> |
28 | #include <asm/rtc.h> | 27 | #include <asm/rtc.h> |
@@ -37,24 +36,7 @@ extern int systemasic_irq_demux(int); | |||
37 | void *dreamcast_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t); | 36 | void *dreamcast_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t); |
38 | int dreamcast_consistent_free(struct device *, size_t, void *, dma_addr_t); | 37 | int dreamcast_consistent_free(struct device *, size_t, void *, dma_addr_t); |
39 | 38 | ||
40 | const char *get_system_type(void) | 39 | static void __init dreamcast_setup(char **cmdline_p) |
41 | { | ||
42 | return "Sega Dreamcast"; | ||
43 | } | ||
44 | |||
45 | struct sh_machine_vector mv_dreamcast __initmv = { | ||
46 | .mv_nr_irqs = NR_IRQS, | ||
47 | |||
48 | .mv_irq_demux = systemasic_irq_demux, | ||
49 | |||
50 | #ifdef CONFIG_PCI | ||
51 | .mv_consistent_alloc = dreamcast_consistent_alloc, | ||
52 | .mv_consistent_free = dreamcast_consistent_free, | ||
53 | #endif | ||
54 | }; | ||
55 | ALIAS_MV(dreamcast) | ||
56 | |||
57 | int __init platform_setup(void) | ||
58 | { | 40 | { |
59 | int i; | 41 | int i; |
60 | 42 | ||
@@ -76,6 +58,16 @@ int __init platform_setup(void) | |||
76 | if (gapspci_init() < 0) | 58 | if (gapspci_init() < 0) |
77 | printk(KERN_WARNING "GAPSPCI was not detected.\n"); | 59 | printk(KERN_WARNING "GAPSPCI was not detected.\n"); |
78 | #endif | 60 | #endif |
79 | |||
80 | return 0; | ||
81 | } | 61 | } |
62 | |||
63 | struct sh_machine_vector mv_dreamcast __initmv = { | ||
64 | .mv_name = "Sega Dreamcast", | ||
65 | .mv_setup = dreamcast_setup, | ||
66 | .mv_irq_demux = systemasic_irq_demux, | ||
67 | |||
68 | #ifdef CONFIG_PCI | ||
69 | .mv_consistent_alloc = dreamcast_consistent_alloc, | ||
70 | .mv_consistent_free = dreamcast_consistent_free, | ||
71 | #endif | ||
72 | }; | ||
73 | ALIAS_MV(dreamcast) | ||
diff --git a/arch/sh/boards/ec3104/setup.c b/arch/sh/boards/ec3104/setup.c index 4b3ef16a0e9..902bc975a13 100644 --- a/arch/sh/boards/ec3104/setup.c +++ b/arch/sh/boards/ec3104/setup.c | |||
@@ -21,22 +21,36 @@ | |||
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | |||
25 | #include <asm/io.h> | 24 | #include <asm/io.h> |
26 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
27 | #include <asm/machvec.h> | 26 | #include <asm/machvec.h> |
28 | #include <asm/mach/ec3104.h> | 27 | #include <asm/mach/ec3104.h> |
29 | 28 | ||
30 | const char *get_system_type(void) | 29 | static void __init ec3104_setup(char **cmdline_p) |
31 | { | 30 | { |
32 | return "EC3104"; | 31 | char str[8]; |
32 | int i; | ||
33 | |||
34 | for (i=0; i<8; i++) | ||
35 | str[i] = ctrl_readb(EC3104_BASE + i); | ||
36 | |||
37 | for (i = EC3104_IRQBASE; i < EC3104_IRQBASE + 32; i++) | ||
38 | irq_desc[i].handler = &ec3104_int; | ||
39 | |||
40 | printk("initializing EC3104 \"%.8s\" at %08x, IRQ %d, IRQ base %d\n", | ||
41 | str, EC3104_BASE, EC3104_IRQ, EC3104_IRQBASE); | ||
42 | |||
43 | /* mask all interrupts. this should have been done by the boot | ||
44 | * loader for us but we want to be sure ... */ | ||
45 | ctrl_writel(0xffffffff, EC3104_IMR); | ||
33 | } | 46 | } |
34 | 47 | ||
35 | /* | 48 | /* |
36 | * The Machine Vector | 49 | * The Machine Vector |
37 | */ | 50 | */ |
38 | |||
39 | struct sh_machine_vector mv_ec3104 __initmv = { | 51 | struct sh_machine_vector mv_ec3104 __initmv = { |
52 | .mv_name = "EC3104", | ||
53 | .mv_setup = ec3104_setup, | ||
40 | .mv_nr_irqs = 96, | 54 | .mv_nr_irqs = 96, |
41 | 55 | ||
42 | .mv_inb = ec3104_inb, | 56 | .mv_inb = ec3104_inb, |
@@ -48,31 +62,4 @@ struct sh_machine_vector mv_ec3104 __initmv = { | |||
48 | 62 | ||
49 | .mv_irq_demux = ec3104_irq_demux, | 63 | .mv_irq_demux = ec3104_irq_demux, |
50 | }; | 64 | }; |
51 | |||
52 | ALIAS_MV(ec3104) | 65 | ALIAS_MV(ec3104) |
53 | |||
54 | int __init platform_setup(void) | ||
55 | { | ||
56 | char str[8]; | ||
57 | int i; | ||
58 | |||
59 | if (0) | ||
60 | return 0; | ||
61 | |||
62 | for (i=0; i<8; i++) | ||
63 | str[i] = ctrl_readb(EC3104_BASE + i); | ||
64 | |||
65 | for (i = EC3104_IRQBASE; i < EC3104_IRQBASE + 32; i++) | ||
66 | irq_desc[i].chip = &ec3104_int; | ||
67 | |||
68 | printk("initializing EC3104 \"%.8s\" at %08x, IRQ %d, IRQ base %d\n", | ||
69 | str, EC3104_BASE, EC3104_IRQ, EC3104_IRQBASE); | ||
70 | |||
71 | |||
72 | /* mask all interrupts. this should have been done by the boot | ||
73 | * loader for us but we want to be sure ... */ | ||
74 | ctrl_writel(0xffffffff, EC3104_IMR); | ||
75 | |||
76 | return 0; | ||
77 | } | ||
78 | |||
diff --git a/arch/sh/boards/hp6xx/Makefile b/arch/sh/boards/hp6xx/Makefile index fdf98ffcf43..ff1b7f5b4e9 100644 --- a/arch/sh/boards/hp6xx/Makefile +++ b/arch/sh/boards/hp6xx/Makefile | |||
@@ -2,8 +2,6 @@ | |||
2 | # Makefile for the HP6xx specific parts of the kernel | 2 | # Makefile for the HP6xx specific parts of the kernel |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := mach.o setup.o | 5 | obj-y := setup.o |
6 | obj-$(CONFIG_PM) += pm.o pm_wakeup.o | 6 | obj-$(CONFIG_PM) += pm.o pm_wakeup.o |
7 | obj-$(CONFIG_APM) += hp6xx_apm.o | 7 | obj-$(CONFIG_APM) += hp6xx_apm.o |
8 | |||
9 | |||
diff --git a/arch/sh/boards/hp6xx/setup.c b/arch/sh/boards/hp6xx/setup.c index 629016bec80..60ab17ad605 100644 --- a/arch/sh/boards/hp6xx/setup.c +++ b/arch/sh/boards/hp6xx/setup.c | |||
@@ -19,12 +19,7 @@ | |||
19 | #define SCPCR 0xa4000116 | 19 | #define SCPCR 0xa4000116 |
20 | #define SCPDR 0xa4000136 | 20 | #define SCPDR 0xa4000136 |
21 | 21 | ||
22 | const char *get_system_type(void) | 22 | static void __init hp6xx_setup(char **cmdline_p) |
23 | { | ||
24 | return "HP6xx"; | ||
25 | } | ||
26 | |||
27 | int __init platform_setup(void) | ||
28 | { | 23 | { |
29 | u8 v8; | 24 | u8 v8; |
30 | u16 v; | 25 | u16 v; |
@@ -64,6 +59,42 @@ int __init platform_setup(void) | |||
64 | v &= ~SCPCR_TS_MASK; | 59 | v &= ~SCPCR_TS_MASK; |
65 | v |= SCPCR_TS_ENABLE; | 60 | v |= SCPCR_TS_ENABLE; |
66 | ctrl_outw(v, SCPCR); | 61 | ctrl_outw(v, SCPCR); |
67 | |||
68 | return 0; | ||
69 | } | 62 | } |
63 | |||
64 | /* | ||
65 | * XXX: This is stupid, we should have a generic machine vector for the cchips | ||
66 | * and just wrap the platform setup code in to this, as it's the only thing | ||
67 | * that ends up being different. | ||
68 | */ | ||
69 | struct sh_machine_vector mv_hp6xx __initmv = { | ||
70 | .mv_name = "hp6xx", | ||
71 | .mv_setup = hp6xx_setup, | ||
72 | .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM, | ||
73 | |||
74 | .mv_inb = hd64461_inb, | ||
75 | .mv_inw = hd64461_inw, | ||
76 | .mv_inl = hd64461_inl, | ||
77 | .mv_outb = hd64461_outb, | ||
78 | .mv_outw = hd64461_outw, | ||
79 | .mv_outl = hd64461_outl, | ||
80 | |||
81 | .mv_inb_p = hd64461_inb_p, | ||
82 | .mv_inw_p = hd64461_inw, | ||
83 | .mv_inl_p = hd64461_inl, | ||
84 | .mv_outb_p = hd64461_outb_p, | ||
85 | .mv_outw_p = hd64461_outw, | ||
86 | .mv_outl_p = hd64461_outl, | ||
87 | |||
88 | .mv_insb = hd64461_insb, | ||
89 | .mv_insw = hd64461_insw, | ||
90 | .mv_insl = hd64461_insl, | ||
91 | .mv_outsb = hd64461_outsb, | ||
92 | .mv_outsw = hd64461_outsw, | ||
93 | .mv_outsl = hd64461_outsl, | ||
94 | |||
95 | .mv_readw = hd64461_readw, | ||
96 | .mv_writew = hd64461_writew, | ||
97 | |||
98 | .mv_irq_demux = hd64461_irq_demux, | ||
99 | }; | ||
100 | ALIAS_MV(hp6xx) | ||
diff --git a/arch/sh/boards/landisk/setup.c b/arch/sh/boards/landisk/setup.c index 3a795cfb1ed..127b9e020e0 100644 --- a/arch/sh/boards/landisk/setup.c +++ b/arch/sh/boards/landisk/setup.c | |||
@@ -69,42 +69,6 @@ static void heartbeat_landisk(void) | |||
69 | landisk_buzzerparam >>= 1; | 69 | landisk_buzzerparam >>= 1; |
70 | } | 70 | } |
71 | 71 | ||
72 | /* | ||
73 | * The Machine Vector | ||
74 | */ | ||
75 | struct sh_machine_vector mv_landisk __initmv = { | ||
76 | .mv_nr_irqs = 72, | ||
77 | .mv_inb = landisk_inb, | ||
78 | .mv_inw = landisk_inw, | ||
79 | .mv_inl = landisk_inl, | ||
80 | .mv_outb = landisk_outb, | ||
81 | .mv_outw = landisk_outw, | ||
82 | .mv_outl = landisk_outl, | ||
83 | .mv_inb_p = landisk_inb_p, | ||
84 | .mv_inw_p = landisk_inw, | ||
85 | .mv_inl_p = landisk_inl, | ||
86 | .mv_outb_p = landisk_outb_p, | ||
87 | .mv_outw_p = landisk_outw, | ||
88 | .mv_outl_p = landisk_outl, | ||
89 | .mv_insb = landisk_insb, | ||
90 | .mv_insw = landisk_insw, | ||
91 | .mv_insl = landisk_insl, | ||
92 | .mv_outsb = landisk_outsb, | ||
93 | .mv_outsw = landisk_outsw, | ||
94 | .mv_outsl = landisk_outsl, | ||
95 | .mv_ioport_map = landisk_ioport_map, | ||
96 | .mv_init_irq = init_landisk_IRQ, | ||
97 | #ifdef CONFIG_HEARTBEAT | ||
98 | .mv_heartbeat = heartbeat_landisk, | ||
99 | #endif | ||
100 | }; | ||
101 | ALIAS_MV(landisk) | ||
102 | |||
103 | const char *get_system_type(void) | ||
104 | { | ||
105 | return "LANDISK"; | ||
106 | } | ||
107 | |||
108 | static void landisk_power_off(void) | 72 | static void landisk_power_off(void) |
109 | { | 73 | { |
110 | ctrl_outb(0x01, PA_SHUTDOWN); | 74 | ctrl_outb(0x01, PA_SHUTDOWN); |
@@ -132,16 +96,6 @@ static void check_usl5p(void) | |||
132 | } | 96 | } |
133 | } | 97 | } |
134 | 98 | ||
135 | void __init platform_setup(void) | ||
136 | { | ||
137 | landisk_buzzerparam = 0; | ||
138 | check_usl5p(); | ||
139 | |||
140 | printk(KERN_INFO "I-O DATA DEVICE, INC. \"LANDISK Series\" support.\n"); | ||
141 | board_time_init = landisk_time_init; | ||
142 | pm_power_off = landisk_power_off; | ||
143 | } | ||
144 | |||
145 | void *area5_io_base; | 99 | void *area5_io_base; |
146 | void *area6_io_base; | 100 | void *area6_io_base; |
147 | 101 | ||
@@ -176,4 +130,48 @@ static int __init landisk_cf_init(void) | |||
176 | return 0; | 130 | return 0; |
177 | } | 131 | } |
178 | 132 | ||
179 | __initcall(landisk_cf_init); | 133 | static void __init landisk_setup(char **cmdline_p) |
134 | { | ||
135 | device_initcall(landisk_cf_init); | ||
136 | |||
137 | landisk_buzzerparam = 0; | ||
138 | check_usl5p(); | ||
139 | |||
140 | printk(KERN_INFO "I-O DATA DEVICE, INC. \"LANDISK Series\" support.\n"); | ||
141 | |||
142 | board_time_init = landisk_time_init; | ||
143 | pm_power_off = landisk_power_off; | ||
144 | } | ||
145 | |||
146 | /* | ||
147 | * The Machine Vector | ||
148 | */ | ||
149 | struct sh_machine_vector mv_landisk __initmv = { | ||
150 | .mv_name = "LANDISK", | ||
151 | .mv_setup = landisk_setup, | ||
152 | .mv_nr_irqs = 72, | ||
153 | .mv_inb = landisk_inb, | ||
154 | .mv_inw = landisk_inw, | ||
155 | .mv_inl = landisk_inl, | ||
156 | .mv_outb = landisk_outb, | ||
157 | .mv_outw = landisk_outw, | ||
158 | .mv_outl = landisk_outl, | ||
159 | .mv_inb_p = landisk_inb_p, | ||
160 | .mv_inw_p = landisk_inw, | ||
161 | .mv_inl_p = landisk_inl, | ||
162 | .mv_outb_p = landisk_outb_p, | ||
163 | .mv_outw_p = landisk_outw, | ||
164 | .mv_outl_p = landisk_outl, | ||
165 | .mv_insb = landisk_insb, | ||
166 | .mv_insw = landisk_insw, | ||
167 | .mv_insl = landisk_insl, | ||
168 | .mv_outsb = landisk_outsb, | ||
169 | .mv_outsw = landisk_outsw, | ||
170 | .mv_outsl = landisk_outsl, | ||
171 | .mv_ioport_map = landisk_ioport_map, | ||
172 | .mv_init_irq = init_landisk_IRQ, | ||
173 | #ifdef CONFIG_HEARTBEAT | ||
174 | .mv_heartbeat = heartbeat_landisk, | ||
175 | #endif | ||
176 | }; | ||
177 | ALIAS_MV(landisk) | ||
diff --git a/arch/sh/boards/mpc1211/setup.c b/arch/sh/boards/mpc1211/setup.c index e9c8ff221dd..8eb5d430397 100644 --- a/arch/sh/boards/mpc1211/setup.c +++ b/arch/sh/boards/mpc1211/setup.c | |||
@@ -10,14 +10,12 @@ | |||
10 | #include <linux/hdreg.h> | 10 | #include <linux/hdreg.h> |
11 | #include <linux/ide.h> | 11 | #include <linux/ide.h> |
12 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
13 | |||
14 | #include <asm/io.h> | 13 | #include <asm/io.h> |
15 | #include <asm/machvec.h> | 14 | #include <asm/machvec.h> |
16 | #include <asm/mpc1211/mpc1211.h> | 15 | #include <asm/mpc1211/mpc1211.h> |
17 | #include <asm/mpc1211/pci.h> | 16 | #include <asm/mpc1211/pci.h> |
18 | #include <asm/mpc1211/m1543c.h> | 17 | #include <asm/mpc1211/m1543c.h> |
19 | 18 | ||
20 | |||
21 | /* ALI15X3 SMBus address offsets */ | 19 | /* ALI15X3 SMBus address offsets */ |
22 | #define SMBHSTSTS (0 + 0x3100) | 20 | #define SMBHSTSTS (0 + 0x3100) |
23 | #define SMBHSTCNT (1 + 0x3100) | 21 | #define SMBHSTCNT (1 + 0x3100) |
@@ -50,11 +48,6 @@ | |||
50 | #define ALI15X3_STS_TERM 0x80 /* terminated by abort */ | 48 | #define ALI15X3_STS_TERM 0x80 /* terminated by abort */ |
51 | #define ALI15X3_STS_ERR 0xE0 /* all the bad error bits */ | 49 | #define ALI15X3_STS_ERR 0xE0 /* all the bad error bits */ |
52 | 50 | ||
53 | const char *get_system_type(void) | ||
54 | { | ||
55 | return "Interface MPC-1211(CTP/PCI/MPC-SH02)"; | ||
56 | } | ||
57 | |||
58 | static void __init pci_write_config(unsigned long busNo, | 51 | static void __init pci_write_config(unsigned long busNo, |
59 | unsigned long devNo, | 52 | unsigned long devNo, |
60 | unsigned long fncNo, | 53 | unsigned long fncNo, |
@@ -205,7 +198,7 @@ int mpc1211_irq_demux(int irq) | |||
205 | return irq; | 198 | return irq; |
206 | } | 199 | } |
207 | 200 | ||
208 | void __init init_mpc1211_IRQ(void) | 201 | static void __init init_mpc1211_IRQ(void) |
209 | { | 202 | { |
210 | int i; | 203 | int i; |
211 | /* | 204 | /* |
@@ -289,26 +282,10 @@ static int put_smb_blk(unsigned char *p, int address, int command, int no) | |||
289 | return 0; | 282 | return 0; |
290 | } | 283 | } |
291 | 284 | ||
292 | /* | ||
293 | * The Machine Vector | ||
294 | */ | ||
295 | |||
296 | struct sh_machine_vector mv_mpc1211 __initmv = { | ||
297 | .mv_nr_irqs = 48, | ||
298 | .mv_irq_demux = mpc1211_irq_demux, | ||
299 | .mv_init_irq = init_mpc1211_IRQ, | ||
300 | |||
301 | #ifdef CONFIG_HEARTBEAT | ||
302 | .mv_heartbeat = heartbeat_mpc1211, | ||
303 | #endif | ||
304 | }; | ||
305 | |||
306 | ALIAS_MV(mpc1211) | ||
307 | |||
308 | /* arch/sh/boards/mpc1211/rtc.c */ | 285 | /* arch/sh/boards/mpc1211/rtc.c */ |
309 | void mpc1211_time_init(void); | 286 | void mpc1211_time_init(void); |
310 | 287 | ||
311 | int __init platform_setup(void) | 288 | static void __init mpc1211_setup(char **cmdline_p) |
312 | { | 289 | { |
313 | unsigned char spd_buf[128]; | 290 | unsigned char spd_buf[128]; |
314 | 291 | ||
@@ -332,3 +309,18 @@ int __init platform_setup(void) | |||
332 | return 0; | 309 | return 0; |
333 | } | 310 | } |
334 | 311 | ||
312 | /* | ||
313 | * The Machine Vector | ||
314 | */ | ||
315 | struct sh_machine_vector mv_mpc1211 __initmv = { | ||
316 | .mv_name = "Interface MPC-1211(CTP/PCI/MPC-SH02)", | ||
317 | .mv_setup = mpc1211_setup, | ||
318 | .mv_nr_irqs = 48, | ||
319 | .mv_irq_demux = mpc1211_irq_demux, | ||
320 | .mv_init_irq = init_mpc1211_IRQ, | ||
321 | |||
322 | #ifdef CONFIG_HEARTBEAT | ||
323 | .mv_heartbeat = heartbeat_mpc1211, | ||
324 | #endif | ||
325 | }; | ||
326 | ALIAS_MV(mpc1211) | ||
diff --git a/arch/sh/boards/renesas/edosk7705/setup.c b/arch/sh/boards/renesas/edosk7705/setup.c index ba143fa4afa..ec5be010771 100644 --- a/arch/sh/boards/renesas/edosk7705/setup.c +++ b/arch/sh/boards/renesas/edosk7705/setup.c | |||
@@ -8,19 +8,21 @@ | |||
8 | * Modified for edosk7705 development | 8 | * Modified for edosk7705 development |
9 | * board by S. Dunn, 2003. | 9 | * board by S. Dunn, 2003. |
10 | */ | 10 | */ |
11 | |||
12 | #include <linux/init.h> | 11 | #include <linux/init.h> |
13 | #include <asm/machvec.h> | 12 | #include <asm/machvec.h> |
14 | #include <asm/machvec_init.h> | ||
15 | #include <asm/edosk7705/io.h> | 13 | #include <asm/edosk7705/io.h> |
16 | 14 | ||
17 | static void init_edosk7705(void); | 15 | static void __init sh_edosk7705_init_irq(void) |
16 | { | ||
17 | /* This is the Ethernet interrupt */ | ||
18 | make_imask_irq(0x09); | ||
19 | } | ||
18 | 20 | ||
19 | /* | 21 | /* |
20 | * The Machine Vector | 22 | * The Machine Vector |
21 | */ | 23 | */ |
22 | |||
23 | struct sh_machine_vector mv_edosk7705 __initmv = { | 24 | struct sh_machine_vector mv_edosk7705 __initmv = { |
25 | .mv_name = "EDOSK7705", | ||
24 | .mv_nr_irqs = 80, | 26 | .mv_nr_irqs = 80, |
25 | 27 | ||
26 | .mv_inb = sh_edosk7705_inb, | 28 | .mv_inb = sh_edosk7705_inb, |
@@ -37,23 +39,6 @@ struct sh_machine_vector mv_edosk7705 __initmv = { | |||
37 | .mv_outsl = sh_edosk7705_outsl, | 39 | .mv_outsl = sh_edosk7705_outsl, |
38 | 40 | ||
39 | .mv_isa_port2addr = sh_edosk7705_isa_port2addr, | 41 | .mv_isa_port2addr = sh_edosk7705_isa_port2addr, |
40 | .mv_init_irq = init_edosk7705, | 42 | .mv_init_irq = sh_edosk7705_init_irq, |
41 | }; | 43 | }; |
42 | ALIAS_MV(edosk7705) | 44 | ALIAS_MV(edosk7705) |
43 | |||
44 | static void __init init_edosk7705(void) | ||
45 | { | ||
46 | /* This is the Ethernet interrupt */ | ||
47 | make_imask_irq(0x09); | ||
48 | } | ||
49 | |||
50 | const char *get_system_type(void) | ||
51 | { | ||
52 | return "EDOSK7705"; | ||
53 | } | ||
54 | |||
55 | void __init platform_setup(void) | ||
56 | { | ||
57 | /* Nothing .. */ | ||
58 | } | ||
59 | |||
diff --git a/arch/sh/boards/renesas/hs7751rvoip/setup.c b/arch/sh/boards/renesas/hs7751rvoip/setup.c index a2cbcc5d530..0414c15c345 100644 --- a/arch/sh/boards/renesas/hs7751rvoip/setup.c +++ b/arch/sh/boards/renesas/hs7751rvoip/setup.c | |||
@@ -1,15 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/sh/kernel/setup_hs7751rvoip.c | 2 | * Renesas Technology Sales HS7751RVoIP Support. |
3 | * | 3 | * |
4 | * Copyright (C) 2000 Kazumoto Kojima | 4 | * Copyright (C) 2000 Kazumoto Kojima |
5 | * | 5 | * |
6 | * Renesas Technology Sales HS7751RVoIP Support. | ||
7 | * | ||
8 | * Modified for HS7751RVoIP by | 6 | * Modified for HS7751RVoIP by |
9 | * Atom Create Engineering Co., Ltd. 2002. | 7 | * Atom Create Engineering Co., Ltd. 2002. |
10 | * Lineo uSolutions, Inc. 2003. | 8 | * Lineo uSolutions, Inc. 2003. |
11 | */ | 9 | */ |
12 | |||
13 | #include <linux/init.h> | 10 | #include <linux/init.h> |
14 | #include <linux/irq.h> | 11 | #include <linux/irq.h> |
15 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
@@ -23,8 +20,6 @@ | |||
23 | #include <asm/rtc.h> | 20 | #include <asm/rtc.h> |
24 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
25 | 22 | ||
26 | unsigned int debug_counter; | ||
27 | |||
28 | static void __init hs7751rvoip_init_irq(void) | 23 | static void __init hs7751rvoip_init_irq(void) |
29 | { | 24 | { |
30 | #if defined(CONFIG_HS7751RVOIP_CODEC) | 25 | #if defined(CONFIG_HS7751RVOIP_CODEC) |
@@ -35,56 +30,11 @@ static void __init hs7751rvoip_init_irq(void) | |||
35 | init_hs7751rvoip_IRQ(); | 30 | init_hs7751rvoip_IRQ(); |
36 | } | 31 | } |
37 | 32 | ||
38 | struct sh_machine_vector mv_hs7751rvoip __initmv = { | ||
39 | .mv_nr_irqs = 72, | ||
40 | |||
41 | .mv_inb = hs7751rvoip_inb, | ||
42 | .mv_inw = hs7751rvoip_inw, | ||
43 | .mv_inl = hs7751rvoip_inl, | ||
44 | .mv_outb = hs7751rvoip_outb, | ||
45 | .mv_outw = hs7751rvoip_outw, | ||
46 | .mv_outl = hs7751rvoip_outl, | ||
47 | |||
48 | .mv_inb_p = hs7751rvoip_inb_p, | ||
49 | .mv_inw_p = hs7751rvoip_inw, | ||
50 | .mv_inl_p = hs7751rvoip_inl, | ||
51 | .mv_outb_p = hs7751rvoip_outb_p, | ||
52 | .mv_outw_p = hs7751rvoip_outw, | ||
53 | .mv_outl_p = hs7751rvoip_outl, | ||
54 | |||
55 | .mv_insb = hs7751rvoip_insb, | ||
56 | .mv_insw = hs7751rvoip_insw, | ||
57 | .mv_insl = hs7751rvoip_insl, | ||
58 | .mv_outsb = hs7751rvoip_outsb, | ||
59 | .mv_outsw = hs7751rvoip_outsw, | ||
60 | .mv_outsl = hs7751rvoip_outsl, | ||
61 | |||
62 | .mv_init_irq = hs7751rvoip_init_irq, | ||
63 | .mv_ioport_map = hs7751rvoip_ioport_map, | ||
64 | }; | ||
65 | ALIAS_MV(hs7751rvoip) | ||
66 | |||
67 | const char *get_system_type(void) | ||
68 | { | ||
69 | return "HS7751RVoIP"; | ||
70 | } | ||
71 | |||
72 | static void hs7751rvoip_power_off(void) | 33 | static void hs7751rvoip_power_off(void) |
73 | { | 34 | { |
74 | ctrl_outw(ctrl_inw(PA_OUTPORTR) & 0xffdf, PA_OUTPORTR); | 35 | ctrl_outw(ctrl_inw(PA_OUTPORTR) & 0xffdf, PA_OUTPORTR); |
75 | } | 36 | } |
76 | 37 | ||
77 | /* | ||
78 | * Initialize the board | ||
79 | */ | ||
80 | void __init platform_setup(void) | ||
81 | { | ||
82 | printk(KERN_INFO "Renesas Technology Sales HS7751RVoIP-2 support.\n"); | ||
83 | ctrl_outb(0xf0, PA_OUTPORTR); | ||
84 | pm_power_off = hs7751rvoip_power_off; | ||
85 | debug_counter = 0; | ||
86 | } | ||
87 | |||
88 | void *area5_io8_base; | 38 | void *area5_io8_base; |
89 | void *area6_io8_base; | 39 | void *area6_io8_base; |
90 | void *area5_io16_base; | 40 | void *area5_io16_base; |
@@ -127,4 +77,46 @@ static int __init hs7751rvoip_cf_init(void) | |||
127 | return 0; | 77 | return 0; |
128 | } | 78 | } |
129 | 79 | ||
130 | __initcall(hs7751rvoip_cf_init); | 80 | /* |
81 | * Initialize the board | ||
82 | */ | ||
83 | static void __init hs7751rvoip_setup(char **cmdline_p) | ||
84 | { | ||
85 | device_initcall(hs7751rvoip_cf_init); | ||
86 | |||
87 | ctrl_outb(0xf0, PA_OUTPORTR); | ||
88 | pm_power_off = hs7751rvoip_power_off; | ||
89 | |||
90 | printk(KERN_INFO "Renesas Technology Sales HS7751RVoIP-2 support.\n"); | ||
91 | } | ||
92 | |||
93 | struct sh_machine_vector mv_hs7751rvoip __initmv = { | ||
94 | .mv_name = "HS7751RVoIP", | ||
95 | .mv_setup = hs7751rvoip_setup, | ||
96 | .mv_nr_irqs = 72, | ||
97 | |||
98 | .mv_inb = hs7751rvoip_inb, | ||
99 | .mv_inw = hs7751rvoip_inw, | ||
100 | .mv_inl = hs7751rvoip_inl, | ||
101 | .mv_outb = hs7751rvoip_outb, | ||
102 | .mv_outw = hs7751rvoip_outw, | ||
103 | .mv_outl = hs7751rvoip_outl, | ||
104 | |||
105 | .mv_inb_p = hs7751rvoip_inb_p, | ||
106 | .mv_inw_p = hs7751rvoip_inw, | ||
107 | .mv_inl_p = hs7751rvoip_inl, | ||
108 | .mv_outb_p = hs7751rvoip_outb_p, | ||
109 | .mv_outw_p = hs7751rvoip_outw, | ||
110 | .mv_outl_p = hs7751rvoip_outl, | ||
111 | |||
112 | .mv_insb = hs7751rvoip_insb, | ||
113 | .mv_insw = hs7751rvoip_insw, | ||
114 | .mv_insl = hs7751rvoip_insl, | ||
115 | .mv_outsb = hs7751rvoip_outsb, | ||
116 | .mv_outsw = hs7751rvoip_outsw, | ||
117 | .mv_outsl = hs7751rvoip_outsl, | ||
118 | |||
119 | .mv_init_irq = hs7751rvoip_init_irq, | ||
120 | .mv_ioport_map = hs7751rvoip_ioport_map, | ||
121 | }; | ||
122 | ALIAS_MV(hs7751rvoip) | ||
diff --git a/arch/sh/boards/renesas/r7780rp/setup.c b/arch/sh/boards/renesas/r7780rp/setup.c index 0e4d5e1b541..b941aa0aa34 100644 --- a/arch/sh/boards/renesas/r7780rp/setup.c +++ b/arch/sh/boards/renesas/r7780rp/setup.c | |||
@@ -20,41 +20,6 @@ | |||
20 | extern void heartbeat_r7780rp(void); | 20 | extern void heartbeat_r7780rp(void); |
21 | extern void init_r7780rp_IRQ(void); | 21 | extern void init_r7780rp_IRQ(void); |
22 | 22 | ||
23 | /* | ||
24 | * The Machine Vector | ||
25 | */ | ||
26 | struct sh_machine_vector mv_r7780rp __initmv = { | ||
27 | .mv_nr_irqs = 109, | ||
28 | |||
29 | .mv_inb = r7780rp_inb, | ||
30 | .mv_inw = r7780rp_inw, | ||
31 | .mv_inl = r7780rp_inl, | ||
32 | .mv_outb = r7780rp_outb, | ||
33 | .mv_outw = r7780rp_outw, | ||
34 | .mv_outl = r7780rp_outl, | ||
35 | |||
36 | .mv_inb_p = r7780rp_inb_p, | ||
37 | .mv_inw_p = r7780rp_inw, | ||
38 | .mv_inl_p = r7780rp_inl, | ||
39 | .mv_outb_p = r7780rp_outb_p, | ||
40 | .mv_outw_p = r7780rp_outw, | ||
41 | .mv_outl_p = r7780rp_outl, | ||
42 | |||
43 | .mv_insb = r7780rp_insb, | ||
44 | .mv_insw = r7780rp_insw, | ||
45 | .mv_insl = r7780rp_insl, | ||
46 | .mv_outsb = r7780rp_outsb, | ||
47 | .mv_outsw = r7780rp_outsw, | ||
48 | .mv_outsl = r7780rp_outsl, | ||
49 | |||
50 | .mv_ioport_map = r7780rp_ioport_map, | ||
51 | .mv_init_irq = init_r7780rp_IRQ, | ||
52 | #ifdef CONFIG_HEARTBEAT | ||
53 | .mv_heartbeat = heartbeat_r7780rp, | ||
54 | #endif | ||
55 | }; | ||
56 | ALIAS_MV(r7780rp) | ||
57 | |||
58 | static struct resource m66596_usb_host_resources[] = { | 23 | static struct resource m66596_usb_host_resources[] = { |
59 | [0] = { | 24 | [0] = { |
60 | .start = 0xa4800000, | 25 | .start = 0xa4800000, |
@@ -88,7 +53,6 @@ static int __init r7780rp_devices_setup(void) | |||
88 | return platform_add_devices(r7780rp_devices, | 53 | return platform_add_devices(r7780rp_devices, |
89 | ARRAY_SIZE(r7780rp_devices)); | 54 | ARRAY_SIZE(r7780rp_devices)); |
90 | } | 55 | } |
91 | __initcall(r7780rp_devices_setup); | ||
92 | 56 | ||
93 | /* | 57 | /* |
94 | * Platform specific clocks | 58 | * Platform specific clocks |
@@ -117,11 +81,6 @@ static struct clk *r7780rp_clocks[] = { | |||
117 | &ivdr_clk, | 81 | &ivdr_clk, |
118 | }; | 82 | }; |
119 | 83 | ||
120 | const char *get_system_type(void) | ||
121 | { | ||
122 | return "Highlander R7780RP-1"; | ||
123 | } | ||
124 | |||
125 | static void r7780rp_power_off(void) | 84 | static void r7780rp_power_off(void) |
126 | { | 85 | { |
127 | #ifdef CONFIG_SH_R7780MP | 86 | #ifdef CONFIG_SH_R7780MP |
@@ -132,11 +91,13 @@ static void r7780rp_power_off(void) | |||
132 | /* | 91 | /* |
133 | * Initialize the board | 92 | * Initialize the board |
134 | */ | 93 | */ |
135 | void __init platform_setup(void) | 94 | static void __init r7780rp_setup(char **cmdline_p) |
136 | { | 95 | { |
137 | u16 ver = ctrl_inw(PA_VERREG); | 96 | u16 ver = ctrl_inw(PA_VERREG); |
138 | int i; | 97 | int i; |
139 | 98 | ||
99 | device_initcall(r7780rp_devices_setup); | ||
100 | |||
140 | printk(KERN_INFO "Renesas Solutions Highlander R7780RP-1 support.\n"); | 101 | printk(KERN_INFO "Renesas Solutions Highlander R7780RP-1 support.\n"); |
141 | 102 | ||
142 | printk(KERN_INFO "Board version: %d (revision %d), " | 103 | printk(KERN_INFO "Board version: %d (revision %d), " |
@@ -162,3 +123,41 @@ void __init platform_setup(void) | |||
162 | 123 | ||
163 | pm_power_off = r7780rp_power_off; | 124 | pm_power_off = r7780rp_power_off; |
164 | } | 125 | } |
126 | |||
127 | /* | ||
128 | * The Machine Vector | ||
129 | */ | ||
130 | struct sh_machine_vector mv_r7780rp __initmv = { | ||
131 | .mv_name = "Highlander R7780RP-1", | ||
132 | .mv_setup = r7780rp_setup, | ||
133 | |||
134 | .mv_nr_irqs = 109, | ||
135 | |||
136 | .mv_inb = r7780rp_inb, | ||
137 | .mv_inw = r7780rp_inw, | ||
138 | .mv_inl = r7780rp_inl, | ||
139 | .mv_outb = r7780rp_outb, | ||
140 | .mv_outw = r7780rp_outw, | ||
141 | .mv_outl = r7780rp_outl, | ||
142 | |||
143 | .mv_inb_p = r7780rp_inb_p, | ||
144 | .mv_inw_p = r7780rp_inw, | ||
145 | .mv_inl_p = r7780rp_inl, | ||
146 | .mv_outb_p = r7780rp_outb_p, | ||
147 | .mv_outw_p = r7780rp_outw, | ||
148 | .mv_outl_p = r7780rp_outl, | ||
149 | |||
150 | .mv_insb = r7780rp_insb, | ||
151 | .mv_insw = r7780rp_insw, | ||
152 | .mv_insl = r7780rp_insl, | ||
153 | .mv_outsb = r7780rp_outsb, | ||
154 | .mv_outsw = r7780rp_outsw, | ||
155 | .mv_outsl = r7780rp_outsl, | ||
156 | |||
157 | .mv_ioport_map = r7780rp_ioport_map, | ||
158 | .mv_init_irq = init_r7780rp_IRQ, | ||
159 | #ifdef CONFIG_HEARTBEAT | ||
160 | .mv_heartbeat = heartbeat_r7780rp, | ||
161 | #endif | ||
162 | }; | ||
163 | ALIAS_MV(r7780rp) | ||
diff --git a/arch/sh/boards/renesas/rts7751r2d/Makefile b/arch/sh/boards/renesas/rts7751r2d/Makefile index eee1ed6f572..686fc9ea598 100644 --- a/arch/sh/boards/renesas/rts7751r2d/Makefile +++ b/arch/sh/boards/renesas/rts7751r2d/Makefile | |||
@@ -2,5 +2,5 @@ | |||
2 | # Makefile for the RTS7751R2D specific parts of the kernel | 2 | # Makefile for the RTS7751R2D specific parts of the kernel |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := mach.o setup.o io.o irq.o led.o | 5 | obj-y := setup.o io.o irq.o |
6 | 6 | obj-$(CONFIG_HEARTBEAT) += led.o | |
diff --git a/arch/sh/boards/renesas/rts7751r2d/mach.c b/arch/sh/boards/renesas/rts7751r2d/mach.c deleted file mode 100644 index fe3e8735e9f..00000000000 --- a/arch/sh/boards/renesas/rts7751r2d/mach.c +++ /dev/null | |||
@@ -1,66 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/sh/kernel/mach_rts7751r2d.c | ||
3 | * | ||
4 | * Minor tweak of mach_se.c file to reference rts7751r2d-specific items. | ||
5 | * | ||
6 | * May be copied or modified under the terms of the GNU General Public | ||
7 | * License. See linux/COPYING for more information. | ||
8 | * | ||
9 | * Machine vector for the Renesas Technology sales RTS7751R2D | ||
10 | */ | ||
11 | |||
12 | #include <linux/init.h> | ||
13 | #include <linux/types.h> | ||
14 | |||
15 | #include <asm/machvec.h> | ||
16 | #include <asm/rtc.h> | ||
17 | #include <asm/irq.h> | ||
18 | #include <asm/mach/rts7751r2d.h> | ||
19 | |||
20 | extern void heartbeat_rts7751r2d(void); | ||
21 | extern void init_rts7751r2d_IRQ(void); | ||
22 | extern int rts7751r2d_irq_demux(int irq); | ||
23 | |||
24 | extern void *voyagergx_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t); | ||
25 | extern int voyagergx_consistent_free(struct device *, size_t, void *, dma_addr_t); | ||
26 | |||
27 | /* | ||
28 | * The Machine Vector | ||
29 | */ | ||
30 | |||
31 | struct sh_machine_vector mv_rts7751r2d __initmv = { | ||
32 | .mv_nr_irqs = 72, | ||
33 | |||
34 | .mv_inb = rts7751r2d_inb, | ||
35 | .mv_inw = rts7751r2d_inw, | ||
36 | .mv_inl = rts7751r2d_inl, | ||
37 | .mv_outb = rts7751r2d_outb, | ||
38 | .mv_outw = rts7751r2d_outw, | ||
39 | .mv_outl = rts7751r2d_outl, | ||
40 | |||
41 | .mv_inb_p = rts7751r2d_inb_p, | ||
42 | .mv_inw_p = rts7751r2d_inw, | ||
43 | .mv_inl_p = rts7751r2d_inl, | ||
44 | .mv_outb_p = rts7751r2d_outb_p, | ||
45 | .mv_outw_p = rts7751r2d_outw, | ||
46 | .mv_outl_p = rts7751r2d_outl, | ||
47 | |||
48 | .mv_insb = rts7751r2d_insb, | ||
49 | .mv_insw = rts7751r2d_insw, | ||
50 | .mv_insl = rts7751r2d_insl, | ||
51 | .mv_outsb = rts7751r2d_outsb, | ||
52 | .mv_outsw = rts7751r2d_outsw, | ||
53 | .mv_outsl = rts7751r2d_outsl, | ||
54 | |||
55 | .mv_init_irq = init_rts7751r2d_IRQ, | ||
56 | #ifdef CONFIG_HEARTBEAT | ||
57 | .mv_heartbeat = heartbeat_rts7751r2d, | ||
58 | #endif | ||
59 | .mv_irq_demux = rts7751r2d_irq_demux, | ||
60 | |||
61 | #ifdef CONFIG_USB_OHCI_HCD | ||
62 | .mv_consistent_alloc = voyagergx_consistent_alloc, | ||
63 | .mv_consistent_free = voyagergx_consistent_free, | ||
64 | #endif | ||
65 | }; | ||
66 | ALIAS_MV(rts7751r2d) | ||
diff --git a/arch/sh/boards/renesas/rts7751r2d/setup.c b/arch/sh/boards/renesas/rts7751r2d/setup.c index bb56c018f2e..20597a6e670 100644 --- a/arch/sh/boards/renesas/rts7751r2d/setup.c +++ b/arch/sh/boards/renesas/rts7751r2d/setup.c | |||
@@ -13,9 +13,17 @@ | |||
13 | #include <linux/serial_8250.h> | 13 | #include <linux/serial_8250.h> |
14 | #include <linux/pm.h> | 14 | #include <linux/pm.h> |
15 | #include <asm/io.h> | 15 | #include <asm/io.h> |
16 | #include <asm/machvec.h> | ||
16 | #include <asm/mach/rts7751r2d.h> | 17 | #include <asm/mach/rts7751r2d.h> |
17 | #include <asm/voyagergx.h> | 18 | #include <asm/voyagergx.h> |
18 | 19 | ||
20 | extern void heartbeat_rts7751r2d(void); | ||
21 | extern void init_rts7751r2d_IRQ(void); | ||
22 | extern int rts7751r2d_irq_demux(int irq); | ||
23 | |||
24 | extern void *voyagergx_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t); | ||
25 | extern int voyagergx_consistent_free(struct device *, size_t, void *, dma_addr_t); | ||
26 | |||
19 | static struct plat_serial8250_port uart_platform_data[] = { | 27 | static struct plat_serial8250_port uart_platform_data[] = { |
20 | { | 28 | { |
21 | .membase = (void *)VOYAGER_UART_BASE, | 29 | .membase = (void *)VOYAGER_UART_BASE, |
@@ -70,12 +78,6 @@ static int __init rts7751r2d_devices_setup(void) | |||
70 | return platform_add_devices(rts7751r2d_devices, | 78 | return platform_add_devices(rts7751r2d_devices, |
71 | ARRAY_SIZE(rts7751r2d_devices)); | 79 | ARRAY_SIZE(rts7751r2d_devices)); |
72 | } | 80 | } |
73 | __initcall(rts7751r2d_devices_setup); | ||
74 | |||
75 | const char *get_system_type(void) | ||
76 | { | ||
77 | return "RTS7751R2D"; | ||
78 | } | ||
79 | 81 | ||
80 | static void rts7751r2d_power_off(void) | 82 | static void rts7751r2d_power_off(void) |
81 | { | 83 | { |
@@ -85,12 +87,56 @@ static void rts7751r2d_power_off(void) | |||
85 | /* | 87 | /* |
86 | * Initialize the board | 88 | * Initialize the board |
87 | */ | 89 | */ |
88 | void __init platform_setup(void) | 90 | static void __init rts7751r2d_setup(char **cmdline_p) |
89 | { | 91 | { |
90 | printk(KERN_INFO "Renesas Technology Sales RTS7751R2D support.\n"); | 92 | device_initcall(rts7751r2d_devices_setup); |
93 | |||
91 | ctrl_outw(0x0000, PA_OUTPORT); | 94 | ctrl_outw(0x0000, PA_OUTPORT); |
92 | pm_power_off = rts7751r2d_power_off; | 95 | pm_power_off = rts7751r2d_power_off; |
93 | 96 | ||
94 | voyagergx_serial_init(); | 97 | voyagergx_serial_init(); |
95 | 98 | ||
99 | printk(KERN_INFO "Renesas Technology Sales RTS7751R2D support.\n"); | ||
96 | } | 100 | } |
101 | |||
102 | /* | ||
103 | * The Machine Vector | ||
104 | */ | ||
105 | struct sh_machine_vector mv_rts7751r2d __initmv = { | ||
106 | .mv_name = "RTS7751R2D", | ||
107 | .mv_setup = rts7751r2d_setup, | ||
108 | .mv_nr_irqs = 72, | ||
109 | |||
110 | .mv_inb = rts7751r2d_inb, | ||
111 | .mv_inw = rts7751r2d_inw, | ||
112 | .mv_inl = rts7751r2d_inl, | ||
113 | .mv_outb = rts7751r2d_outb, | ||
114 | .mv_outw = rts7751r2d_outw, | ||
115 | .mv_outl = rts7751r2d_outl, | ||
116 | |||
117 | .mv_inb_p = rts7751r2d_inb_p, | ||
118 | .mv_inw_p = rts7751r2d_inw, | ||
119 | .mv_inl_p = rts7751r2d_inl, | ||
120 | .mv_outb_p = rts7751r2d_outb_p, | ||
121 | .mv_outw_p = rts7751r2d_outw, | ||
122 | .mv_outl_p = rts7751r2d_outl, | ||
123 | |||
124 | .mv_insb = rts7751r2d_insb, | ||
125 | .mv_insw = rts7751r2d_insw, | ||
126 | .mv_insl = rts7751r2d_insl, | ||
127 | .mv_outsb = rts7751r2d_outsb, | ||
128 | .mv_outsw = rts7751r2d_outsw, | ||
129 | .mv_outsl = rts7751r2d_outsl, | ||
130 | |||
131 | .mv_init_irq = init_rts7751r2d_IRQ, | ||
132 | #ifdef CONFIG_HEARTBEAT | ||
133 | .mv_heartbeat = heartbeat_rts7751r2d, | ||
134 | #endif | ||
135 | .mv_irq_demux = rts7751r2d_irq_demux, | ||
136 | |||
137 | #ifdef CONFIG_USB_SM501 | ||
138 | .mv_consistent_alloc = voyagergx_consistent_alloc, | ||
139 | .mv_consistent_free = voyagergx_consistent_free, | ||
140 | #endif | ||
141 | }; | ||
142 | ALIAS_MV(rts7751r2d) | ||
diff --git a/arch/sh/boards/renesas/systemh/setup.c b/arch/sh/boards/renesas/systemh/setup.c index 433c7c3f35e..a8467bf90c2 100644 --- a/arch/sh/boards/renesas/systemh/setup.c +++ b/arch/sh/boards/renesas/systemh/setup.c | |||
@@ -20,20 +20,16 @@ | |||
20 | 20 | ||
21 | extern void make_systemh_irq(unsigned int irq); | 21 | extern void make_systemh_irq(unsigned int irq); |
22 | 22 | ||
23 | const char *get_system_type(void) | ||
24 | { | ||
25 | return "7751 SystemH"; | ||
26 | } | ||
27 | |||
28 | /* | 23 | /* |
29 | * Initialize IRQ setting | 24 | * Initialize IRQ setting |
30 | */ | 25 | */ |
31 | void __init init_7751systemh_IRQ(void) | 26 | static void __init sh7751systemh_init_irq(void) |
32 | { | 27 | { |
33 | make_systemh_irq(0xb); /* Ethernet interrupt */ | 28 | make_systemh_irq(0xb); /* Ethernet interrupt */ |
34 | } | 29 | } |
35 | 30 | ||
36 | struct sh_machine_vector mv_7751systemh __initmv = { | 31 | struct sh_machine_vector mv_7751systemh __initmv = { |
32 | .mv_name = "7751 SystemH", | ||
37 | .mv_nr_irqs = 72, | 33 | .mv_nr_irqs = 72, |
38 | 34 | ||
39 | .mv_inb = sh7751systemh_inb, | 35 | .mv_inb = sh7751systemh_inb, |
@@ -57,12 +53,6 @@ struct sh_machine_vector mv_7751systemh __initmv = { | |||
57 | .mv_outsw = sh7751systemh_outsw, | 53 | .mv_outsw = sh7751systemh_outsw, |
58 | .mv_outsl = sh7751systemh_outsl, | 54 | .mv_outsl = sh7751systemh_outsl, |
59 | 55 | ||
60 | .mv_init_irq = init_7751systemh_IRQ, | 56 | .mv_init_irq = sh7751system_init_irq, |
61 | }; | 57 | }; |
62 | ALIAS_MV(7751systemh) | 58 | ALIAS_MV(7751systemh) |
63 | |||
64 | int __init platform_setup(void) | ||
65 | { | ||
66 | return 0; | ||
67 | } | ||
68 | |||
diff --git a/arch/sh/boards/saturn/setup.c b/arch/sh/boards/saturn/setup.c index bea6c572ad8..a3a37c9aad2 100644 --- a/arch/sh/boards/saturn/setup.c +++ b/arch/sh/boards/saturn/setup.c | |||
@@ -9,22 +9,17 @@ | |||
9 | */ | 9 | */ |
10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | |||
13 | #include <asm/io.h> | 12 | #include <asm/io.h> |
14 | #include <asm/machvec.h> | 13 | #include <asm/machvec.h> |
15 | #include <asm/mach/io.h> | 14 | #include <asm/mach/io.h> |
16 | 15 | ||
17 | extern int saturn_irq_demux(int irq_nr); | 16 | extern int saturn_irq_demux(int irq_nr); |
18 | 17 | ||
19 | const char *get_system_type(void) | ||
20 | { | ||
21 | return "Sega Saturn"; | ||
22 | } | ||
23 | |||
24 | /* | 18 | /* |
25 | * The Machine Vector | 19 | * The Machine Vector |
26 | */ | 20 | */ |
27 | struct sh_machine_vector mv_saturn __initmv = { | 21 | struct sh_machine_vector mv_saturn __initmv = { |
22 | .mv_name = "Sega Saturn", | ||
28 | .mv_nr_irqs = 80, /* Fix this later */ | 23 | .mv_nr_irqs = 80, /* Fix this later */ |
29 | 24 | ||
30 | .mv_isa_port2addr = saturn_isa_port2addr, | 25 | .mv_isa_port2addr = saturn_isa_port2addr, |
@@ -33,11 +28,4 @@ struct sh_machine_vector mv_saturn __initmv = { | |||
33 | .mv_ioremap = saturn_ioremap, | 28 | .mv_ioremap = saturn_ioremap, |
34 | .mv_iounmap = saturn_iounmap, | 29 | .mv_iounmap = saturn_iounmap, |
35 | }; | 30 | }; |
36 | |||
37 | ALIAS_MV(saturn) | 31 | ALIAS_MV(saturn) |
38 | |||
39 | int __init platform_setup(void) | ||
40 | { | ||
41 | return 0; | ||
42 | } | ||
43 | |||
diff --git a/arch/sh/boards/se/7300/setup.c b/arch/sh/boards/se/7300/setup.c index bb7e1a189be..6f082a722d4 100644 --- a/arch/sh/boards/se/7300/setup.c +++ b/arch/sh/boards/se/7300/setup.c | |||
@@ -14,17 +14,11 @@ | |||
14 | void heartbeat_7300se(void); | 14 | void heartbeat_7300se(void); |
15 | void init_7300se_IRQ(void); | 15 | void init_7300se_IRQ(void); |
16 | 16 | ||
17 | const char * | ||
18 | get_system_type(void) | ||
19 | { | ||
20 | return "SolutionEngine 7300"; | ||
21 | } | ||
22 | |||
23 | /* | 17 | /* |
24 | * The Machine Vector | 18 | * The Machine Vector |
25 | */ | 19 | */ |
26 | |||
27 | struct sh_machine_vector mv_7300se __initmv = { | 20 | struct sh_machine_vector mv_7300se __initmv = { |
21 | .mv_name = "SolutionEngine 7300", | ||
28 | .mv_nr_irqs = 109, | 22 | .mv_nr_irqs = 109, |
29 | .mv_inb = sh7300se_inb, | 23 | .mv_inb = sh7300se_inb, |
30 | .mv_inw = sh7300se_inw, | 24 | .mv_inw = sh7300se_inw, |
@@ -52,13 +46,4 @@ struct sh_machine_vector mv_7300se __initmv = { | |||
52 | .mv_heartbeat = heartbeat_7300se, | 46 | .mv_heartbeat = heartbeat_7300se, |
53 | #endif | 47 | #endif |
54 | }; | 48 | }; |
55 | |||
56 | ALIAS_MV(7300se) | 49 | ALIAS_MV(7300se) |
57 | /* | ||
58 | * Initialize the board | ||
59 | */ | ||
60 | void __init | ||
61 | platform_setup(void) | ||
62 | { | ||
63 | |||
64 | } | ||
diff --git a/arch/sh/boards/se/73180/setup.c b/arch/sh/boards/se/73180/setup.c index 4daf53b1457..b38ef50a160 100644 --- a/arch/sh/boards/se/73180/setup.c +++ b/arch/sh/boards/se/73180/setup.c | |||
@@ -17,17 +17,11 @@ | |||
17 | void heartbeat_73180se(void); | 17 | void heartbeat_73180se(void); |
18 | void init_73180se_IRQ(void); | 18 | void init_73180se_IRQ(void); |
19 | 19 | ||
20 | const char * | ||
21 | get_system_type(void) | ||
22 | { | ||
23 | return "SolutionEngine 73180"; | ||
24 | } | ||
25 | |||
26 | /* | 20 | /* |
27 | * The Machine Vector | 21 | * The Machine Vector |
28 | */ | 22 | */ |
29 | |||
30 | struct sh_machine_vector mv_73180se __initmv = { | 23 | struct sh_machine_vector mv_73180se __initmv = { |
24 | .mv_name = "SolutionEngine 73180", | ||
31 | .mv_nr_irqs = 108, | 25 | .mv_nr_irqs = 108, |
32 | .mv_inb = sh73180se_inb, | 26 | .mv_inb = sh73180se_inb, |
33 | .mv_inw = sh73180se_inw, | 27 | .mv_inw = sh73180se_inw, |
@@ -56,13 +50,4 @@ struct sh_machine_vector mv_73180se __initmv = { | |||
56 | .mv_heartbeat = heartbeat_73180se, | 50 | .mv_heartbeat = heartbeat_73180se, |
57 | #endif | 51 | #endif |
58 | }; | 52 | }; |
59 | |||
60 | ALIAS_MV(73180se) | 53 | ALIAS_MV(73180se) |
61 | /* | ||
62 | * Initialize the board | ||
63 | */ | ||
64 | void __init | ||
65 | platform_setup(void) | ||
66 | { | ||
67 | |||
68 | } | ||
diff --git a/arch/sh/boards/se/770x/Makefile b/arch/sh/boards/se/770x/Makefile index c96ed6933fe..9a5035f80ec 100644 --- a/arch/sh/boards/se/770x/Makefile +++ b/arch/sh/boards/se/770x/Makefile | |||
@@ -2,6 +2,5 @@ | |||
2 | # Makefile for the 770x SolutionEngine specific parts of the kernel | 2 | # Makefile for the 770x SolutionEngine specific parts of the kernel |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := mach.o setup.o io.o irq.o | 5 | obj-y := setup.o io.o irq.o |
6 | |||
7 | obj-$(CONFIG_HEARTBEAT) += led.o | 6 | obj-$(CONFIG_HEARTBEAT) += led.o |
diff --git a/arch/sh/boards/se/770x/mach.c b/arch/sh/boards/se/770x/mach.c deleted file mode 100644 index e8968b71c35..00000000000 --- a/arch/sh/boards/se/770x/mach.c +++ /dev/null | |||
@@ -1,62 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/sh/kernel/mach_se.c | ||
3 | * | ||
4 | * Copyright (C) 2000 Stuart Menefy (stuart.menefy@st.com) | ||
5 | * | ||
6 | * May be copied or modified under the terms of the GNU General Public | ||
7 | * License. See linux/COPYING for more information. | ||
8 | * | ||
9 | * Machine vector for the Hitachi SolutionEngine | ||
10 | */ | ||
11 | |||
12 | #include <linux/init.h> | ||
13 | |||
14 | #include <asm/machvec.h> | ||
15 | #include <asm/rtc.h> | ||
16 | #include <asm/se.h> | ||
17 | |||
18 | void heartbeat_se(void); | ||
19 | void init_se_IRQ(void); | ||
20 | |||
21 | /* | ||
22 | * The Machine Vector | ||
23 | */ | ||
24 | |||
25 | struct sh_machine_vector mv_se __initmv = { | ||
26 | #if defined(CONFIG_CPU_SH4) | ||
27 | .mv_nr_irqs = 48, | ||
28 | #elif defined(CONFIG_CPU_SUBTYPE_SH7708) | ||
29 | .mv_nr_irqs = 32, | ||
30 | #elif defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
31 | .mv_nr_irqs = 61, | ||
32 | #elif defined(CONFIG_CPU_SUBTYPE_SH7705) | ||
33 | .mv_nr_irqs = 86, | ||
34 | #endif | ||
35 | |||
36 | .mv_inb = se_inb, | ||
37 | .mv_inw = se_inw, | ||
38 | .mv_inl = se_inl, | ||
39 | .mv_outb = se_outb, | ||
40 | .mv_outw = se_outw, | ||
41 | .mv_outl = se_outl, | ||
42 | |||
43 | .mv_inb_p = se_inb_p, | ||
44 | .mv_inw_p = se_inw, | ||
45 | .mv_inl_p = se_inl, | ||
46 | .mv_outb_p = se_outb_p, | ||
47 | .mv_outw_p = se_outw, | ||
48 | .mv_outl_p = se_outl, | ||
49 | |||
50 | .mv_insb = se_insb, | ||
51 | .mv_insw = se_insw, | ||
52 | .mv_insl = se_insl, | ||
53 | .mv_outsb = se_outsb, | ||
54 | .mv_outsw = se_outsw, | ||
55 | .mv_outsl = se_outsl, | ||
56 | |||
57 | .mv_init_irq = init_se_IRQ, | ||
58 | #ifdef CONFIG_HEARTBEAT | ||
59 | .mv_heartbeat = heartbeat_se, | ||
60 | #endif | ||
61 | }; | ||
62 | ALIAS_MV(se) | ||
diff --git a/arch/sh/boards/se/770x/setup.c b/arch/sh/boards/se/770x/setup.c index c9f75272e75..f3f82b7c821 100644 --- a/arch/sh/boards/se/770x/setup.c +++ b/arch/sh/boards/se/770x/setup.c | |||
@@ -7,15 +7,17 @@ | |||
7 | * Hitachi SolutionEngine Support. | 7 | * Hitachi SolutionEngine Support. |
8 | * | 8 | * |
9 | */ | 9 | */ |
10 | |||
11 | #include <linux/init.h> | 10 | #include <linux/init.h> |
12 | #include <linux/irq.h> | 11 | #include <linux/irq.h> |
13 | |||
14 | #include <linux/hdreg.h> | 12 | #include <linux/hdreg.h> |
15 | #include <linux/ide.h> | 13 | #include <linux/ide.h> |
16 | #include <asm/io.h> | 14 | #include <asm/io.h> |
17 | #include <asm/se.h> | 15 | #include <asm/se.h> |
18 | #include <asm/smc37c93x.h> | 16 | #include <asm/smc37c93x.h> |
17 | #include <asm/machvec.h> | ||
18 | |||
19 | void heartbeat_se(void); | ||
20 | void init_se_IRQ(void); | ||
19 | 21 | ||
20 | /* | 22 | /* |
21 | * Configure the Super I/O chip | 23 | * Configure the Super I/O chip |
@@ -26,7 +28,8 @@ static void __init smsc_config(int index, int data) | |||
26 | outb_p(data, DATA_PORT); | 28 | outb_p(data, DATA_PORT); |
27 | } | 29 | } |
28 | 30 | ||
29 | static void __init init_smsc(void) | 31 | /* XXX: Another candidate for a more generic cchip machine vector */ |
32 | static void __init smsc_setup(char **cmdline_p) | ||
30 | { | 33 | { |
31 | outb_p(CONFIG_ENTER, CONFIG_PORT); | 34 | outb_p(CONFIG_ENTER, CONFIG_PORT); |
32 | outb_p(CONFIG_ENTER, CONFIG_PORT); | 35 | outb_p(CONFIG_ENTER, CONFIG_PORT); |
@@ -69,16 +72,46 @@ static void __init init_smsc(void) | |||
69 | outb_p(CONFIG_EXIT, CONFIG_PORT); | 72 | outb_p(CONFIG_EXIT, CONFIG_PORT); |
70 | } | 73 | } |
71 | 74 | ||
72 | const char *get_system_type(void) | ||
73 | { | ||
74 | return "SolutionEngine"; | ||
75 | } | ||
76 | |||
77 | /* | 75 | /* |
78 | * Initialize the board | 76 | * The Machine Vector |
79 | */ | 77 | */ |
80 | void __init platform_setup(void) | 78 | struct sh_machine_vector mv_se __initmv = { |
81 | { | 79 | .mv_name = "SolutionEngine", |
82 | init_smsc(); | 80 | .mv_setup = smsc_setup, |
83 | /* XXX: RTC setting comes here */ | 81 | #if defined(CONFIG_CPU_SH4) |
84 | } | 82 | .mv_nr_irqs = 48, |
83 | #elif defined(CONFIG_CPU_SUBTYPE_SH7708) | ||
84 | .mv_nr_irqs = 32, | ||
85 | #elif defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
86 | .mv_nr_irqs = 61, | ||
87 | #elif defined(CONFIG_CPU_SUBTYPE_SH7705) | ||
88 | .mv_nr_irqs = 86, | ||
89 | #endif | ||
90 | |||
91 | .mv_inb = se_inb, | ||
92 | .mv_inw = se_inw, | ||
93 | .mv_inl = se_inl, | ||
94 | .mv_outb = se_outb, | ||
95 | .mv_outw = se_outw, | ||
96 | .mv_outl = se_outl, | ||
97 | |||
98 | .mv_inb_p = se_inb_p, | ||
99 | .mv_inw_p = se_inw, | ||
100 | .mv_inl_p = se_inl, | ||
101 | .mv_outb_p = se_outb_p, | ||
102 | .mv_outw_p = se_outw, | ||
103 | .mv_outl_p = se_outl, | ||
104 | |||
105 | .mv_insb = se_insb, | ||
106 | .mv_insw = se_insw, | ||
107 | .mv_insl = se_insl, | ||
108 | .mv_outsb = se_outsb, | ||
109 | .mv_outsw = se_outsw, | ||
110 | .mv_outsl = se_outsl, | ||
111 | |||
112 | .mv_init_irq = init_se_IRQ, | ||
113 | #ifdef CONFIG_HEARTBEAT | ||
114 | .mv_heartbeat = heartbeat_se, | ||
115 | #endif | ||
116 | }; | ||
117 | ALIAS_MV(se) | ||
diff --git a/arch/sh/boards/se/7751/Makefile b/arch/sh/boards/se/7751/Makefile index 07bf17a4a19..188900c4832 100644 --- a/arch/sh/boards/se/7751/Makefile +++ b/arch/sh/boards/se/7751/Makefile | |||
@@ -2,8 +2,7 @@ | |||
2 | # Makefile for the 7751 SolutionEngine specific parts of the kernel | 2 | # Makefile for the 7751 SolutionEngine specific parts of the kernel |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := mach.o setup.o io.o irq.o | 5 | obj-y := setup.o io.o irq.o |
6 | 6 | ||
7 | obj-$(CONFIG_PCI) += pci.o | 7 | obj-$(CONFIG_PCI) += pci.o |
8 | obj-$(CONFIG_HEARTBEAT) += led.o | 8 | obj-$(CONFIG_HEARTBEAT) += led.o |
9 | |||
diff --git a/arch/sh/boards/se/7751/mach.c b/arch/sh/boards/se/7751/mach.c deleted file mode 100644 index 1bb9047d863..00000000000 --- a/arch/sh/boards/se/7751/mach.c +++ /dev/null | |||
@@ -1,48 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/sh/kernel/mach_7751se.c | ||
3 | * | ||
4 | * Minor tweak of mach_se.c file to reference 7751se-specific items. | ||
5 | * | ||
6 | * May be copied or modified under the terms of the GNU General Public | ||
7 | * License. See linux/COPYING for more information. | ||
8 | * | ||
9 | * Machine vector for the Hitachi 7751 SolutionEngine | ||
10 | */ | ||
11 | |||
12 | #include <linux/init.h> | ||
13 | #include <asm/machvec.h> | ||
14 | #include <asm/se7751.h> | ||
15 | |||
16 | void heartbeat_7751se(void); | ||
17 | void init_7751se_IRQ(void); | ||
18 | |||
19 | /* | ||
20 | * The Machine Vector | ||
21 | */ | ||
22 | |||
23 | struct sh_machine_vector mv_7751se __initmv = { | ||
24 | .mv_nr_irqs = 72, | ||
25 | |||
26 | .mv_inb = sh7751se_inb, | ||
27 | .mv_inw = sh7751se_inw, | ||
28 | .mv_inl = sh7751se_inl, | ||
29 | .mv_outb = sh7751se_outb, | ||
30 | .mv_outw = sh7751se_outw, | ||
31 | .mv_outl = sh7751se_outl, | ||
32 | |||
33 | .mv_inb_p = sh7751se_inb_p, | ||
34 | .mv_inw_p = sh7751se_inw, | ||
35 | .mv_inl_p = sh7751se_inl, | ||
36 | .mv_outb_p = sh7751se_outb_p, | ||
37 | .mv_outw_p = sh7751se_outw, | ||
38 | .mv_outl_p = sh7751se_outl, | ||
39 | |||
40 | .mv_insl = sh7751se_insl, | ||
41 | .mv_outsl = sh7751se_outsl, | ||
42 | |||
43 | .mv_init_irq = init_7751se_IRQ, | ||
44 | #ifdef CONFIG_HEARTBEAT | ||
45 | .mv_heartbeat = heartbeat_7751se, | ||
46 | #endif | ||
47 | }; | ||
48 | ALIAS_MV(7751se) | ||
diff --git a/arch/sh/boards/se/7751/setup.c b/arch/sh/boards/se/7751/setup.c index 8b693105893..73e826310ba 100644 --- a/arch/sh/boards/se/7751/setup.c +++ b/arch/sh/boards/se/7751/setup.c | |||
@@ -15,72 +15,11 @@ | |||
15 | #include <asm/io.h> | 15 | #include <asm/io.h> |
16 | #include <asm/se7751.h> | 16 | #include <asm/se7751.h> |
17 | 17 | ||
18 | #ifdef CONFIG_SH_KGDB | 18 | void heartbeat_7751se(void); |
19 | #include <asm/kgdb.h> | 19 | void init_7751se_IRQ(void); |
20 | #endif | ||
21 | |||
22 | /* | ||
23 | * Configure the Super I/O chip | ||
24 | */ | ||
25 | #if 0 | ||
26 | /* Leftover code from regular Solution Engine, for reference. */ | ||
27 | /* The SH7751 Solution Engine has a different SuperIO. */ | ||
28 | static void __init smsc_config(int index, int data) | ||
29 | { | ||
30 | outb_p(index, INDEX_PORT); | ||
31 | outb_p(data, DATA_PORT); | ||
32 | } | ||
33 | |||
34 | static void __init init_smsc(void) | ||
35 | { | ||
36 | outb_p(CONFIG_ENTER, CONFIG_PORT); | ||
37 | outb_p(CONFIG_ENTER, CONFIG_PORT); | ||
38 | |||
39 | /* FDC */ | ||
40 | smsc_config(CURRENT_LDN_INDEX, LDN_FDC); | ||
41 | smsc_config(ACTIVATE_INDEX, 0x01); | ||
42 | smsc_config(IRQ_SELECT_INDEX, 6); /* IRQ6 */ | ||
43 | |||
44 | /* IDE1 */ | ||
45 | smsc_config(CURRENT_LDN_INDEX, LDN_IDE1); | ||
46 | smsc_config(ACTIVATE_INDEX, 0x01); | ||
47 | smsc_config(IRQ_SELECT_INDEX, 14); /* IRQ14 */ | ||
48 | |||
49 | /* AUXIO (GPIO): to use IDE1 */ | ||
50 | smsc_config(CURRENT_LDN_INDEX, LDN_AUXIO); | ||
51 | smsc_config(GPIO46_INDEX, 0x00); /* nIOROP */ | ||
52 | smsc_config(GPIO47_INDEX, 0x00); /* nIOWOP */ | ||
53 | |||
54 | /* COM1 */ | ||
55 | smsc_config(CURRENT_LDN_INDEX, LDN_COM1); | ||
56 | smsc_config(ACTIVATE_INDEX, 0x01); | ||
57 | smsc_config(IO_BASE_HI_INDEX, 0x03); | ||
58 | smsc_config(IO_BASE_LO_INDEX, 0xf8); | ||
59 | smsc_config(IRQ_SELECT_INDEX, 4); /* IRQ4 */ | ||
60 | |||
61 | /* COM2 */ | ||
62 | smsc_config(CURRENT_LDN_INDEX, LDN_COM2); | ||
63 | smsc_config(ACTIVATE_INDEX, 0x01); | ||
64 | smsc_config(IO_BASE_HI_INDEX, 0x02); | ||
65 | smsc_config(IO_BASE_LO_INDEX, 0xf8); | ||
66 | smsc_config(IRQ_SELECT_INDEX, 3); /* IRQ3 */ | ||
67 | |||
68 | /* RTC */ | ||
69 | smsc_config(CURRENT_LDN_INDEX, LDN_RTC); | ||
70 | smsc_config(ACTIVATE_INDEX, 0x01); | ||
71 | smsc_config(IRQ_SELECT_INDEX, 8); /* IRQ8 */ | ||
72 | |||
73 | /* XXX: PARPORT, KBD, and MOUSE will come here... */ | ||
74 | outb_p(CONFIG_EXIT, CONFIG_PORT); | ||
75 | } | ||
76 | #endif | ||
77 | |||
78 | const char *get_system_type(void) | ||
79 | { | ||
80 | return "7751 SolutionEngine"; | ||
81 | } | ||
82 | 20 | ||
83 | #ifdef CONFIG_SH_KGDB | 21 | #ifdef CONFIG_SH_KGDB |
22 | #include <asm/kgdb.h> | ||
84 | static int kgdb_uart_setup(void); | 23 | static int kgdb_uart_setup(void); |
85 | static struct kgdb_sermap kgdb_uart_sermap = | 24 | static struct kgdb_sermap kgdb_uart_sermap = |
86 | { "ttyS", 0, kgdb_uart_setup, NULL }; | 25 | { "ttyS", 0, kgdb_uart_setup, NULL }; |
@@ -89,7 +28,7 @@ static struct kgdb_sermap kgdb_uart_sermap = | |||
89 | /* | 28 | /* |
90 | * Initialize the board | 29 | * Initialize the board |
91 | */ | 30 | */ |
92 | void __init platform_setup(void) | 31 | static void __init sh7751se_setup(char **cmdline_p) |
93 | { | 32 | { |
94 | /* Call init_smsc() replacement to set up SuperIO. */ | 33 | /* Call init_smsc() replacement to set up SuperIO. */ |
95 | /* XXX: RTC setting comes here */ | 34 | /* XXX: RTC setting comes here */ |
@@ -223,3 +162,37 @@ static int kgdb_uart_setup(void) | |||
223 | return 0; | 162 | return 0; |
224 | } | 163 | } |
225 | #endif /* CONFIG_SH_KGDB */ | 164 | #endif /* CONFIG_SH_KGDB */ |
165 | |||
166 | |||
167 | /* | ||
168 | * The Machine Vector | ||
169 | */ | ||
170 | |||
171 | struct sh_machine_vector mv_7751se __initmv = { | ||
172 | .mv_name = "7751 SolutionEngine", | ||
173 | .mv_setup = sh7751se_setup, | ||
174 | .mv_nr_irqs = 72, | ||
175 | |||
176 | .mv_inb = sh7751se_inb, | ||
177 | .mv_inw = sh7751se_inw, | ||
178 | .mv_inl = sh7751se_inl, | ||
179 | .mv_outb = sh7751se_outb, | ||
180 | .mv_outw = sh7751se_outw, | ||
181 | .mv_outl = sh7751se_outl, | ||
182 | |||
183 | .mv_inb_p = sh7751se_inb_p, | ||
184 | .mv_inw_p = sh7751se_inw, | ||
185 | .mv_inl_p = sh7751se_inl, | ||
186 | .mv_outb_p = sh7751se_outb_p, | ||
187 | .mv_outw_p = sh7751se_outw, | ||
188 | .mv_outl_p = sh7751se_outl, | ||
189 | |||
190 | .mv_insl = sh7751se_insl, | ||
191 | .mv_outsl = sh7751se_outsl, | ||
192 | |||
193 | .mv_init_irq = init_7751se_IRQ, | ||
194 | #ifdef CONFIG_HEARTBEAT | ||
195 | .mv_heartbeat = heartbeat_7751se, | ||
196 | #endif | ||
197 | }; | ||
198 | ALIAS_MV(7751se) | ||
diff --git a/arch/sh/boards/sh03/setup.c b/arch/sh/boards/sh03/setup.c index 7d31d6aed8a..6c310587ddf 100644 --- a/arch/sh/boards/sh03/setup.c +++ b/arch/sh/boards/sh03/setup.c | |||
@@ -13,12 +13,7 @@ | |||
13 | #include <asm/sh03/sh03.h> | 13 | #include <asm/sh03/sh03.h> |
14 | #include <asm/addrspace.h> | 14 | #include <asm/addrspace.h> |
15 | 15 | ||
16 | const char *get_system_type(void) | 16 | static void __init init_sh03_IRQ(void) |
17 | { | ||
18 | return "Interface (CTP/PCI-SH03)"; | ||
19 | } | ||
20 | |||
21 | static void init_sh03_IRQ(void) | ||
22 | { | 17 | { |
23 | ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); | 18 | ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); |
24 | 19 | ||
@@ -41,7 +36,17 @@ static void __iomem *sh03_ioport_map(unsigned long port, unsigned int size) | |||
41 | return (void __iomem *)(port + PCI_IO_BASE); | 36 | return (void __iomem *)(port + PCI_IO_BASE); |
42 | } | 37 | } |
43 | 38 | ||
39 | /* arch/sh/boards/sh03/rtc.c */ | ||
40 | void sh03_time_init(void); | ||
41 | |||
42 | static void __init sh03_setup(char **cmdline_p) | ||
43 | { | ||
44 | board_time_init = sh03_time_init; | ||
45 | } | ||
46 | |||
44 | struct sh_machine_vector mv_sh03 __initmv = { | 47 | struct sh_machine_vector mv_sh03 __initmv = { |
48 | .mv_name = "Interface (CTP/PCI-SH03)", | ||
49 | .mv_setup = sh03_setup, | ||
45 | .mv_nr_irqs = 48, | 50 | .mv_nr_irqs = 48, |
46 | .mv_ioport_map = sh03_ioport_map, | 51 | .mv_ioport_map = sh03_ioport_map, |
47 | .mv_init_irq = init_sh03_IRQ, | 52 | .mv_init_irq = init_sh03_IRQ, |
@@ -51,12 +56,3 @@ struct sh_machine_vector mv_sh03 __initmv = { | |||
51 | #endif | 56 | #endif |
52 | }; | 57 | }; |
53 | ALIAS_MV(sh03) | 58 | ALIAS_MV(sh03) |
54 | |||
55 | /* arch/sh/boards/sh03/rtc.c */ | ||
56 | void sh03_time_init(void); | ||
57 | |||
58 | int __init platform_setup(void) | ||
59 | { | ||
60 | board_time_init = sh03_time_init; | ||
61 | return 0; | ||
62 | } | ||
diff --git a/arch/sh/boards/shmin/setup.c b/arch/sh/boards/shmin/setup.c index a950ec4d765..2f0c19706cf 100644 --- a/arch/sh/boards/shmin/setup.c +++ b/arch/sh/boards/shmin/setup.c | |||
@@ -14,21 +14,12 @@ | |||
14 | 14 | ||
15 | #define PFC_PHCR 0xa400010e | 15 | #define PFC_PHCR 0xa400010e |
16 | 16 | ||
17 | const char *get_system_type(void) | ||
18 | { | ||
19 | return "SHMIN"; | ||
20 | } | ||
21 | |||
22 | static void __init init_shmin_irq(void) | 17 | static void __init init_shmin_irq(void) |
23 | { | 18 | { |
24 | ctrl_outw(0x2a00, PFC_PHCR); // IRQ0-3=IRQ | 19 | ctrl_outw(0x2a00, PFC_PHCR); // IRQ0-3=IRQ |
25 | ctrl_outw(0x0aaa, INTC_ICR1); // IRQ0-3=IRQ-mode,Low-active. | 20 | ctrl_outw(0x0aaa, INTC_ICR1); // IRQ0-3=IRQ-mode,Low-active. |
26 | } | 21 | } |
27 | 22 | ||
28 | void __init platform_setup(void) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | static void __iomem *shmin_ioport_map(unsigned long port, unsigned int size) | 23 | static void __iomem *shmin_ioport_map(unsigned long port, unsigned int size) |
33 | { | 24 | { |
34 | static int dummy; | 25 | static int dummy; |
@@ -43,6 +34,7 @@ static void __iomem *shmin_ioport_map(unsigned long port, unsigned int size) | |||
43 | } | 34 | } |
44 | 35 | ||
45 | struct sh_machine_vector mv_shmin __initmv = { | 36 | struct sh_machine_vector mv_shmin __initmv = { |
37 | .mv_name = "SHMIN", | ||
46 | .mv_init_irq = init_shmin_irq, | 38 | .mv_init_irq = init_shmin_irq, |
47 | .mv_ioport_map = shmin_ioport_map, | 39 | .mv_ioport_map = shmin_ioport_map, |
48 | }; | 40 | }; |
diff --git a/arch/sh/boards/snapgear/setup.c b/arch/sh/boards/snapgear/setup.c index 66ce32f8b13..f5e98c56b53 100644 --- a/arch/sh/boards/snapgear/setup.c +++ b/arch/sh/boards/snapgear/setup.c | |||
@@ -81,16 +81,20 @@ static void __init init_snapgear_IRQ(void) | |||
81 | make_ipr_irq(IRL3_IRQ, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY); | 81 | make_ipr_irq(IRL3_IRQ, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY); |
82 | } | 82 | } |
83 | 83 | ||
84 | const char *get_system_type(void) | 84 | /* |
85 | * Initialize the board | ||
86 | */ | ||
87 | static void __init snapgear_setup(char **cmdline_p) | ||
85 | { | 88 | { |
86 | return "SnapGear SecureEdge5410"; | 89 | board_time_init = secureedge5410_rtc_init; |
87 | } | 90 | } |
88 | 91 | ||
89 | /* | 92 | /* |
90 | * The Machine Vector | 93 | * The Machine Vector |
91 | */ | 94 | */ |
92 | |||
93 | struct sh_machine_vector mv_snapgear __initmv = { | 95 | struct sh_machine_vector mv_snapgear __initmv = { |
96 | .mv_name = "SnapGear SecureEdge5410", | ||
97 | .mv_setup = snapgear_setup, | ||
94 | .mv_nr_irqs = 72, | 98 | .mv_nr_irqs = 72, |
95 | 99 | ||
96 | .mv_inb = snapgear_inb, | 100 | .mv_inb = snapgear_inb, |
@@ -110,15 +114,3 @@ struct sh_machine_vector mv_snapgear __initmv = { | |||
110 | .mv_init_irq = init_snapgear_IRQ, | 114 | .mv_init_irq = init_snapgear_IRQ, |
111 | }; | 115 | }; |
112 | ALIAS_MV(snapgear) | 116 | ALIAS_MV(snapgear) |
113 | |||
114 | /* | ||
115 | * Initialize the board | ||
116 | */ | ||
117 | |||
118 | int __init platform_setup(void) | ||
119 | { | ||
120 | board_time_init = secureedge5410_rtc_init; | ||
121 | |||
122 | return 0; | ||
123 | } | ||
124 | |||
diff --git a/arch/sh/boards/superh/microdev/setup.c b/arch/sh/boards/superh/microdev/setup.c index 61b402a3f5d..031c814e6e7 100644 --- a/arch/sh/boards/superh/microdev/setup.c +++ b/arch/sh/boards/superh/microdev/setup.c | |||
@@ -10,7 +10,6 @@ | |||
10 | * May be copied or modified under the terms of the GNU General Public | 10 | * May be copied or modified under the terms of the GNU General Public |
11 | * License. See linux/COPYING for more information. | 11 | * License. See linux/COPYING for more information. |
12 | */ | 12 | */ |
13 | |||
14 | #include <linux/init.h> | 13 | #include <linux/init.h> |
15 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
16 | #include <linux/ioport.h> | 15 | #include <linux/ioport.h> |
@@ -21,41 +20,6 @@ | |||
21 | 20 | ||
22 | extern void microdev_heartbeat(void); | 21 | extern void microdev_heartbeat(void); |
23 | 22 | ||
24 | /* | ||
25 | * The Machine Vector | ||
26 | */ | ||
27 | |||
28 | struct sh_machine_vector mv_sh4202_microdev __initmv = { | ||
29 | .mv_nr_irqs = 72, /* QQQ need to check this - use the MACRO */ | ||
30 | |||
31 | .mv_inb = microdev_inb, | ||
32 | .mv_inw = microdev_inw, | ||
33 | .mv_inl = microdev_inl, | ||
34 | .mv_outb = microdev_outb, | ||
35 | .mv_outw = microdev_outw, | ||
36 | .mv_outl = microdev_outl, | ||
37 | |||
38 | .mv_inb_p = microdev_inb_p, | ||
39 | .mv_inw_p = microdev_inw_p, | ||
40 | .mv_inl_p = microdev_inl_p, | ||
41 | .mv_outb_p = microdev_outb_p, | ||
42 | .mv_outw_p = microdev_outw_p, | ||
43 | .mv_outl_p = microdev_outl_p, | ||
44 | |||
45 | .mv_insb = microdev_insb, | ||
46 | .mv_insw = microdev_insw, | ||
47 | .mv_insl = microdev_insl, | ||
48 | .mv_outsb = microdev_outsb, | ||
49 | .mv_outsw = microdev_outsw, | ||
50 | .mv_outsl = microdev_outsl, | ||
51 | |||
52 | .mv_init_irq = init_microdev_irq, | ||
53 | |||
54 | #ifdef CONFIG_HEARTBEAT | ||
55 | .mv_heartbeat = microdev_heartbeat, | ||
56 | #endif | ||
57 | }; | ||
58 | ALIAS_MV(sh4202_microdev) | ||
59 | 23 | ||
60 | /****************************************************************************/ | 24 | /****************************************************************************/ |
61 | 25 | ||
@@ -113,11 +77,6 @@ ALIAS_MV(sh4202_microdev) | |||
113 | /* assume a Keyboard Controller is present */ | 77 | /* assume a Keyboard Controller is present */ |
114 | int microdev_kbd_controller_present = 1; | 78 | int microdev_kbd_controller_present = 1; |
115 | 79 | ||
116 | const char *get_system_type(void) | ||
117 | { | ||
118 | return "SH4-202 MicroDev"; | ||
119 | } | ||
120 | |||
121 | static struct resource smc91x_resources[] = { | 80 | static struct resource smc91x_resources[] = { |
122 | [0] = { | 81 | [0] = { |
123 | .start = 0x300, | 82 | .start = 0x300, |
@@ -291,25 +250,9 @@ static int __init microdev_devices_setup(void) | |||
291 | return platform_add_devices(microdev_devices, ARRAY_SIZE(microdev_devices)); | 250 | return platform_add_devices(microdev_devices, ARRAY_SIZE(microdev_devices)); |
292 | } | 251 | } |
293 | 252 | ||
294 | __initcall(microdev_devices_setup); | 253 | /* |
295 | 254 | * Setup for the SMSC FDC37C93xAPM | |
296 | void __init platform_setup(void) | 255 | */ |
297 | { | ||
298 | int * const fpgaRevisionRegister = (int*)(MICRODEV_FPGA_GP_BASE + 0x8ul); | ||
299 | const int fpgaRevision = *fpgaRevisionRegister; | ||
300 | int * const CacheControlRegister = (int*)CCR; | ||
301 | |||
302 | printk("SuperH %s board (FPGA rev: 0x%0x, CCR: 0x%0x)\n", | ||
303 | get_system_type(), fpgaRevision, *CacheControlRegister); | ||
304 | } | ||
305 | |||
306 | |||
307 | /****************************************************************************/ | ||
308 | |||
309 | |||
310 | /* | ||
311 | * Setup for the SMSC FDC37C93xAPM | ||
312 | */ | ||
313 | static int __init smsc_superio_setup(void) | 256 | static int __init smsc_superio_setup(void) |
314 | { | 257 | { |
315 | 258 | ||
@@ -412,8 +355,52 @@ static int __init smsc_superio_setup(void) | |||
412 | return 0; | 355 | return 0; |
413 | } | 356 | } |
414 | 357 | ||
358 | static void __init microdev_setup(char **cmdline_p) | ||
359 | { | ||
360 | int * const fpgaRevisionRegister = (int*)(MICRODEV_FPGA_GP_BASE + 0x8ul); | ||
361 | const int fpgaRevision = *fpgaRevisionRegister; | ||
362 | int * const CacheControlRegister = (int*)CCR; | ||
363 | |||
364 | device_initcall(microdev_devices_setup); | ||
365 | device_initcall(smsc_superio_setup); | ||
415 | 366 | ||
416 | /* This is grotty, but, because kernel is always referenced on the link line | 367 | printk("SuperH %s board (FPGA rev: 0x%0x, CCR: 0x%0x)\n", |
417 | * before any devices, this is safe. | 368 | get_system_type(), fpgaRevision, *CacheControlRegister); |
369 | } | ||
370 | |||
371 | /* | ||
372 | * The Machine Vector | ||
418 | */ | 373 | */ |
419 | __initcall(smsc_superio_setup); | 374 | struct sh_machine_vector mv_sh4202_microdev __initmv = { |
375 | .mv_name = "SH4-202 MicroDev", | ||
376 | .mv_setup = microdev_setup, | ||
377 | .mv_nr_irqs = 72, /* QQQ need to check this - use the MACRO */ | ||
378 | |||
379 | .mv_inb = microdev_inb, | ||
380 | .mv_inw = microdev_inw, | ||
381 | .mv_inl = microdev_inl, | ||
382 | .mv_outb = microdev_outb, | ||
383 | .mv_outw = microdev_outw, | ||
384 | .mv_outl = microdev_outl, | ||
385 | |||
386 | .mv_inb_p = microdev_inb_p, | ||
387 | .mv_inw_p = microdev_inw_p, | ||
388 | .mv_inl_p = microdev_inl_p, | ||
389 | .mv_outb_p = microdev_outb_p, | ||
390 | .mv_outw_p = microdev_outw_p, | ||
391 | .mv_outl_p = microdev_outl_p, | ||
392 | |||
393 | .mv_insb = microdev_insb, | ||
394 | .mv_insw = microdev_insw, | ||
395 | .mv_insl = microdev_insl, | ||
396 | .mv_outsb = microdev_outsb, | ||
397 | .mv_outsw = microdev_outsw, | ||
398 | .mv_outsl = microdev_outsl, | ||
399 | |||
400 | .mv_init_irq = init_microdev_irq, | ||
401 | |||
402 | #ifdef CONFIG_HEARTBEAT | ||
403 | .mv_heartbeat = microdev_heartbeat, | ||
404 | #endif | ||
405 | }; | ||
406 | ALIAS_MV(sh4202_microdev) | ||
diff --git a/arch/sh/boards/titan/setup.c b/arch/sh/boards/titan/setup.c index c8b431c1d0f..52b66d8b8d2 100644 --- a/arch/sh/boards/titan/setup.c +++ b/arch/sh/boards/titan/setup.c | |||
@@ -20,19 +20,8 @@ static void __init init_titan_irq(void) | |||
20 | make_ipr_irq( TITAN_IRQ_USB, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY); /* PCIRQ3 */ | 20 | make_ipr_irq( TITAN_IRQ_USB, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY); /* PCIRQ3 */ |
21 | } | 21 | } |
22 | 22 | ||
23 | const char *get_system_type(void) | ||
24 | { | ||
25 | return "Titan"; | ||
26 | } | ||
27 | |||
28 | int __init platform_setup(void) | ||
29 | { | ||
30 | printk("%s Platform Setup\n", get_system_type()); | ||
31 | return 0; | ||
32 | } | ||
33 | |||
34 | struct sh_machine_vector mv_titan __initmv = { | 23 | struct sh_machine_vector mv_titan __initmv = { |
35 | .mv_nr_irqs = NR_IRQS, | 24 | .mv_name = "Titan", |
36 | 25 | ||
37 | .mv_inb = titan_inb, | 26 | .mv_inb = titan_inb, |
38 | .mv_inw = titan_inw, | 27 | .mv_inw = titan_inw, |
diff --git a/arch/sh/boards/unknown/setup.c b/arch/sh/boards/unknown/setup.c index c5e4ed10876..1c941370a2e 100644 --- a/arch/sh/boards/unknown/setup.c +++ b/arch/sh/boards/unknown/setup.c | |||
@@ -14,19 +14,8 @@ | |||
14 | */ | 14 | */ |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <asm/machvec.h> | 16 | #include <asm/machvec.h> |
17 | #include <asm/irq.h> | ||
18 | 17 | ||
19 | struct sh_machine_vector mv_unknown __initmv = { | 18 | struct sh_machine_vector mv_unknown __initmv = { |
20 | .mv_nr_irqs = NR_IRQS, | 19 | .mv_name = "Unknown", |
21 | }; | 20 | }; |
22 | ALIAS_MV(unknown) | 21 | ALIAS_MV(unknown) |
23 | |||
24 | const char *get_system_type(void) | ||
25 | { | ||
26 | return "Unknown"; | ||
27 | } | ||
28 | |||
29 | void __init platform_setup(void) | ||
30 | { | ||
31 | } | ||
32 | |||
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 86ef17fe48b..de8df969d6a 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c | |||
@@ -43,27 +43,14 @@ extern void * __rd_start, * __rd_end; | |||
43 | * The bigger value means no problem. | 43 | * The bigger value means no problem. |
44 | */ | 44 | */ |
45 | struct sh_cpuinfo boot_cpu_data = { CPU_SH_NONE, 10000000, }; | 45 | struct sh_cpuinfo boot_cpu_data = { CPU_SH_NONE, 10000000, }; |
46 | #ifdef CONFIG_VT | ||
46 | struct screen_info screen_info; | 47 | struct screen_info screen_info; |
48 | #endif | ||
47 | 49 | ||
48 | #if defined(CONFIG_SH_UNKNOWN) | 50 | #if defined(CONFIG_SH_UNKNOWN) |
49 | struct sh_machine_vector sh_mv; | 51 | struct sh_machine_vector sh_mv; |
50 | #endif | 52 | #endif |
51 | 53 | ||
52 | /* We need this to satisfy some external references. */ | ||
53 | struct screen_info screen_info = { | ||
54 | 0, 25, /* orig-x, orig-y */ | ||
55 | 0, /* unused */ | ||
56 | 0, /* orig-video-page */ | ||
57 | 0, /* orig-video-mode */ | ||
58 | 80, /* orig-video-cols */ | ||
59 | 0,0,0, /* ega_ax, ega_bx, ega_cx */ | ||
60 | 25, /* orig-video-lines */ | ||
61 | 0, /* orig-video-isVGA */ | ||
62 | 16 /* orig-video-points */ | ||
63 | }; | ||
64 | |||
65 | extern void platform_setup(void); | ||
66 | extern char *get_system_type(void); | ||
67 | extern int root_mountflags; | 54 | extern int root_mountflags; |
68 | 55 | ||
69 | #define MV_NAME_SIZE 32 | 56 | #define MV_NAME_SIZE 32 |
@@ -90,29 +77,8 @@ static struct sh_machine_vector* __init get_mv_byname(const char* name); | |||
90 | 77 | ||
91 | static char command_line[COMMAND_LINE_SIZE] = { 0, }; | 78 | static char command_line[COMMAND_LINE_SIZE] = { 0, }; |
92 | 79 | ||
93 | struct resource standard_io_resources[] = { | 80 | static struct resource code_resource = { .name = "Kernel code", }; |
94 | { "dma1", 0x00, 0x1f }, | 81 | static struct resource data_resource = { .name = "Kernel data", }; |
95 | { "pic1", 0x20, 0x3f }, | ||
96 | { "timer", 0x40, 0x5f }, | ||
97 | { "keyboard", 0x60, 0x6f }, | ||
98 | { "dma page reg", 0x80, 0x8f }, | ||
99 | { "pic2", 0xa0, 0xbf }, | ||
100 | { "dma2", 0xc0, 0xdf }, | ||
101 | { "fpu", 0xf0, 0xff } | ||
102 | }; | ||
103 | |||
104 | #define STANDARD_IO_RESOURCES (sizeof(standard_io_resources)/sizeof(struct resource)) | ||
105 | |||
106 | /* System RAM - interrupted by the 640kB-1M hole */ | ||
107 | #define code_resource (ram_resources[3]) | ||
108 | #define data_resource (ram_resources[4]) | ||
109 | static struct resource ram_resources[] = { | ||
110 | { "System RAM", 0x000000, 0x09ffff, IORESOURCE_BUSY }, | ||
111 | { "System RAM", 0x100000, 0x100000, IORESOURCE_BUSY }, | ||
112 | { "Video RAM area", 0x0a0000, 0x0bffff }, | ||
113 | { "Kernel code", 0x100000, 0 }, | ||
114 | { "Kernel data", 0, 0 } | ||
115 | }; | ||
116 | 82 | ||
117 | unsigned long memory_start, memory_end; | 83 | unsigned long memory_start, memory_end; |
118 | 84 | ||
@@ -255,6 +221,9 @@ static int __init sh_mv_setup(char **cmdline_p) | |||
255 | __set_io_port_base(mv_io_base); | 221 | __set_io_port_base(mv_io_base); |
256 | #endif | 222 | #endif |
257 | 223 | ||
224 | if (!sh_mv.mv_nr_irqs) | ||
225 | sh_mv.mv_nr_irqs = NR_IRQS; | ||
226 | |||
258 | return 0; | 227 | return 0; |
259 | } | 228 | } |
260 | 229 | ||
@@ -263,7 +232,6 @@ void __init setup_arch(char **cmdline_p) | |||
263 | unsigned long bootmap_size; | 232 | unsigned long bootmap_size; |
264 | unsigned long start_pfn, max_pfn, max_low_pfn; | 233 | unsigned long start_pfn, max_pfn, max_low_pfn; |
265 | 234 | ||
266 | |||
267 | #ifdef CONFIG_CMDLINE_BOOL | 235 | #ifdef CONFIG_CMDLINE_BOOL |
268 | strcpy(COMMAND_LINE, CONFIG_CMDLINE); | 236 | strcpy(COMMAND_LINE, CONFIG_CMDLINE); |
269 | #endif | 237 | #endif |
@@ -382,14 +350,14 @@ void __init setup_arch(char **cmdline_p) | |||
382 | #endif | 350 | #endif |
383 | 351 | ||
384 | /* Perform the machine specific initialisation */ | 352 | /* Perform the machine specific initialisation */ |
385 | platform_setup(); | 353 | if (likely(sh_mv.mv_setup)) |
354 | sh_mv.mv_setup(cmdline_p); | ||
386 | 355 | ||
387 | paging_init(); | 356 | paging_init(); |
388 | } | 357 | } |
389 | 358 | ||
390 | struct sh_machine_vector* __init get_mv_byname(const char* name) | 359 | struct sh_machine_vector* __init get_mv_byname(const char* name) |
391 | { | 360 | { |
392 | extern int strcasecmp(const char *, const char *); | ||
393 | extern long __machvec_start, __machvec_end; | 361 | extern long __machvec_start, __machvec_end; |
394 | struct sh_machine_vector *all_vecs = | 362 | struct sh_machine_vector *all_vecs = |
395 | (struct sh_machine_vector *)&__machvec_start; | 363 | (struct sh_machine_vector *)&__machvec_start; |
@@ -467,7 +435,8 @@ static void show_cpuflags(struct seq_file *m) | |||
467 | seq_printf(m, "\n"); | 435 | seq_printf(m, "\n"); |
468 | } | 436 | } |
469 | 437 | ||
470 | static void show_cacheinfo(struct seq_file *m, const char *type, struct cache_info info) | 438 | static void show_cacheinfo(struct seq_file *m, const char *type, |
439 | struct cache_info info) | ||
471 | { | 440 | { |
472 | unsigned int cache_size; | 441 | unsigned int cache_size; |
473 | 442 | ||
@@ -624,4 +593,3 @@ static int __init kgdb_parse_options(char *options) | |||
624 | } | 593 | } |
625 | __setup("kgdb=", kgdb_parse_options); | 594 | __setup("kgdb=", kgdb_parse_options); |
626 | #endif /* CONFIG_SH_KGDB */ | 595 | #endif /* CONFIG_SH_KGDB */ |
627 | |||
diff --git a/include/asm-sh/machvec.h b/include/asm-sh/machvec.h index 550501fa4fe..70389b72ffe 100644 --- a/include/asm-sh/machvec.h +++ b/include/asm-sh/machvec.h | |||
@@ -8,17 +8,18 @@ | |||
8 | */ | 8 | */ |
9 | 9 | ||
10 | #ifndef _ASM_SH_MACHVEC_H | 10 | #ifndef _ASM_SH_MACHVEC_H |
11 | #define _ASM_SH_MACHVEC_H 1 | 11 | #define _ASM_SH_MACHVEC_H |
12 | 12 | ||
13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
14 | #include <linux/time.h> | 14 | #include <linux/time.h> |
15 | |||
16 | #include <asm/machtypes.h> | 15 | #include <asm/machtypes.h> |
17 | #include <asm/machvec_init.h> | 16 | #include <asm/machvec_init.h> |
18 | 17 | ||
19 | struct device; | 18 | struct device; |
20 | 19 | ||
21 | struct sh_machine_vector { | 20 | struct sh_machine_vector { |
21 | void (*mv_setup)(char **cmdline_p); | ||
22 | const char *mv_name; | ||
22 | int mv_nr_irqs; | 23 | int mv_nr_irqs; |
23 | 24 | ||
24 | u8 (*mv_inb)(unsigned long); | 25 | u8 (*mv_inb)(unsigned long); |
@@ -65,4 +66,6 @@ struct sh_machine_vector { | |||
65 | 66 | ||
66 | extern struct sh_machine_vector sh_mv; | 67 | extern struct sh_machine_vector sh_mv; |
67 | 68 | ||
69 | #define get_system_type() sh_mv.mv_name | ||
70 | |||
68 | #endif /* _ASM_SH_MACHVEC_H */ | 71 | #endif /* _ASM_SH_MACHVEC_H */ |