diff options
-rw-r--r-- | arch/arm/mach-omap2/Kconfig | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-3430sdp.c | 604 |
3 files changed, 0 insertions, 611 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 7adc4f774251..27ec8923ddf6 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -235,12 +235,6 @@ config MACH_TOUCHBOOK | |||
235 | default y | 235 | default y |
236 | select OMAP_PACKAGE_CBB | 236 | select OMAP_PACKAGE_CBB |
237 | 237 | ||
238 | config MACH_OMAP_3430SDP | ||
239 | bool "OMAP 3430 SDP board" | ||
240 | depends on ARCH_OMAP3 | ||
241 | default y | ||
242 | select OMAP_PACKAGE_CBB | ||
243 | |||
244 | config MACH_NOKIA_N810 | 238 | config MACH_NOKIA_N810 |
245 | bool | 239 | bool |
246 | 240 | ||
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 3a54671f417b..00b35a31797d 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -246,7 +246,6 @@ obj-$(CONFIG_MACH_OMAP3530_LV_SOM) += board-omap3logic.o | |||
246 | obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o | 246 | obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o |
247 | obj-$(CONFIG_MACH_OVERO) += board-overo.o | 247 | obj-$(CONFIG_MACH_OVERO) += board-overo.o |
248 | obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o | 248 | obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o |
249 | obj-$(CONFIG_MACH_OMAP_3430SDP) += board-3430sdp.o | ||
250 | obj-$(CONFIG_MACH_NOKIA_N8X0) += board-n8x0.o | 249 | obj-$(CONFIG_MACH_NOKIA_N8X0) += board-n8x0.o |
251 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o sdram-nokia.o | 250 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o sdram-nokia.o |
252 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-peripherals.o | 251 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-peripherals.o |
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c deleted file mode 100644 index 9857882c2f41..000000000000 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ /dev/null | |||
@@ -1,604 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-omap2/board-3430sdp.c | ||
3 | * | ||
4 | * Copyright (C) 2007 Texas Instruments | ||
5 | * | ||
6 | * Modified from mach-omap2/board-generic.c | ||
7 | * | ||
8 | * Initial code: Syed Mohammed Khasim | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/init.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | #include <linux/delay.h> | ||
19 | #include <linux/input.h> | ||
20 | #include <linux/input/matrix_keypad.h> | ||
21 | #include <linux/spi/spi.h> | ||
22 | #include <linux/i2c/twl.h> | ||
23 | #include <linux/regulator/machine.h> | ||
24 | #include <linux/io.h> | ||
25 | #include <linux/gpio.h> | ||
26 | #include <linux/mmc/host.h> | ||
27 | #include <linux/platform_data/spi-omap2-mcspi.h> | ||
28 | #include <linux/platform_data/omap-twl4030.h> | ||
29 | #include <linux/usb/phy.h> | ||
30 | |||
31 | #include <asm/mach-types.h> | ||
32 | #include <asm/mach/arch.h> | ||
33 | #include <asm/mach/map.h> | ||
34 | |||
35 | #include "common.h" | ||
36 | #include <linux/omap-dma.h> | ||
37 | #include <video/omapdss.h> | ||
38 | #include <video/omap-panel-data.h> | ||
39 | |||
40 | #include "gpmc.h" | ||
41 | |||
42 | #include "soc.h" | ||
43 | #include "board-flash.h" | ||
44 | #include "mux.h" | ||
45 | #include "sdram-qimonda-hyb18m512160af-6.h" | ||
46 | #include "hsmmc.h" | ||
47 | #include "pm.h" | ||
48 | #include "control.h" | ||
49 | #include "common-board-devices.h" | ||
50 | |||
51 | #define CONFIG_DISABLE_HFCLK 1 | ||
52 | |||
53 | #define SDP3430_TS_GPIO_IRQ_SDPV1 3 | ||
54 | #define SDP3430_TS_GPIO_IRQ_SDPV2 2 | ||
55 | |||
56 | #define ENABLE_VAUX3_DEDICATED 0x03 | ||
57 | #define ENABLE_VAUX3_DEV_GRP 0x20 | ||
58 | |||
59 | #define TWL4030_MSECURE_GPIO 22 | ||
60 | |||
61 | static uint32_t board_keymap[] = { | ||
62 | KEY(0, 0, KEY_LEFT), | ||
63 | KEY(0, 1, KEY_RIGHT), | ||
64 | KEY(0, 2, KEY_A), | ||
65 | KEY(0, 3, KEY_B), | ||
66 | KEY(0, 4, KEY_C), | ||
67 | KEY(1, 0, KEY_DOWN), | ||
68 | KEY(1, 1, KEY_UP), | ||
69 | KEY(1, 2, KEY_E), | ||
70 | KEY(1, 3, KEY_F), | ||
71 | KEY(1, 4, KEY_G), | ||
72 | KEY(2, 0, KEY_ENTER), | ||
73 | KEY(2, 1, KEY_I), | ||
74 | KEY(2, 2, KEY_J), | ||
75 | KEY(2, 3, KEY_K), | ||
76 | KEY(2, 4, KEY_3), | ||
77 | KEY(3, 0, KEY_M), | ||
78 | KEY(3, 1, KEY_N), | ||
79 | KEY(3, 2, KEY_O), | ||
80 | KEY(3, 3, KEY_P), | ||
81 | KEY(3, 4, KEY_Q), | ||
82 | KEY(4, 0, KEY_R), | ||
83 | KEY(4, 1, KEY_4), | ||
84 | KEY(4, 2, KEY_T), | ||
85 | KEY(4, 3, KEY_U), | ||
86 | KEY(4, 4, KEY_D), | ||
87 | KEY(5, 0, KEY_V), | ||
88 | KEY(5, 1, KEY_W), | ||
89 | KEY(5, 2, KEY_L), | ||
90 | KEY(5, 3, KEY_S), | ||
91 | KEY(5, 4, KEY_H), | ||
92 | 0 | ||
93 | }; | ||
94 | |||
95 | static struct matrix_keymap_data board_map_data = { | ||
96 | .keymap = board_keymap, | ||
97 | .keymap_size = ARRAY_SIZE(board_keymap), | ||
98 | }; | ||
99 | |||
100 | static struct twl4030_keypad_data sdp3430_kp_data = { | ||
101 | .keymap_data = &board_map_data, | ||
102 | .rows = 5, | ||
103 | .cols = 6, | ||
104 | .rep = 1, | ||
105 | }; | ||
106 | |||
107 | #define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 8 | ||
108 | #define SDP3430_LCD_PANEL_ENABLE_GPIO 5 | ||
109 | |||
110 | static void __init sdp3430_display_init(void) | ||
111 | { | ||
112 | int r; | ||
113 | |||
114 | /* | ||
115 | * the backlight GPIO doesn't directly go to the panel, it enables | ||
116 | * an internal circuit on 3430sdp to create the signal V_BKL_28V, | ||
117 | * this is connected to LED+ pin of the sharp panel. This GPIO | ||
118 | * is left enabled in the board file, and not passed to the panel | ||
119 | * as platform_data. | ||
120 | */ | ||
121 | r = gpio_request_one(SDP3430_LCD_PANEL_BACKLIGHT_GPIO, | ||
122 | GPIOF_OUT_INIT_HIGH, "LCD Backlight"); | ||
123 | if (r) | ||
124 | pr_err("failed to get LCD Backlight GPIO\n"); | ||
125 | |||
126 | } | ||
127 | |||
128 | static struct panel_sharp_ls037v7dw01_platform_data sdp3430_lcd_pdata = { | ||
129 | .name = "lcd", | ||
130 | .source = "dpi.0", | ||
131 | |||
132 | .data_lines = 16, | ||
133 | |||
134 | .resb_gpio = SDP3430_LCD_PANEL_ENABLE_GPIO, | ||
135 | .ini_gpio = -1, | ||
136 | .mo_gpio = -1, | ||
137 | .lr_gpio = -1, | ||
138 | .ud_gpio = -1, | ||
139 | }; | ||
140 | |||
141 | static struct platform_device sdp3430_lcd_device = { | ||
142 | .name = "panel-sharp-ls037v7dw01", | ||
143 | .id = 0, | ||
144 | .dev.platform_data = &sdp3430_lcd_pdata, | ||
145 | }; | ||
146 | |||
147 | static struct connector_dvi_platform_data sdp3430_dvi_connector_pdata = { | ||
148 | .name = "dvi", | ||
149 | .source = "tfp410.0", | ||
150 | .i2c_bus_num = -1, | ||
151 | }; | ||
152 | |||
153 | static struct platform_device sdp3430_dvi_connector_device = { | ||
154 | .name = "connector-dvi", | ||
155 | .id = 0, | ||
156 | .dev.platform_data = &sdp3430_dvi_connector_pdata, | ||
157 | }; | ||
158 | |||
159 | static struct encoder_tfp410_platform_data sdp3430_tfp410_pdata = { | ||
160 | .name = "tfp410.0", | ||
161 | .source = "dpi.0", | ||
162 | .data_lines = 24, | ||
163 | .power_down_gpio = -1, | ||
164 | }; | ||
165 | |||
166 | static struct platform_device sdp3430_tfp410_device = { | ||
167 | .name = "tfp410", | ||
168 | .id = 0, | ||
169 | .dev.platform_data = &sdp3430_tfp410_pdata, | ||
170 | }; | ||
171 | |||
172 | static struct connector_atv_platform_data sdp3430_tv_pdata = { | ||
173 | .name = "tv", | ||
174 | .source = "venc.0", | ||
175 | .connector_type = OMAP_DSS_VENC_TYPE_SVIDEO, | ||
176 | .invert_polarity = false, | ||
177 | }; | ||
178 | |||
179 | static struct platform_device sdp3430_tv_connector_device = { | ||
180 | .name = "connector-analog-tv", | ||
181 | .id = 0, | ||
182 | .dev.platform_data = &sdp3430_tv_pdata, | ||
183 | }; | ||
184 | |||
185 | static struct omap_dss_board_info sdp3430_dss_data = { | ||
186 | .default_display_name = "lcd", | ||
187 | }; | ||
188 | |||
189 | static struct omap2_hsmmc_info mmc[] = { | ||
190 | { | ||
191 | .mmc = 1, | ||
192 | /* 8 bits (default) requires S6.3 == ON, | ||
193 | * so the SIM card isn't used; else 4 bits. | ||
194 | */ | ||
195 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, | ||
196 | .gpio_wp = 4, | ||
197 | .deferred = true, | ||
198 | }, | ||
199 | { | ||
200 | .mmc = 2, | ||
201 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, | ||
202 | .gpio_wp = 7, | ||
203 | .deferred = true, | ||
204 | }, | ||
205 | {} /* Terminator */ | ||
206 | }; | ||
207 | |||
208 | static struct omap_tw4030_pdata omap_twl4030_audio_data = { | ||
209 | .voice_connected = true, | ||
210 | .custom_routing = true, | ||
211 | |||
212 | .has_hs = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, | ||
213 | .has_hf = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, | ||
214 | |||
215 | .has_mainmic = true, | ||
216 | .has_submic = true, | ||
217 | .has_hsmic = true, | ||
218 | .has_linein = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, | ||
219 | }; | ||
220 | |||
221 | static int sdp3430_twl_gpio_setup(struct device *dev, | ||
222 | unsigned gpio, unsigned ngpio) | ||
223 | { | ||
224 | /* gpio + 0 is "mmc0_cd" (input/IRQ), | ||
225 | * gpio + 1 is "mmc1_cd" (input/IRQ) | ||
226 | */ | ||
227 | mmc[0].gpio_cd = gpio + 0; | ||
228 | mmc[1].gpio_cd = gpio + 1; | ||
229 | omap_hsmmc_late_init(mmc); | ||
230 | |||
231 | /* gpio + 7 is "sub_lcd_en_bkl" (output/PWM1) */ | ||
232 | gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, "sub_lcd_en_bkl"); | ||
233 | |||
234 | /* gpio + 15 is "sub_lcd_nRST" (output) */ | ||
235 | gpio_request_one(gpio + 15, GPIOF_OUT_INIT_LOW, "sub_lcd_nRST"); | ||
236 | |||
237 | omap_twl4030_audio_data.jack_detect = gpio + 2; | ||
238 | omap_twl4030_audio_init("SDP3430", &omap_twl4030_audio_data); | ||
239 | |||
240 | return 0; | ||
241 | } | ||
242 | |||
243 | static struct twl4030_gpio_platform_data sdp3430_gpio_data = { | ||
244 | .pulldowns = BIT(2) | BIT(6) | BIT(8) | BIT(13) | ||
245 | | BIT(16) | BIT(17), | ||
246 | .setup = sdp3430_twl_gpio_setup, | ||
247 | }; | ||
248 | |||
249 | /* regulator consumer mappings */ | ||
250 | |||
251 | /* ads7846 on SPI */ | ||
252 | static struct regulator_consumer_supply sdp3430_vaux3_supplies[] = { | ||
253 | REGULATOR_SUPPLY("vcc", "spi1.0"), | ||
254 | }; | ||
255 | |||
256 | static struct regulator_consumer_supply sdp3430_vmmc1_supplies[] = { | ||
257 | REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"), | ||
258 | }; | ||
259 | |||
260 | static struct regulator_consumer_supply sdp3430_vsim_supplies[] = { | ||
261 | REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"), | ||
262 | }; | ||
263 | |||
264 | static struct regulator_consumer_supply sdp3430_vmmc2_supplies[] = { | ||
265 | REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1"), | ||
266 | }; | ||
267 | |||
268 | /* | ||
269 | * Apply all the fixed voltages since most versions of U-Boot | ||
270 | * don't bother with that initialization. | ||
271 | */ | ||
272 | |||
273 | /* VAUX1 for mainboard (irda and sub-lcd) */ | ||
274 | static struct regulator_init_data sdp3430_vaux1 = { | ||
275 | .constraints = { | ||
276 | .min_uV = 2800000, | ||
277 | .max_uV = 2800000, | ||
278 | .apply_uV = true, | ||
279 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
280 | | REGULATOR_MODE_STANDBY, | ||
281 | .valid_ops_mask = REGULATOR_CHANGE_MODE | ||
282 | | REGULATOR_CHANGE_STATUS, | ||
283 | }, | ||
284 | }; | ||
285 | |||
286 | /* VAUX2 for camera module */ | ||
287 | static struct regulator_init_data sdp3430_vaux2 = { | ||
288 | .constraints = { | ||
289 | .min_uV = 2800000, | ||
290 | .max_uV = 2800000, | ||
291 | .apply_uV = true, | ||
292 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
293 | | REGULATOR_MODE_STANDBY, | ||
294 | .valid_ops_mask = REGULATOR_CHANGE_MODE | ||
295 | | REGULATOR_CHANGE_STATUS, | ||
296 | }, | ||
297 | }; | ||
298 | |||
299 | /* VAUX3 for LCD board */ | ||
300 | static struct regulator_init_data sdp3430_vaux3 = { | ||
301 | .constraints = { | ||
302 | .min_uV = 2800000, | ||
303 | .max_uV = 2800000, | ||
304 | .apply_uV = true, | ||
305 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
306 | | REGULATOR_MODE_STANDBY, | ||
307 | .valid_ops_mask = REGULATOR_CHANGE_MODE | ||
308 | | REGULATOR_CHANGE_STATUS, | ||
309 | }, | ||
310 | .num_consumer_supplies = ARRAY_SIZE(sdp3430_vaux3_supplies), | ||
311 | .consumer_supplies = sdp3430_vaux3_supplies, | ||
312 | }; | ||
313 | |||
314 | /* VAUX4 for OMAP VDD_CSI2 (camera) */ | ||
315 | static struct regulator_init_data sdp3430_vaux4 = { | ||
316 | .constraints = { | ||
317 | .min_uV = 1800000, | ||
318 | .max_uV = 1800000, | ||
319 | .apply_uV = true, | ||
320 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
321 | | REGULATOR_MODE_STANDBY, | ||
322 | .valid_ops_mask = REGULATOR_CHANGE_MODE | ||
323 | | REGULATOR_CHANGE_STATUS, | ||
324 | }, | ||
325 | }; | ||
326 | |||
327 | /* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */ | ||
328 | static struct regulator_init_data sdp3430_vmmc1 = { | ||
329 | .constraints = { | ||
330 | .min_uV = 1850000, | ||
331 | .max_uV = 3150000, | ||
332 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
333 | | REGULATOR_MODE_STANDBY, | ||
334 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | ||
335 | | REGULATOR_CHANGE_MODE | ||
336 | | REGULATOR_CHANGE_STATUS, | ||
337 | }, | ||
338 | .num_consumer_supplies = ARRAY_SIZE(sdp3430_vmmc1_supplies), | ||
339 | .consumer_supplies = sdp3430_vmmc1_supplies, | ||
340 | }; | ||
341 | |||
342 | /* VMMC2 for MMC2 card */ | ||
343 | static struct regulator_init_data sdp3430_vmmc2 = { | ||
344 | .constraints = { | ||
345 | .min_uV = 1850000, | ||
346 | .max_uV = 1850000, | ||
347 | .apply_uV = true, | ||
348 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
349 | | REGULATOR_MODE_STANDBY, | ||
350 | .valid_ops_mask = REGULATOR_CHANGE_MODE | ||
351 | | REGULATOR_CHANGE_STATUS, | ||
352 | }, | ||
353 | .num_consumer_supplies = ARRAY_SIZE(sdp3430_vmmc2_supplies), | ||
354 | .consumer_supplies = sdp3430_vmmc2_supplies, | ||
355 | }; | ||
356 | |||
357 | /* VSIM for OMAP VDD_MMC1A (i/o for DAT4..DAT7) */ | ||
358 | static struct regulator_init_data sdp3430_vsim = { | ||
359 | .constraints = { | ||
360 | .min_uV = 1800000, | ||
361 | .max_uV = 3000000, | ||
362 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
363 | | REGULATOR_MODE_STANDBY, | ||
364 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | ||
365 | | REGULATOR_CHANGE_MODE | ||
366 | | REGULATOR_CHANGE_STATUS, | ||
367 | }, | ||
368 | .num_consumer_supplies = ARRAY_SIZE(sdp3430_vsim_supplies), | ||
369 | .consumer_supplies = sdp3430_vsim_supplies, | ||
370 | }; | ||
371 | |||
372 | static struct twl4030_platform_data sdp3430_twldata = { | ||
373 | /* platform_data for children goes here */ | ||
374 | .gpio = &sdp3430_gpio_data, | ||
375 | .keypad = &sdp3430_kp_data, | ||
376 | |||
377 | .vaux1 = &sdp3430_vaux1, | ||
378 | .vaux2 = &sdp3430_vaux2, | ||
379 | .vaux3 = &sdp3430_vaux3, | ||
380 | .vaux4 = &sdp3430_vaux4, | ||
381 | .vmmc1 = &sdp3430_vmmc1, | ||
382 | .vmmc2 = &sdp3430_vmmc2, | ||
383 | .vsim = &sdp3430_vsim, | ||
384 | }; | ||
385 | |||
386 | static int __init omap3430_i2c_init(void) | ||
387 | { | ||
388 | /* i2c1 for PMIC only */ | ||
389 | omap3_pmic_get_config(&sdp3430_twldata, | ||
390 | TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_BCI | | ||
391 | TWL_COMMON_PDATA_MADC | TWL_COMMON_PDATA_AUDIO, | ||
392 | TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2); | ||
393 | sdp3430_twldata.vdac->constraints.apply_uV = true; | ||
394 | sdp3430_twldata.vpll2->constraints.apply_uV = true; | ||
395 | sdp3430_twldata.vpll2->constraints.name = "VDVI"; | ||
396 | |||
397 | sdp3430_twldata.audio->codec->hs_extmute = 1; | ||
398 | sdp3430_twldata.audio->codec->hs_extmute_gpio = -EINVAL; | ||
399 | |||
400 | omap3_pmic_init("twl4030", &sdp3430_twldata); | ||
401 | |||
402 | /* i2c2 on camera connector (for sensor control) and optional isp1301 */ | ||
403 | omap_register_i2c_bus(2, 400, NULL, 0); | ||
404 | /* i2c3 on display connector (for DVI, tfp410) */ | ||
405 | omap_register_i2c_bus(3, 400, NULL, 0); | ||
406 | return 0; | ||
407 | } | ||
408 | |||
409 | static void enable_board_wakeup_source(void) | ||
410 | { | ||
411 | /* T2 interrupt line (keypad) */ | ||
412 | omap_mux_init_signal("sys_nirq", | ||
413 | OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); | ||
414 | } | ||
415 | |||
416 | static struct usbhs_phy_data phy_data[] __initdata = { | ||
417 | { | ||
418 | .port = 1, | ||
419 | .reset_gpio = 57, | ||
420 | .vcc_gpio = -EINVAL, | ||
421 | }, | ||
422 | { | ||
423 | .port = 2, | ||
424 | .reset_gpio = 61, | ||
425 | .vcc_gpio = -EINVAL, | ||
426 | }, | ||
427 | }; | ||
428 | |||
429 | static struct usbhs_omap_platform_data usbhs_bdata __initdata = { | ||
430 | |||
431 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, | ||
432 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, | ||
433 | }; | ||
434 | |||
435 | #ifdef CONFIG_OMAP_MUX | ||
436 | static struct omap_board_mux board_mux[] __initdata = { | ||
437 | { .reg_offset = OMAP_MUX_TERMINATOR }, | ||
438 | }; | ||
439 | #else | ||
440 | #define board_mux NULL | ||
441 | #endif | ||
442 | |||
443 | /* | ||
444 | * SDP3430 V2 Board CS organization | ||
445 | * Different from SDP3430 V1. Now 4 switches used to specify CS | ||
446 | * | ||
447 | * See also the Switch S8 settings in the comments. | ||
448 | */ | ||
449 | static char chip_sel_3430[][GPMC_CS_NUM] = { | ||
450 | {PDC_NOR, PDC_NAND, PDC_ONENAND, DBG_MPDB, 0, 0, 0, 0}, /* S8:1111 */ | ||
451 | {PDC_ONENAND, PDC_NAND, PDC_NOR, DBG_MPDB, 0, 0, 0, 0}, /* S8:1110 */ | ||
452 | {PDC_NAND, PDC_ONENAND, PDC_NOR, DBG_MPDB, 0, 0, 0, 0}, /* S8:1101 */ | ||
453 | }; | ||
454 | |||
455 | static struct mtd_partition sdp_nor_partitions[] = { | ||
456 | /* bootloader (U-Boot, etc) in first sector */ | ||
457 | { | ||
458 | .name = "Bootloader-NOR", | ||
459 | .offset = 0, | ||
460 | .size = SZ_256K, | ||
461 | .mask_flags = MTD_WRITEABLE, /* force read-only */ | ||
462 | }, | ||
463 | /* bootloader params in the next sector */ | ||
464 | { | ||
465 | .name = "Params-NOR", | ||
466 | .offset = MTDPART_OFS_APPEND, | ||
467 | .size = SZ_256K, | ||
468 | .mask_flags = 0, | ||
469 | }, | ||
470 | /* kernel */ | ||
471 | { | ||
472 | .name = "Kernel-NOR", | ||
473 | .offset = MTDPART_OFS_APPEND, | ||
474 | .size = SZ_2M, | ||
475 | .mask_flags = 0 | ||
476 | }, | ||
477 | /* file system */ | ||
478 | { | ||
479 | .name = "Filesystem-NOR", | ||
480 | .offset = MTDPART_OFS_APPEND, | ||
481 | .size = MTDPART_SIZ_FULL, | ||
482 | .mask_flags = 0 | ||
483 | } | ||
484 | }; | ||
485 | |||
486 | static struct mtd_partition sdp_onenand_partitions[] = { | ||
487 | { | ||
488 | .name = "X-Loader-OneNAND", | ||
489 | .offset = 0, | ||
490 | .size = 4 * (64 * 2048), | ||
491 | .mask_flags = MTD_WRITEABLE /* force read-only */ | ||
492 | }, | ||
493 | { | ||
494 | .name = "U-Boot-OneNAND", | ||
495 | .offset = MTDPART_OFS_APPEND, | ||
496 | .size = 2 * (64 * 2048), | ||
497 | .mask_flags = MTD_WRITEABLE /* force read-only */ | ||
498 | }, | ||
499 | { | ||
500 | .name = "U-Boot Environment-OneNAND", | ||
501 | .offset = MTDPART_OFS_APPEND, | ||
502 | .size = 1 * (64 * 2048), | ||
503 | }, | ||
504 | { | ||
505 | .name = "Kernel-OneNAND", | ||
506 | .offset = MTDPART_OFS_APPEND, | ||
507 | .size = 16 * (64 * 2048), | ||
508 | }, | ||
509 | { | ||
510 | .name = "File System-OneNAND", | ||
511 | .offset = MTDPART_OFS_APPEND, | ||
512 | .size = MTDPART_SIZ_FULL, | ||
513 | }, | ||
514 | }; | ||
515 | |||
516 | static struct mtd_partition sdp_nand_partitions[] = { | ||
517 | /* All the partition sizes are listed in terms of NAND block size */ | ||
518 | { | ||
519 | .name = "X-Loader-NAND", | ||
520 | .offset = 0, | ||
521 | .size = 4 * (64 * 2048), | ||
522 | .mask_flags = MTD_WRITEABLE, /* force read-only */ | ||
523 | }, | ||
524 | { | ||
525 | .name = "U-Boot-NAND", | ||
526 | .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */ | ||
527 | .size = 10 * (64 * 2048), | ||
528 | .mask_flags = MTD_WRITEABLE, /* force read-only */ | ||
529 | }, | ||
530 | { | ||
531 | .name = "Boot Env-NAND", | ||
532 | |||
533 | .offset = MTDPART_OFS_APPEND, /* Offset = 0x1c0000 */ | ||
534 | .size = 6 * (64 * 2048), | ||
535 | }, | ||
536 | { | ||
537 | .name = "Kernel-NAND", | ||
538 | .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */ | ||
539 | .size = 40 * (64 * 2048), | ||
540 | }, | ||
541 | { | ||
542 | .name = "File System - NAND", | ||
543 | .size = MTDPART_SIZ_FULL, | ||
544 | .offset = MTDPART_OFS_APPEND, /* Offset = 0x780000 */ | ||
545 | }, | ||
546 | }; | ||
547 | |||
548 | static struct flash_partitions sdp_flash_partitions[] = { | ||
549 | { | ||
550 | .parts = sdp_nor_partitions, | ||
551 | .nr_parts = ARRAY_SIZE(sdp_nor_partitions), | ||
552 | }, | ||
553 | { | ||
554 | .parts = sdp_onenand_partitions, | ||
555 | .nr_parts = ARRAY_SIZE(sdp_onenand_partitions), | ||
556 | }, | ||
557 | { | ||
558 | .parts = sdp_nand_partitions, | ||
559 | .nr_parts = ARRAY_SIZE(sdp_nand_partitions), | ||
560 | }, | ||
561 | }; | ||
562 | |||
563 | static void __init omap_3430sdp_init(void) | ||
564 | { | ||
565 | int gpio_pendown; | ||
566 | |||
567 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); | ||
568 | omap_hsmmc_init(mmc); | ||
569 | omap3430_i2c_init(); | ||
570 | omap_display_init(&sdp3430_dss_data); | ||
571 | platform_device_register(&sdp3430_lcd_device); | ||
572 | platform_device_register(&sdp3430_tfp410_device); | ||
573 | platform_device_register(&sdp3430_dvi_connector_device); | ||
574 | platform_device_register(&sdp3430_tv_connector_device); | ||
575 | |||
576 | if (omap_rev() > OMAP3430_REV_ES1_0) | ||
577 | gpio_pendown = SDP3430_TS_GPIO_IRQ_SDPV2; | ||
578 | else | ||
579 | gpio_pendown = SDP3430_TS_GPIO_IRQ_SDPV1; | ||
580 | omap_ads7846_init(1, gpio_pendown, 310, NULL); | ||
581 | omap_serial_init(); | ||
582 | omap_sdrc_init(hyb18m512160af6_sdrc_params, NULL); | ||
583 | usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb"); | ||
584 | usb_musb_init(NULL); | ||
585 | board_flash_init(sdp_flash_partitions, chip_sel_3430, 0); | ||
586 | sdp3430_display_init(); | ||
587 | enable_board_wakeup_source(); | ||
588 | |||
589 | usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data)); | ||
590 | usbhs_init(&usbhs_bdata); | ||
591 | } | ||
592 | |||
593 | MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board") | ||
594 | /* Maintainer: Syed Khasim - Texas Instruments Inc */ | ||
595 | .atag_offset = 0x100, | ||
596 | .reserve = omap_reserve, | ||
597 | .map_io = omap3_map_io, | ||
598 | .init_early = omap3430_init_early, | ||
599 | .init_irq = omap3_init_irq, | ||
600 | .init_machine = omap_3430sdp_init, | ||
601 | .init_late = omap3430_init_late, | ||
602 | .init_time = omap3_sync32k_timer_init, | ||
603 | .restart = omap3xxx_restart, | ||
604 | MACHINE_END | ||