diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-11 22:21:23 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-11 22:21:23 -0400 |
commit | dd6d1844af33acb4edd0a40b1770d091a22c94be (patch) | |
tree | e6bd3549919773a13b770324a4dddb51b194b452 /arch/mips/jazz/setup.c | |
parent | 19f71153b9be219756c6b2757921433a69b7975c (diff) | |
parent | aaf76a3245c02faba51c96b9a340c14d6bb0dcc0 (diff) |
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (80 commits)
[MIPS] tlbex.c: Cleanup __init usage.
[MIPS] WRPPMC serial support move to platform device
[MIPS] R1: Fix hazard barriers to make kernels work on R2 also.
[MIPS] VPE: reimplement ELF loader.
[MIPS] cleanup WRPPMC include files
[MIPS] Add BUG_ON assertion for attempt to run kernel on the wrong CPU type.
[MIPS] SMP: Use ISO C struct initializer for local structs.
[MIPS] SMP: Kill useless casts.
[MIPS] Kill num_online_cpus() loops.
[MIPS] SMP: Implement smp_call_function_mask().
[MIPS] Make facility to convert CPU types to strings generally available.
[MIPS] Convert list of CPU types from #define to enum.
[MIPS] Optimize get_unaligned / put_unaligned implementations.
[MIPS] checkfiles: Fix "need space after that ','" errors.
[MIPS] Fix "no space between function name and open parenthesis" warnings.
[MIPS] Allow hardwiring of the CPU type to a single type for optimization.
[MIPS] tlbex: Size optimize code by declaring a few functions inline.
[MIPS] pg-r4k.c: Dump the generated code
[MIPS] Cobalt: Remove cobalt_machine_power_off()
[MIPS] Cobalt: Move reset port definition to arch/mips/cobalt/reset.c
...
Diffstat (limited to 'arch/mips/jazz/setup.c')
-rw-r--r-- | arch/mips/jazz/setup.c | 134 |
1 files changed, 121 insertions, 13 deletions
diff --git a/arch/mips/jazz/setup.c b/arch/mips/jazz/setup.c index 798279e06691..cfc7dce78dab 100644 --- a/arch/mips/jazz/setup.c +++ b/arch/mips/jazz/setup.c | |||
@@ -7,6 +7,7 @@ | |||
7 | * | 7 | * |
8 | * Copyright (C) 1996, 1997, 1998, 2001 by Ralf Baechle | 8 | * Copyright (C) 1996, 1997, 1998, 2001 by Ralf Baechle |
9 | * Copyright (C) 2001 MIPS Technologies, Inc. | 9 | * Copyright (C) 2001 MIPS Technologies, Inc. |
10 | * Copyright (C) 2007 by Thomas Bogendoerfer | ||
10 | */ | 11 | */ |
11 | #include <linux/eisa.h> | 12 | #include <linux/eisa.h> |
12 | #include <linux/hdreg.h> | 13 | #include <linux/hdreg.h> |
@@ -20,8 +21,11 @@ | |||
20 | #include <linux/ide.h> | 21 | #include <linux/ide.h> |
21 | #include <linux/pm.h> | 22 | #include <linux/pm.h> |
22 | #include <linux/screen_info.h> | 23 | #include <linux/screen_info.h> |
24 | #include <linux/platform_device.h> | ||
25 | #include <linux/serial_8250.h> | ||
23 | 26 | ||
24 | #include <asm/bootinfo.h> | 27 | #include <asm/bootinfo.h> |
28 | #include <asm/i8253.h> | ||
25 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
26 | #include <asm/jazz.h> | 30 | #include <asm/jazz.h> |
27 | #include <asm/jazzdma.h> | 31 | #include <asm/jazzdma.h> |
@@ -30,18 +34,12 @@ | |||
30 | #include <asm/pgtable.h> | 34 | #include <asm/pgtable.h> |
31 | #include <asm/time.h> | 35 | #include <asm/time.h> |
32 | #include <asm/traps.h> | 36 | #include <asm/traps.h> |
37 | #include <asm/mc146818-time.h> | ||
33 | 38 | ||
34 | extern asmlinkage void jazz_handle_int(void); | 39 | extern asmlinkage void jazz_handle_int(void); |
35 | 40 | ||
36 | extern void jazz_machine_restart(char *command); | 41 | extern void jazz_machine_restart(char *command); |
37 | 42 | ||
38 | void __init plat_timer_setup(struct irqaction *irq) | ||
39 | { | ||
40 | /* set the clock to 100 Hz */ | ||
41 | r4030_write_reg32(JAZZ_TIMER_INTERVAL, 9); | ||
42 | setup_irq(JAZZ_TIMER_IRQ, irq); | ||
43 | } | ||
44 | |||
45 | static struct resource jazz_io_resources[] = { | 43 | static struct resource jazz_io_resources[] = { |
46 | { | 44 | { |
47 | .start = 0x00, | 45 | .start = 0x00, |
@@ -66,18 +64,21 @@ static struct resource jazz_io_resources[] = { | |||
66 | } | 64 | } |
67 | }; | 65 | }; |
68 | 66 | ||
67 | void __init plat_time_init(void) | ||
68 | { | ||
69 | setup_pit_timer(); | ||
70 | } | ||
71 | |||
69 | void __init plat_mem_setup(void) | 72 | void __init plat_mem_setup(void) |
70 | { | 73 | { |
71 | int i; | 74 | int i; |
72 | 75 | ||
73 | /* Map 0xe0000000 -> 0x0:800005C0, 0xe0010000 -> 0x1:30000580 */ | 76 | /* Map 0xe0000000 -> 0x0:800005C0, 0xe0010000 -> 0x1:30000580 */ |
74 | add_wired_entry (0x02000017, 0x03c00017, 0xe0000000, PM_64K); | 77 | add_wired_entry(0x02000017, 0x03c00017, 0xe0000000, PM_64K); |
75 | |||
76 | /* Map 0xe2000000 -> 0x0:900005C0, 0xe3010000 -> 0x0:910005C0 */ | 78 | /* Map 0xe2000000 -> 0x0:900005C0, 0xe3010000 -> 0x0:910005C0 */ |
77 | add_wired_entry (0x02400017, 0x02440017, 0xe2000000, PM_16M); | 79 | add_wired_entry(0x02400017, 0x02440017, 0xe2000000, PM_16M); |
78 | |||
79 | /* Map 0xe4000000 -> 0x0:600005C0, 0xe4100000 -> 400005C0 */ | 80 | /* Map 0xe4000000 -> 0x0:600005C0, 0xe4100000 -> 400005C0 */ |
80 | add_wired_entry (0x01800017, 0x01000017, 0xe4000000, PM_4M); | 81 | add_wired_entry(0x01800017, 0x01000017, 0xe4000000, PM_4M); |
81 | 82 | ||
82 | set_io_port_base(JAZZ_PORT_BASE); | 83 | set_io_port_base(JAZZ_PORT_BASE); |
83 | #ifdef CONFIG_EISA | 84 | #ifdef CONFIG_EISA |
@@ -94,6 +95,7 @@ void __init plat_mem_setup(void) | |||
94 | 95 | ||
95 | _machine_restart = jazz_machine_restart; | 96 | _machine_restart = jazz_machine_restart; |
96 | 97 | ||
98 | #ifdef CONFIG_VT | ||
97 | screen_info = (struct screen_info) { | 99 | screen_info = (struct screen_info) { |
98 | 0, 0, /* orig-x, orig-y */ | 100 | 0, 0, /* orig-x, orig-y */ |
99 | 0, /* unused */ | 101 | 0, /* unused */ |
@@ -105,6 +107,112 @@ void __init plat_mem_setup(void) | |||
105 | 0, /* orig_video_isVGA */ | 107 | 0, /* orig_video_isVGA */ |
106 | 16 /* orig_video_points */ | 108 | 16 /* orig_video_points */ |
107 | }; | 109 | }; |
110 | #endif | ||
108 | 111 | ||
109 | vdma_init(); | 112 | add_preferred_console("ttyS", 0, "9600"); |
110 | } | 113 | } |
114 | |||
115 | #ifdef CONFIG_OLIVETTI_M700 | ||
116 | #define UART_CLK 1843200 | ||
117 | #else | ||
118 | /* Some Jazz machines seem to have an 8MHz crystal clock but I don't know | ||
119 | exactly which ones ... XXX */ | ||
120 | #define UART_CLK (8000000 / 16) /* ( 3072000 / 16) */ | ||
121 | #endif | ||
122 | |||
123 | #define MEMPORT(_base, _irq) \ | ||
124 | { \ | ||
125 | .mapbase = (_base), \ | ||
126 | .membase = (void *)(_base), \ | ||
127 | .irq = (_irq), \ | ||
128 | .uartclk = UART_CLK, \ | ||
129 | .iotype = UPIO_MEM, \ | ||
130 | .flags = UPF_BOOT_AUTOCONF, \ | ||
131 | } | ||
132 | |||
133 | static struct plat_serial8250_port jazz_serial_data[] = { | ||
134 | MEMPORT(JAZZ_SERIAL1_BASE, JAZZ_SERIAL1_IRQ), | ||
135 | MEMPORT(JAZZ_SERIAL2_BASE, JAZZ_SERIAL2_IRQ), | ||
136 | { }, | ||
137 | }; | ||
138 | |||
139 | static struct platform_device jazz_serial8250_device = { | ||
140 | .name = "serial8250", | ||
141 | .id = PLAT8250_DEV_PLATFORM, | ||
142 | .dev = { | ||
143 | .platform_data = jazz_serial_data, | ||
144 | }, | ||
145 | }; | ||
146 | |||
147 | static struct resource jazz_esp_rsrc[] = { | ||
148 | { | ||
149 | .start = JAZZ_SCSI_BASE, | ||
150 | .end = JAZZ_SCSI_BASE + 31, | ||
151 | .flags = IORESOURCE_MEM | ||
152 | }, | ||
153 | { | ||
154 | .start = JAZZ_SCSI_DMA, | ||
155 | .end = JAZZ_SCSI_DMA, | ||
156 | .flags = IORESOURCE_MEM | ||
157 | }, | ||
158 | { | ||
159 | .start = JAZZ_SCSI_IRQ, | ||
160 | .end = JAZZ_SCSI_IRQ, | ||
161 | .flags = IORESOURCE_IRQ | ||
162 | } | ||
163 | }; | ||
164 | |||
165 | static struct platform_device jazz_esp_pdev = { | ||
166 | .name = "jazz_esp", | ||
167 | .num_resources = ARRAY_SIZE(jazz_esp_rsrc), | ||
168 | .resource = jazz_esp_rsrc | ||
169 | }; | ||
170 | |||
171 | static struct resource jazz_sonic_rsrc[] = { | ||
172 | { | ||
173 | .start = JAZZ_ETHERNET_BASE, | ||
174 | .end = JAZZ_ETHERNET_BASE + 0xff, | ||
175 | .flags = IORESOURCE_MEM | ||
176 | }, | ||
177 | { | ||
178 | .start = JAZZ_ETHERNET_IRQ, | ||
179 | .end = JAZZ_ETHERNET_IRQ, | ||
180 | .flags = IORESOURCE_IRQ | ||
181 | } | ||
182 | }; | ||
183 | |||
184 | static struct platform_device jazz_sonic_pdev = { | ||
185 | .name = "jazzsonic", | ||
186 | .num_resources = ARRAY_SIZE(jazz_sonic_rsrc), | ||
187 | .resource = jazz_sonic_rsrc | ||
188 | }; | ||
189 | |||
190 | static struct resource jazz_cmos_rsrc[] = { | ||
191 | { | ||
192 | .start = 0x70, | ||
193 | .end = 0x71, | ||
194 | .flags = IORESOURCE_IO | ||
195 | }, | ||
196 | { | ||
197 | .start = 8, | ||
198 | .end = 8, | ||
199 | .flags = IORESOURCE_IRQ | ||
200 | } | ||
201 | }; | ||
202 | |||
203 | static struct platform_device jazz_cmos_pdev = { | ||
204 | .name = "rtc_cmos", | ||
205 | .num_resources = ARRAY_SIZE(jazz_cmos_rsrc), | ||
206 | .resource = jazz_cmos_rsrc | ||
207 | }; | ||
208 | |||
209 | static int __init jazz_setup_devinit(void) | ||
210 | { | ||
211 | platform_device_register(&jazz_serial8250_device); | ||
212 | platform_device_register(&jazz_esp_pdev); | ||
213 | platform_device_register(&jazz_sonic_pdev); | ||
214 | platform_device_register(&jazz_cmos_pdev); | ||
215 | return 0; | ||
216 | } | ||
217 | |||
218 | device_initcall(jazz_setup_devinit); | ||