diff options
Diffstat (limited to 'arch/arm/mach-pxa/imote2.c')
-rw-r--r-- | arch/arm/mach-pxa/imote2.c | 590 |
1 files changed, 0 insertions, 590 deletions
diff --git a/arch/arm/mach-pxa/imote2.c b/arch/arm/mach-pxa/imote2.c deleted file mode 100644 index 5161dca8ccc0..000000000000 --- a/arch/arm/mach-pxa/imote2.c +++ /dev/null | |||
@@ -1,590 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/imote2.c | ||
3 | * | ||
4 | * Author: Ed C. Epp | ||
5 | * Created: Nov 05, 2002 | ||
6 | * Copyright: Intel Corp. | ||
7 | * | ||
8 | * Modified 2008: Jonathan Cameron | ||
9 | * | ||
10 | * The Imote2 is a wireless sensor node platform sold | ||
11 | * by Crossbow (www.xbow.com). | ||
12 | */ | ||
13 | |||
14 | #include <linux/init.h> | ||
15 | #include <linux/device.h> | ||
16 | #include <linux/mtd/mtd.h> | ||
17 | #include <linux/mtd/partitions.h> | ||
18 | #include <linux/platform_device.h> | ||
19 | #include <linux/regulator/machine.h> | ||
20 | #include <linux/gpio.h> | ||
21 | #include <linux/leds.h> | ||
22 | #include <linux/spi/spi.h> | ||
23 | #include <linux/i2c.h> | ||
24 | #include <linux/mfd/da903x.h> | ||
25 | #include <linux/sht15.h> | ||
26 | |||
27 | #include <asm/mach-types.h> | ||
28 | #include <asm/mach/arch.h> | ||
29 | #include <asm/mach/map.h> | ||
30 | #include <asm/mach/flash.h> | ||
31 | |||
32 | #include <mach/pxa27x.h> | ||
33 | #include <plat/i2c.h> | ||
34 | #include <mach/udc.h> | ||
35 | #include <mach/mmc.h> | ||
36 | #include <mach/pxa2xx_spi.h> | ||
37 | #include <mach/pxa27x-udc.h> | ||
38 | |||
39 | #include "devices.h" | ||
40 | #include "generic.h" | ||
41 | |||
42 | static unsigned long imote2_pin_config[] __initdata = { | ||
43 | |||
44 | /* Device Identification for wakeup*/ | ||
45 | GPIO102_GPIO, | ||
46 | |||
47 | /* Button */ | ||
48 | GPIO91_GPIO, | ||
49 | |||
50 | /* DA9030 */ | ||
51 | GPIO1_GPIO, | ||
52 | |||
53 | /* MMC */ | ||
54 | GPIO32_MMC_CLK, | ||
55 | GPIO112_MMC_CMD, | ||
56 | GPIO92_MMC_DAT_0, | ||
57 | GPIO109_MMC_DAT_1, | ||
58 | GPIO110_MMC_DAT_2, | ||
59 | GPIO111_MMC_DAT_3, | ||
60 | |||
61 | /* 802.15.4 radio - driver out of mainline */ | ||
62 | GPIO22_GPIO, /* CC_RSTN */ | ||
63 | GPIO114_GPIO, /* CC_FIFO */ | ||
64 | GPIO116_GPIO, /* CC_CCA */ | ||
65 | GPIO0_GPIO, /* CC_FIFOP */ | ||
66 | GPIO16_GPIO, /* CCSFD */ | ||
67 | GPIO115_GPIO, /* Power enable */ | ||
68 | |||
69 | /* I2C */ | ||
70 | GPIO117_I2C_SCL, | ||
71 | GPIO118_I2C_SDA, | ||
72 | |||
73 | /* SSP 3 - 802.15.4 radio */ | ||
74 | GPIO39_GPIO, /* Chip Select */ | ||
75 | GPIO34_SSP3_SCLK, | ||
76 | GPIO35_SSP3_TXD, | ||
77 | GPIO41_SSP3_RXD, | ||
78 | |||
79 | /* SSP 2 - to daughter boards */ | ||
80 | GPIO37_GPIO, /* Chip Select */ | ||
81 | GPIO36_SSP2_SCLK, | ||
82 | GPIO38_SSP2_TXD, | ||
83 | GPIO11_SSP2_RXD, | ||
84 | |||
85 | /* SSP 1 - to daughter boards */ | ||
86 | GPIO24_GPIO, /* Chip Select */ | ||
87 | GPIO23_SSP1_SCLK, | ||
88 | GPIO25_SSP1_TXD, | ||
89 | GPIO26_SSP1_RXD, | ||
90 | |||
91 | /* BTUART Basic Connector*/ | ||
92 | GPIO42_BTUART_RXD, | ||
93 | GPIO43_BTUART_TXD, | ||
94 | GPIO44_BTUART_CTS, | ||
95 | GPIO45_BTUART_RTS, | ||
96 | |||
97 | /* STUART Serial console via debug board*/ | ||
98 | GPIO46_STUART_RXD, | ||
99 | GPIO47_STUART_TXD, | ||
100 | |||
101 | /* Basic sensor board */ | ||
102 | GPIO96_GPIO, /* accelerometer interrupt */ | ||
103 | GPIO99_GPIO, /* ADC interrupt */ | ||
104 | |||
105 | /* SHT15 */ | ||
106 | GPIO100_GPIO, | ||
107 | GPIO98_GPIO, | ||
108 | |||
109 | /* Connector pins specified as gpios */ | ||
110 | GPIO94_GPIO, /* large basic connector pin 14 */ | ||
111 | GPIO10_GPIO, /* large basic connector pin 23 */ | ||
112 | |||
113 | /* LEDS */ | ||
114 | GPIO103_GPIO, /* red led */ | ||
115 | GPIO104_GPIO, /* green led */ | ||
116 | GPIO105_GPIO, /* blue led */ | ||
117 | }; | ||
118 | |||
119 | static struct sht15_platform_data platform_data_sht15 = { | ||
120 | .gpio_data = 100, | ||
121 | .gpio_sck = 98, | ||
122 | }; | ||
123 | |||
124 | static struct platform_device sht15 = { | ||
125 | .name = "sht15", | ||
126 | .id = -1, | ||
127 | .dev = { | ||
128 | .platform_data = &platform_data_sht15, | ||
129 | }, | ||
130 | }; | ||
131 | |||
132 | static struct regulator_consumer_supply imote2_sensor_3_con[] = { | ||
133 | { | ||
134 | .dev = &sht15.dev, | ||
135 | .supply = "vcc", | ||
136 | }, | ||
137 | }; | ||
138 | |||
139 | static struct gpio_led imote2_led_pins[] = { | ||
140 | { | ||
141 | .name = "imote2:red", | ||
142 | .gpio = 103, | ||
143 | .active_low = 1, | ||
144 | }, { | ||
145 | .name = "imote2:green", | ||
146 | .gpio = 104, | ||
147 | .active_low = 1, | ||
148 | }, { | ||
149 | .name = "imote2:blue", | ||
150 | .gpio = 105, | ||
151 | .active_low = 1, | ||
152 | }, | ||
153 | }; | ||
154 | |||
155 | static struct gpio_led_platform_data imote2_led_data = { | ||
156 | .num_leds = ARRAY_SIZE(imote2_led_pins), | ||
157 | .leds = imote2_led_pins, | ||
158 | }; | ||
159 | |||
160 | static struct platform_device imote2_leds = { | ||
161 | .name = "leds-gpio", | ||
162 | .id = -1, | ||
163 | .dev = { | ||
164 | .platform_data = &imote2_led_data, | ||
165 | }, | ||
166 | }; | ||
167 | |||
168 | /* Reverse engineered partly from Platformx drivers */ | ||
169 | enum imote2_ldos{ | ||
170 | vcc_vref, | ||
171 | vcc_cc2420, | ||
172 | vcc_mica, | ||
173 | vcc_bt, | ||
174 | /* The two voltages available to sensor boards */ | ||
175 | vcc_sensor_1_8, | ||
176 | vcc_sensor_3, | ||
177 | |||
178 | vcc_sram_ext, /* directly connected to the pxa271 */ | ||
179 | vcc_pxa_pll, | ||
180 | vcc_pxa_usim, /* Reference voltage for certain gpios */ | ||
181 | vcc_pxa_mem, | ||
182 | vcc_pxa_flash, | ||
183 | vcc_pxa_core, /*Dc-Dc buck not yet supported */ | ||
184 | vcc_lcd, | ||
185 | vcc_bb, | ||
186 | vcc_bbio, | ||
187 | vcc_io, /* cc2420 802.15.4 radio and pxa vcc_io ?*/ | ||
188 | }; | ||
189 | |||
190 | /* The values of the various regulator constraints are obviously dependent | ||
191 | * on exactly what is wired to each ldo. Unfortunately this information is | ||
192 | * not generally available. More information has been requested from Xbow | ||
193 | * but as of yet they haven't been forthcoming. | ||
194 | * | ||
195 | * Some of these are clearly Stargate 2 related (no way of plugging | ||
196 | * in an lcd on the IM2 for example!). | ||
197 | */ | ||
198 | static struct regulator_init_data imote2_ldo_init_data[] = { | ||
199 | [vcc_bbio] = { | ||
200 | .constraints = { /* board default 1.8V */ | ||
201 | .name = "vcc_bbio", | ||
202 | .min_uV = 1800000, | ||
203 | .max_uV = 1800000, | ||
204 | }, | ||
205 | }, | ||
206 | [vcc_bb] = { | ||
207 | .constraints = { /* board default 2.8V */ | ||
208 | .name = "vcc_bb", | ||
209 | .min_uV = 2700000, | ||
210 | .max_uV = 3000000, | ||
211 | }, | ||
212 | }, | ||
213 | [vcc_pxa_flash] = { | ||
214 | .constraints = {/* default is 1.8V */ | ||
215 | .name = "vcc_pxa_flash", | ||
216 | .min_uV = 1800000, | ||
217 | .max_uV = 1800000, | ||
218 | }, | ||
219 | }, | ||
220 | [vcc_cc2420] = { /* also vcc_io */ | ||
221 | .constraints = { | ||
222 | /* board default is 2.8V */ | ||
223 | .name = "vcc_cc2420", | ||
224 | .min_uV = 2700000, | ||
225 | .max_uV = 3300000, | ||
226 | }, | ||
227 | }, | ||
228 | [vcc_vref] = { /* Reference for what? */ | ||
229 | .constraints = { /* default 1.8V */ | ||
230 | .name = "vcc_vref", | ||
231 | .min_uV = 1800000, | ||
232 | .max_uV = 1800000, | ||
233 | }, | ||
234 | }, | ||
235 | [vcc_sram_ext] = { | ||
236 | .constraints = { /* default 2.8V */ | ||
237 | .name = "vcc_sram_ext", | ||
238 | .min_uV = 2800000, | ||
239 | .max_uV = 2800000, | ||
240 | }, | ||
241 | }, | ||
242 | [vcc_mica] = { | ||
243 | .constraints = { /* default 2.8V */ | ||
244 | .name = "vcc_mica", | ||
245 | .min_uV = 2800000, | ||
246 | .max_uV = 2800000, | ||
247 | }, | ||
248 | }, | ||
249 | [vcc_bt] = { | ||
250 | .constraints = { /* default 2.8V */ | ||
251 | .name = "vcc_bt", | ||
252 | .min_uV = 2800000, | ||
253 | .max_uV = 2800000, | ||
254 | }, | ||
255 | }, | ||
256 | [vcc_lcd] = { | ||
257 | .constraints = { /* default 2.8V */ | ||
258 | .name = "vcc_lcd", | ||
259 | .min_uV = 2700000, | ||
260 | .max_uV = 3300000, | ||
261 | }, | ||
262 | }, | ||
263 | [vcc_io] = { /* Same or higher than everything | ||
264 | * bar vccbat and vccusb */ | ||
265 | .constraints = { /* default 2.8V */ | ||
266 | .name = "vcc_io", | ||
267 | .min_uV = 2692000, | ||
268 | .max_uV = 3300000, | ||
269 | }, | ||
270 | }, | ||
271 | [vcc_sensor_1_8] = { | ||
272 | .constraints = { /* default 1.8V */ | ||
273 | .name = "vcc_sensor_1_8", | ||
274 | .min_uV = 1800000, | ||
275 | .max_uV = 1800000, | ||
276 | }, | ||
277 | }, | ||
278 | [vcc_sensor_3] = { /* curiously default 2.8V */ | ||
279 | .constraints = { | ||
280 | .name = "vcc_sensor_3", | ||
281 | .min_uV = 2800000, | ||
282 | .max_uV = 3000000, | ||
283 | }, | ||
284 | .num_consumer_supplies = ARRAY_SIZE(imote2_sensor_3_con), | ||
285 | .consumer_supplies = imote2_sensor_3_con, | ||
286 | }, | ||
287 | [vcc_pxa_pll] = { /* 1.17V - 1.43V, default 1.3V*/ | ||
288 | .constraints = { | ||
289 | .name = "vcc_pxa_pll", | ||
290 | .min_uV = 1170000, | ||
291 | .max_uV = 1430000, | ||
292 | }, | ||
293 | }, | ||
294 | [vcc_pxa_usim] = { | ||
295 | .constraints = { /* default 1.8V */ | ||
296 | .name = "vcc_pxa_usim", | ||
297 | .min_uV = 1710000, | ||
298 | .max_uV = 2160000, | ||
299 | }, | ||
300 | }, | ||
301 | [vcc_pxa_mem] = { | ||
302 | .constraints = { /* default 1.8V */ | ||
303 | .name = "vcc_pxa_mem", | ||
304 | .min_uV = 1800000, | ||
305 | .max_uV = 1800000, | ||
306 | }, | ||
307 | }, | ||
308 | }; | ||
309 | |||
310 | static struct da903x_subdev_info imote2_da9030_subdevs[] = { | ||
311 | { | ||
312 | .name = "da903x-regulator", | ||
313 | .id = DA9030_ID_LDO2, | ||
314 | .platform_data = &imote2_ldo_init_data[vcc_bbio], | ||
315 | }, { | ||
316 | .name = "da903x-regulator", | ||
317 | .id = DA9030_ID_LDO3, | ||
318 | .platform_data = &imote2_ldo_init_data[vcc_bb], | ||
319 | }, { | ||
320 | .name = "da903x-regulator", | ||
321 | .id = DA9030_ID_LDO4, | ||
322 | .platform_data = &imote2_ldo_init_data[vcc_pxa_flash], | ||
323 | }, { | ||
324 | .name = "da903x-regulator", | ||
325 | .id = DA9030_ID_LDO5, | ||
326 | .platform_data = &imote2_ldo_init_data[vcc_cc2420], | ||
327 | }, { | ||
328 | .name = "da903x-regulator", | ||
329 | .id = DA9030_ID_LDO6, | ||
330 | .platform_data = &imote2_ldo_init_data[vcc_vref], | ||
331 | }, { | ||
332 | .name = "da903x-regulator", | ||
333 | .id = DA9030_ID_LDO7, | ||
334 | .platform_data = &imote2_ldo_init_data[vcc_sram_ext], | ||
335 | }, { | ||
336 | .name = "da903x-regulator", | ||
337 | .id = DA9030_ID_LDO8, | ||
338 | .platform_data = &imote2_ldo_init_data[vcc_mica], | ||
339 | }, { | ||
340 | .name = "da903x-regulator", | ||
341 | .id = DA9030_ID_LDO9, | ||
342 | .platform_data = &imote2_ldo_init_data[vcc_bt], | ||
343 | }, { | ||
344 | .name = "da903x-regulator", | ||
345 | .id = DA9030_ID_LDO10, | ||
346 | .platform_data = &imote2_ldo_init_data[vcc_sensor_1_8], | ||
347 | }, { | ||
348 | .name = "da903x-regulator", | ||
349 | .id = DA9030_ID_LDO11, | ||
350 | .platform_data = &imote2_ldo_init_data[vcc_sensor_3], | ||
351 | }, { | ||
352 | .name = "da903x-regulator", | ||
353 | .id = DA9030_ID_LDO12, | ||
354 | .platform_data = &imote2_ldo_init_data[vcc_lcd], | ||
355 | }, { | ||
356 | .name = "da903x-regulator", | ||
357 | .id = DA9030_ID_LDO15, | ||
358 | .platform_data = &imote2_ldo_init_data[vcc_pxa_pll], | ||
359 | }, { | ||
360 | .name = "da903x-regulator", | ||
361 | .id = DA9030_ID_LDO17, | ||
362 | .platform_data = &imote2_ldo_init_data[vcc_pxa_usim], | ||
363 | }, { | ||
364 | .name = "da903x-regulator", | ||
365 | .id = DA9030_ID_LDO18, | ||
366 | .platform_data = &imote2_ldo_init_data[vcc_io], | ||
367 | }, { | ||
368 | .name = "da903x-regulator", | ||
369 | .id = DA9030_ID_LDO19, | ||
370 | .platform_data = &imote2_ldo_init_data[vcc_pxa_mem], | ||
371 | }, | ||
372 | }; | ||
373 | |||
374 | static struct da903x_platform_data imote2_da9030_pdata = { | ||
375 | .num_subdevs = ARRAY_SIZE(imote2_da9030_subdevs), | ||
376 | .subdevs = imote2_da9030_subdevs, | ||
377 | }; | ||
378 | |||
379 | /* As the the imote2 doesn't currently have a conventional SD slot | ||
380 | * there is no option to hotplug cards, making all this rather simple | ||
381 | */ | ||
382 | static int imote2_mci_get_ro(struct device *dev) | ||
383 | { | ||
384 | return 0; | ||
385 | } | ||
386 | |||
387 | /* Rather simple case as hotplugging not possible */ | ||
388 | static struct pxamci_platform_data imote2_mci_platform_data = { | ||
389 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, /* default anyway */ | ||
390 | .get_ro = imote2_mci_get_ro, | ||
391 | .gpio_card_detect = -1, | ||
392 | .gpio_card_ro = -1, | ||
393 | .gpio_power = -1, | ||
394 | }; | ||
395 | |||
396 | static struct mtd_partition imote2flash_partitions[] = { | ||
397 | { | ||
398 | .name = "Bootloader", | ||
399 | .size = 0x00040000, | ||
400 | .offset = 0, | ||
401 | .mask_flags = MTD_WRITEABLE, | ||
402 | }, { | ||
403 | .name = "Kernel", | ||
404 | .size = 0x00200000, | ||
405 | .offset = 0x00040000, | ||
406 | .mask_flags = 0, | ||
407 | }, { | ||
408 | .name = "Filesystem", | ||
409 | .size = 0x01DC0000, | ||
410 | .offset = 0x00240000, | ||
411 | .mask_flags = 0, | ||
412 | }, | ||
413 | }; | ||
414 | |||
415 | static struct resource flash_resources = { | ||
416 | .start = PXA_CS0_PHYS, | ||
417 | .end = PXA_CS0_PHYS + SZ_32M - 1, | ||
418 | .flags = IORESOURCE_MEM, | ||
419 | }; | ||
420 | |||
421 | static struct flash_platform_data imote2_flash_data = { | ||
422 | .map_name = "cfi_probe", | ||
423 | .parts = imote2flash_partitions, | ||
424 | .nr_parts = ARRAY_SIZE(imote2flash_partitions), | ||
425 | .name = "PXA27xOnChipROM", | ||
426 | .width = 2, | ||
427 | }; | ||
428 | |||
429 | static struct platform_device imote2_flash_device = { | ||
430 | .name = "pxa2xx-flash", | ||
431 | .id = 0, | ||
432 | .dev = { | ||
433 | .platform_data = &imote2_flash_data, | ||
434 | }, | ||
435 | .resource = &flash_resources, | ||
436 | .num_resources = 1, | ||
437 | }; | ||
438 | |||
439 | /* Some of the drivers here are out of kernel at the moment (parts of IIO) | ||
440 | * and it may be a while before they are in the mainline. | ||
441 | */ | ||
442 | static struct i2c_board_info __initdata imote2_i2c_board_info[] = { | ||
443 | { /* UCAM sensor board */ | ||
444 | .type = "max1239", | ||
445 | .addr = 0x35, | ||
446 | }, { /* ITS400 Sensor board only */ | ||
447 | .type = "max1363", | ||
448 | .addr = 0x34, | ||
449 | /* Through a nand gate - Also beware, on V2 sensor board the | ||
450 | * pull up resistors are missing. | ||
451 | */ | ||
452 | .irq = IRQ_GPIO(99), | ||
453 | }, { /* ITS400 Sensor board only */ | ||
454 | .type = "tsl2561", | ||
455 | .addr = 0x49, | ||
456 | /* Through a nand gate - Also beware, on V2 sensor board the | ||
457 | * pull up resistors are missing. | ||
458 | */ | ||
459 | .irq = IRQ_GPIO(99), | ||
460 | }, { /* ITS400 Sensor board only */ | ||
461 | .type = "tmp175", | ||
462 | .addr = 0x4A, | ||
463 | .irq = IRQ_GPIO(96), | ||
464 | }, { /* IMB400 Multimedia board */ | ||
465 | .type = "wm8940", | ||
466 | .addr = 0x1A, | ||
467 | }, | ||
468 | }; | ||
469 | |||
470 | static struct i2c_board_info __initdata imote2_pwr_i2c_board_info[] = { | ||
471 | { | ||
472 | .type = "da9030", | ||
473 | .addr = 0x49, | ||
474 | .platform_data = &imote2_da9030_pdata, | ||
475 | .irq = gpio_to_irq(1), | ||
476 | }, | ||
477 | }; | ||
478 | |||
479 | static struct pxa2xx_spi_master pxa_ssp_master_0_info = { | ||
480 | .num_chipselect = 1, | ||
481 | }; | ||
482 | |||
483 | static struct pxa2xx_spi_master pxa_ssp_master_1_info = { | ||
484 | .num_chipselect = 1, | ||
485 | }; | ||
486 | |||
487 | static struct pxa2xx_spi_master pxa_ssp_master_2_info = { | ||
488 | .num_chipselect = 1, | ||
489 | }; | ||
490 | |||
491 | static struct pxa2xx_spi_chip staccel_chip_info = { | ||
492 | .tx_threshold = 8, | ||
493 | .rx_threshold = 8, | ||
494 | .dma_burst_size = 8, | ||
495 | .timeout = 235, | ||
496 | .gpio_cs = 24, | ||
497 | }; | ||
498 | |||
499 | static struct pxa2xx_spi_chip cc2420_info = { | ||
500 | .tx_threshold = 8, | ||
501 | .rx_threshold = 8, | ||
502 | .dma_burst_size = 8, | ||
503 | .timeout = 235, | ||
504 | .gpio_cs = 39, | ||
505 | }; | ||
506 | |||
507 | static struct spi_board_info spi_board_info[] __initdata = { | ||
508 | { /* Driver in IIO */ | ||
509 | .modalias = "lis3l02dq", | ||
510 | .max_speed_hz = 8000000,/* 8MHz max spi frequency at 3V */ | ||
511 | .bus_num = 1, | ||
512 | .chip_select = 0, | ||
513 | .controller_data = &staccel_chip_info, | ||
514 | .irq = IRQ_GPIO(96), | ||
515 | }, { /* Driver out of kernel as it needs considerable rewriting */ | ||
516 | .modalias = "cc2420", | ||
517 | .max_speed_hz = 6500000, | ||
518 | .bus_num = 3, | ||
519 | .chip_select = 0, | ||
520 | .controller_data = &cc2420_info, | ||
521 | }, | ||
522 | }; | ||
523 | |||
524 | static void im2_udc_command(int cmd) | ||
525 | { | ||
526 | switch (cmd) { | ||
527 | case PXA2XX_UDC_CMD_CONNECT: | ||
528 | UP2OCR |= UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE; | ||
529 | break; | ||
530 | case PXA2XX_UDC_CMD_DISCONNECT: | ||
531 | UP2OCR &= ~(UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE); | ||
532 | break; | ||
533 | } | ||
534 | } | ||
535 | |||
536 | static struct pxa2xx_udc_mach_info imote2_udc_info __initdata = { | ||
537 | .udc_command = im2_udc_command, | ||
538 | }; | ||
539 | |||
540 | static struct platform_device *imote2_devices[] = { | ||
541 | &imote2_flash_device, | ||
542 | &imote2_leds, | ||
543 | &sht15, | ||
544 | }; | ||
545 | |||
546 | static struct i2c_pxa_platform_data i2c_pwr_pdata = { | ||
547 | .fast_mode = 1, | ||
548 | }; | ||
549 | |||
550 | static struct i2c_pxa_platform_data i2c_pdata = { | ||
551 | .fast_mode = 1, | ||
552 | }; | ||
553 | |||
554 | static void __init imote2_init(void) | ||
555 | { | ||
556 | pxa2xx_mfp_config(ARRAY_AND_SIZE(imote2_pin_config)); | ||
557 | |||
558 | pxa_set_ffuart_info(NULL); | ||
559 | pxa_set_btuart_info(NULL); | ||
560 | pxa_set_stuart_info(NULL); | ||
561 | |||
562 | platform_add_devices(imote2_devices, ARRAY_SIZE(imote2_devices)); | ||
563 | |||
564 | pxa2xx_set_spi_info(1, &pxa_ssp_master_0_info); | ||
565 | pxa2xx_set_spi_info(2, &pxa_ssp_master_1_info); | ||
566 | pxa2xx_set_spi_info(3, &pxa_ssp_master_2_info); | ||
567 | |||
568 | spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); | ||
569 | |||
570 | i2c_register_board_info(0, imote2_i2c_board_info, | ||
571 | ARRAY_SIZE(imote2_i2c_board_info)); | ||
572 | i2c_register_board_info(1, imote2_pwr_i2c_board_info, | ||
573 | ARRAY_SIZE(imote2_pwr_i2c_board_info)); | ||
574 | |||
575 | pxa27x_set_i2c_power_info(&i2c_pwr_pdata); | ||
576 | pxa_set_i2c_info(&i2c_pdata); | ||
577 | |||
578 | pxa_set_mci_info(&imote2_mci_platform_data); | ||
579 | pxa_set_udc_info(&imote2_udc_info); | ||
580 | } | ||
581 | |||
582 | MACHINE_START(INTELMOTE2, "IMOTE 2") | ||
583 | .phys_io = 0x40000000, | ||
584 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
585 | .map_io = pxa_map_io, | ||
586 | .init_irq = pxa27x_init_irq, | ||
587 | .timer = &pxa_timer, | ||
588 | .init_machine = imote2_init, | ||
589 | .boot_params = 0xA0000100, | ||
590 | MACHINE_END | ||