blob: 44a418ac88a4a247955e2628a60c4dc8041102a4 [file] [log] [blame]
Stefan Schmidt9ab24e42008-07-09 08:08:17 +01001/*
2 * ezx.c - Common code for the EZX platform.
3 *
4 * Copyright (C) 2005-2006 Harald Welte <laforge@openezx.org>,
5 * 2007-2008 Daniel Ribeiro <drwyrm@gmail.com>,
6 * 2007-2008 Stefan Schmidt <stefan@datenfreihafen.org>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/platform_device.h>
17#include <linux/delay.h>
18#include <linux/pwm_backlight.h>
19
20#include <asm/setup.h>
Russell Kinga09e64f2008-08-05 16:14:15 +010021#include <mach/pxafb.h>
22#include <mach/ohci.h>
23#include <mach/i2c.h>
Stefan Schmidt9ab24e42008-07-09 08:08:17 +010024
Russell Kinga09e64f2008-08-05 16:14:15 +010025#include <mach/mfp-pxa27x.h>
26#include <mach/pxa-regs.h>
27#include <mach/pxa2xx-regs.h>
Stefan Schmidt9ab24e42008-07-09 08:08:17 +010028#include <asm/mach-types.h>
29#include <asm/mach/arch.h>
30
31#include "devices.h"
32#include "generic.h"
33
34static struct platform_pwm_backlight_data ezx_backlight_data = {
35 .pwm_id = 0,
36 .max_brightness = 1023,
37 .dft_brightness = 1023,
38 .pwm_period_ns = 78770,
39};
40
41static struct platform_device ezx_backlight_device = {
42 .name = "pwm-backlight",
43 .dev = {
44 .parent = &pxa27x_device_pwm0.dev,
45 .platform_data = &ezx_backlight_data,
46 },
47};
48
49static struct pxafb_mode_info mode_ezx_old = {
50 .pixclock = 150000,
51 .xres = 240,
52 .yres = 320,
53 .bpp = 16,
54 .hsync_len = 10,
55 .left_margin = 20,
56 .right_margin = 10,
57 .vsync_len = 2,
58 .upper_margin = 3,
59 .lower_margin = 2,
60 .sync = 0,
61};
62
63static struct pxafb_mach_info ezx_fb_info_1 = {
64 .modes = &mode_ezx_old,
65 .num_modes = 1,
66 .lcd_conn = LCD_COLOR_TFT_16BPP,
67};
68
69static struct pxafb_mode_info mode_72r89803y01 = {
70 .pixclock = 192308,
71 .xres = 240,
72 .yres = 320,
73 .bpp = 32,
74 .depth = 18,
75 .hsync_len = 10,
76 .left_margin = 20,
77 .right_margin = 10,
78 .vsync_len = 2,
79 .upper_margin = 3,
80 .lower_margin = 2,
81 .sync = 0,
82};
83
84static struct pxafb_mach_info ezx_fb_info_2 = {
85 .modes = &mode_72r89803y01,
86 .num_modes = 1,
87 .lcd_conn = LCD_COLOR_TFT_18BPP,
88};
89
90static struct platform_device *devices[] __initdata = {
91 &ezx_backlight_device,
92};
93
94static unsigned long ezx_pin_config[] __initdata = {
95 /* PWM backlight */
96 GPIO16_PWM0_OUT,
97
98 /* BTUART */
99 GPIO42_BTUART_RXD,
100 GPIO43_BTUART_TXD,
101 GPIO44_BTUART_CTS,
102 GPIO45_BTUART_RTS,
103
Eric Miao6f584cf2008-11-28 16:00:24 +0800104 /* I2C */
105 GPIO117_I2C_SCL,
106 GPIO118_I2C_SDA,
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100107
108 /* PCAP SSP */
109 GPIO29_SSP1_SCLK,
110 GPIO25_SSP1_TXD,
111 GPIO26_SSP1_RXD,
112 GPIO24_GPIO, /* pcap chip select */
113 GPIO1_GPIO, /* pcap interrupt */
114 GPIO4_GPIO, /* WDI_AP */
115 GPIO55_GPIO, /* SYS_RESTART */
116
117 /* MMC */
118 GPIO32_MMC_CLK,
119 GPIO92_MMC_DAT_0,
120 GPIO109_MMC_DAT_1,
121 GPIO110_MMC_DAT_2,
122 GPIO111_MMC_DAT_3,
123 GPIO112_MMC_CMD,
124 GPIO11_GPIO, /* mmc detect */
125
126 /* usb to external transceiver */
127 GPIO34_USB_P2_2,
128 GPIO35_USB_P2_1,
129 GPIO36_USB_P2_4,
130 GPIO39_USB_P2_6,
131 GPIO40_USB_P2_5,
132 GPIO53_USB_P2_3,
133
134 /* usb to Neptune GSM chip */
135 GPIO30_USB_P3_2,
136 GPIO31_USB_P3_6,
137 GPIO90_USB_P3_5,
138 GPIO91_USB_P3_1,
139 GPIO56_USB_P3_4,
140 GPIO113_USB_P3_3,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100141};
142
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100143#if defined(CONFIG_MACH_EZX_A780) || defined(CONFIG_MACH_EZX_E680)
144static unsigned long gen1_pin_config[] __initdata = {
145 /* flip / lockswitch */
146 GPIO12_GPIO,
147
148 /* bluetooth (bcm2035) */
149 GPIO14_GPIO | WAKEUP_ON_LEVEL_HIGH, /* HOSTWAKE */
150 GPIO48_GPIO, /* RESET */
151 GPIO28_GPIO, /* WAKEUP */
152
153 /* Neptune handshake */
154 GPIO0_GPIO | WAKEUP_ON_LEVEL_HIGH, /* BP_RDY */
155 GPIO57_GPIO, /* AP_RDY */
156 GPIO13_GPIO | WAKEUP_ON_LEVEL_HIGH, /* WDI */
157 GPIO3_GPIO | WAKEUP_ON_LEVEL_HIGH, /* WDI2 */
158 GPIO82_GPIO, /* RESET */
159 GPIO99_GPIO, /* TC_MM_EN */
160
161 /* sound */
162 GPIO52_SSP3_SCLK,
163 GPIO83_SSP3_SFRM,
164 GPIO81_SSP3_TXD,
165 GPIO89_SSP3_RXD,
166
167 /* ssp2 pins to in */
168 GPIO22_GPIO, /* SSP2_SCLK */
169 GPIO37_GPIO, /* SSP2_SFRM */
170 GPIO38_GPIO, /* SSP2_TXD */
171 GPIO88_GPIO, /* SSP2_RXD */
172
173 /* camera */
174 GPIO23_CIF_MCLK,
175 GPIO54_CIF_PCLK,
176 GPIO85_CIF_LV,
177 GPIO84_CIF_FV,
178 GPIO27_CIF_DD_0,
179 GPIO114_CIF_DD_1,
180 GPIO51_CIF_DD_2,
181 GPIO115_CIF_DD_3,
182 GPIO95_CIF_DD_4,
183 GPIO94_CIF_DD_5,
184 GPIO17_CIF_DD_6,
185 GPIO108_CIF_DD_7,
186 GPIO50_GPIO, /* CAM_EN */
187 GPIO19_GPIO, /* CAM_RST */
188
189 /* EMU */
190 GPIO120_GPIO, /* EMU_MUX1 */
191 GPIO119_GPIO, /* EMU_MUX2 */
192 GPIO86_GPIO, /* SNP_INT_CTL */
193 GPIO87_GPIO, /* SNP_INT_IN */
194};
195#endif
196
197#if defined(CONFIG_MACH_EZX_A1200) || defined(CONFIG_MACH_EZX_A910) || \
198 defined(CONFIG_MACH_EZX_E2) || defined(CONFIG_MACH_EZX_E6)
199static unsigned long gen2_pin_config[] __initdata = {
200 /* flip / lockswitch */
201 GPIO15_GPIO,
202
203 /* EOC */
204 GPIO10_GPIO,
205
206 /* bluetooth (bcm2045) */
207 GPIO13_GPIO | WAKEUP_ON_LEVEL_HIGH, /* HOSTWAKE */
208 GPIO37_GPIO, /* RESET */
209 GPIO57_GPIO, /* WAKEUP */
210
211 /* Neptune handshake */
212 GPIO0_GPIO | WAKEUP_ON_LEVEL_HIGH, /* BP_RDY */
213 GPIO96_GPIO, /* AP_RDY */
214 GPIO3_GPIO | WAKEUP_ON_LEVEL_HIGH, /* WDI */
215 GPIO116_GPIO, /* RESET */
216 GPIO41_GPIO, /* BP_FLASH */
217
218 /* sound */
219 GPIO52_SSP3_SCLK,
220 GPIO83_SSP3_SFRM,
221 GPIO81_SSP3_TXD,
222 GPIO82_SSP3_RXD,
223
224 /* ssp2 pins to in */
225 GPIO22_GPIO, /* SSP2_SCLK */
226 GPIO14_GPIO, /* SSP2_SFRM */
227 GPIO38_GPIO, /* SSP2_TXD */
228 GPIO88_GPIO, /* SSP2_RXD */
229
230 /* camera */
231 GPIO23_CIF_MCLK,
232 GPIO54_CIF_PCLK,
233 GPIO85_CIF_LV,
234 GPIO84_CIF_FV,
235 GPIO27_CIF_DD_0,
236 GPIO114_CIF_DD_1,
237 GPIO51_CIF_DD_2,
238 GPIO115_CIF_DD_3,
239 GPIO95_CIF_DD_4,
240 GPIO48_CIF_DD_5,
241 GPIO93_CIF_DD_6,
242 GPIO12_CIF_DD_7,
243 GPIO50_GPIO, /* CAM_EN */
244 GPIO28_GPIO, /* CAM_RST */
245 GPIO17_GPIO, /* CAM_FLASH */
246};
247#endif
248
249#ifdef CONFIG_MACH_EZX_A780
250static unsigned long a780_pin_config[] __initdata = {
251 /* keypad */
252 GPIO93_KP_DKIN_0 | WAKEUP_ON_LEVEL_HIGH,
253 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
254 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
255 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
256 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
257 GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH,
258 GPIO103_KP_MKOUT_0,
259 GPIO104_KP_MKOUT_1,
260 GPIO105_KP_MKOUT_2,
261 GPIO106_KP_MKOUT_3,
262 GPIO107_KP_MKOUT_4,
263
264 /* attenuate sound */
265 GPIO96_GPIO,
266};
267#endif
268
269#ifdef CONFIG_MACH_EZX_E680
270static unsigned long e680_pin_config[] __initdata = {
271 /* keypad */
272 GPIO93_KP_DKIN_0 | WAKEUP_ON_LEVEL_HIGH,
273 GPIO96_KP_DKIN_3 | WAKEUP_ON_LEVEL_HIGH,
274 GPIO97_KP_DKIN_4 | WAKEUP_ON_LEVEL_HIGH,
275 GPIO98_KP_DKIN_5 | WAKEUP_ON_LEVEL_HIGH,
276 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
277 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
278 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
279 GPIO103_KP_MKOUT_0,
280 GPIO104_KP_MKOUT_1,
281 GPIO105_KP_MKOUT_2,
282 GPIO106_KP_MKOUT_3,
283
284 /* MIDI */
285 GPIO79_GPIO, /* VA_SEL_BUL */
286 GPIO80_GPIO, /* FLT_SEL_BUL */
287 GPIO78_GPIO, /* MIDI_RESET */
288 GPIO33_GPIO, /* MIDI_CS */
289 GPIO15_GPIO, /* MIDI_IRQ */
290 GPIO49_GPIO, /* MIDI_NPWE */
291 GPIO18_GPIO, /* MIDI_RDY */
292
293 /* leds */
294 GPIO46_GPIO,
295 GPIO47_GPIO,
296};
297#endif
298
299#ifdef CONFIG_MACH_EZX_A1200
300static unsigned long a1200_pin_config[] __initdata = {
301 /* keypad */
302 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
303 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
304 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
305 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
306 GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH,
307 GPIO103_KP_MKOUT_0,
308 GPIO104_KP_MKOUT_1,
309 GPIO105_KP_MKOUT_2,
310 GPIO106_KP_MKOUT_3,
311 GPIO107_KP_MKOUT_4,
312 GPIO108_KP_MKOUT_5,
313};
314#endif
315
316#ifdef CONFIG_MACH_EZX_A910
317static unsigned long a910_pin_config[] __initdata = {
318 /* keypad */
319 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
320 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
321 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
322 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
323 GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH,
324 GPIO103_KP_MKOUT_0,
325 GPIO104_KP_MKOUT_1,
326 GPIO105_KP_MKOUT_2,
327 GPIO106_KP_MKOUT_3,
328 GPIO107_KP_MKOUT_4,
329 GPIO108_KP_MKOUT_5,
330
331 /* WLAN */
332 GPIO89_GPIO, /* RESET */
333 GPIO33_GPIO, /* WAKEUP */
334 GPIO94_GPIO | WAKEUP_ON_LEVEL_HIGH, /* HOSTWAKE */
335
336 /* MMC CS */
337 GPIO20_GPIO,
338};
339#endif
340
341#ifdef CONFIG_MACH_EZX_E2
342static unsigned long e2_pin_config[] __initdata = {
343 /* keypad */
344 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
345 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
346 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
347 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
348 GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH,
349 GPIO103_KP_MKOUT_0,
350 GPIO104_KP_MKOUT_1,
351 GPIO105_KP_MKOUT_2,
352 GPIO106_KP_MKOUT_3,
353 GPIO107_KP_MKOUT_4,
354 GPIO108_KP_MKOUT_5,
355};
356#endif
357
358#ifdef CONFIG_MACH_EZX_E6
359static unsigned long e6_pin_config[] __initdata = {
360 /* keypad */
361 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
362 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
363 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
364 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
365 GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH,
366 GPIO103_KP_MKOUT_0,
367 GPIO104_KP_MKOUT_1,
368 GPIO105_KP_MKOUT_2,
369 GPIO106_KP_MKOUT_3,
370 GPIO107_KP_MKOUT_4,
371 GPIO108_KP_MKOUT_5,
372};
373#endif
374
375#ifdef CONFIG_MACH_EZX_A780
376static void __init a780_init(void)
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100377{
378 pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config));
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100379 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config));
380 pxa2xx_mfp_config(ARRAY_AND_SIZE(a780_pin_config));
381
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100382 pxa_set_i2c_info(NULL);
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100383
384 set_pxa_fb_info(&ezx_fb_info_1);
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100385
386 platform_add_devices(devices, ARRAY_SIZE(devices));
387}
388
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100389MACHINE_START(EZX_A780, "Motorola EZX A780")
390 .phys_io = 0x40000000,
391 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100392 .boot_params = 0xa0000100,
393 .map_io = pxa_map_io,
394 .init_irq = pxa27x_init_irq,
395 .timer = &pxa_timer,
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100396 .init_machine = a780_init,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100397MACHINE_END
398#endif
399
400#ifdef CONFIG_MACH_EZX_E680
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100401static void __init e680_init(void)
402{
403 pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config));
404 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config));
405 pxa2xx_mfp_config(ARRAY_AND_SIZE(e680_pin_config));
406
407 pxa_set_i2c_info(NULL);
408
409 set_pxa_fb_info(&ezx_fb_info_1);
410
411 platform_add_devices(devices, ARRAY_SIZE(devices));
412}
413
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100414MACHINE_START(EZX_E680, "Motorola EZX E680")
415 .phys_io = 0x40000000,
416 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100417 .boot_params = 0xa0000100,
418 .map_io = pxa_map_io,
419 .init_irq = pxa27x_init_irq,
420 .timer = &pxa_timer,
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100421 .init_machine = e680_init,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100422MACHINE_END
423#endif
424
425#ifdef CONFIG_MACH_EZX_A1200
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100426static void __init a1200_init(void)
427{
428 pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config));
429 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
430 pxa2xx_mfp_config(ARRAY_AND_SIZE(a1200_pin_config));
431
432 pxa_set_i2c_info(NULL);
433
434 set_pxa_fb_info(&ezx_fb_info_2);
435
436 platform_add_devices(devices, ARRAY_SIZE(devices));
437}
438
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100439MACHINE_START(EZX_A1200, "Motorola EZX A1200")
440 .phys_io = 0x40000000,
441 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100442 .boot_params = 0xa0000100,
443 .map_io = pxa_map_io,
444 .init_irq = pxa27x_init_irq,
445 .timer = &pxa_timer,
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100446 .init_machine = a1200_init,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100447MACHINE_END
448#endif
449
450#ifdef CONFIG_MACH_EZX_A910
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100451static void __init a910_init(void)
452{
453 pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config));
454 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
455 pxa2xx_mfp_config(ARRAY_AND_SIZE(a910_pin_config));
456
457 pxa_set_i2c_info(NULL);
458
459 set_pxa_fb_info(&ezx_fb_info_2);
460
461 platform_add_devices(devices, ARRAY_SIZE(devices));
462}
463
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100464MACHINE_START(EZX_A910, "Motorola EZX A910")
465 .phys_io = 0x40000000,
466 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100467 .boot_params = 0xa0000100,
468 .map_io = pxa_map_io,
469 .init_irq = pxa27x_init_irq,
470 .timer = &pxa_timer,
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100471 .init_machine = a910_init,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100472MACHINE_END
473#endif
474
475#ifdef CONFIG_MACH_EZX_E6
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100476static void __init e6_init(void)
477{
478 pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config));
479 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
480 pxa2xx_mfp_config(ARRAY_AND_SIZE(e6_pin_config));
481
482 pxa_set_i2c_info(NULL);
483
484 set_pxa_fb_info(&ezx_fb_info_2);
485
486 platform_add_devices(devices, ARRAY_SIZE(devices));
487}
488
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100489MACHINE_START(EZX_E6, "Motorola EZX E6")
490 .phys_io = 0x40000000,
491 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100492 .boot_params = 0xa0000100,
493 .map_io = pxa_map_io,
494 .init_irq = pxa27x_init_irq,
495 .timer = &pxa_timer,
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100496 .init_machine = e6_init,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100497MACHINE_END
498#endif
499
500#ifdef CONFIG_MACH_EZX_E2
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100501static void __init e2_init(void)
502{
503 pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config));
504 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
505 pxa2xx_mfp_config(ARRAY_AND_SIZE(e2_pin_config));
506
507 pxa_set_i2c_info(NULL);
508
509 set_pxa_fb_info(&ezx_fb_info_2);
510
511 platform_add_devices(devices, ARRAY_SIZE(devices));
512}
513
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100514MACHINE_START(EZX_E2, "Motorola EZX E2")
515 .phys_io = 0x40000000,
516 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100517 .boot_params = 0xa0000100,
518 .map_io = pxa_map_io,
519 .init_irq = pxa27x_init_irq,
520 .timer = &pxa_timer,
Stefan Schmidt9078ac22008-12-08 15:58:08 +0100521 .init_machine = e2_init,
Stefan Schmidt9ab24e42008-07-09 08:08:17 +0100522MACHINE_END
523#endif