2 * linux/arch/arm/mach-omap2/board-3430sdp.c
4 * Copyright (C) 2007 Texas Instruments
6 * Modified from mach-omap2/board-generic.c
8 * Initial code: Syed Mohammed Khasim
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.
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>
25 #include <linux/gpio.h>
26 #include <linux/mmc/host.h>
28 #include <mach/hardware.h>
29 #include <asm/mach-types.h>
30 #include <asm/mach/arch.h>
31 #include <asm/mach/map.h>
33 #include <plat/mcspi.h>
34 #include <plat/board.h>
36 #include <plat/common.h>
38 #include <plat/gpmc.h>
39 #include <plat/display.h>
40 #include <plat/panel-generic-dpi.h>
42 #include <plat/gpmc-smc91x.h>
44 #include "board-flash.h"
46 #include "sdram-qimonda-hyb18m512160af-6.h"
50 #include "common-board-devices.h"
52 #define CONFIG_DISABLE_HFCLK 1
54 #define SDP3430_TS_GPIO_IRQ_SDPV1 3
55 #define SDP3430_TS_GPIO_IRQ_SDPV2 2
57 #define ENABLE_VAUX3_DEDICATED 0x03
58 #define ENABLE_VAUX3_DEV_GRP 0x20
60 #define TWL4030_MSECURE_GPIO 22
62 /* FIXME: These values need to be updated based on more profiling on 3430sdp*/
63 static struct cpuidle_params omap3_cpuidle_params_table[] = {
71 {1, 1500, 1800, 4000},
73 {1, 2500, 7500, 12000},
75 {1, 3000, 8500, 15000},
77 {1, 10000, 30000, 300000},
80 static uint32_t board_keymap[] = {
114 static struct matrix_keymap_data board_map_data = {
115 .keymap = board_keymap,
116 .keymap_size = ARRAY_SIZE(board_keymap),
119 static struct twl4030_keypad_data sdp3430_kp_data = {
120 .keymap_data = &board_map_data,
126 #define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 8
127 #define SDP3430_LCD_PANEL_ENABLE_GPIO 5
129 static struct gpio sdp3430_dss_gpios[] __initdata = {
130 {SDP3430_LCD_PANEL_ENABLE_GPIO, GPIOF_OUT_INIT_LOW, "LCD reset" },
131 {SDP3430_LCD_PANEL_BACKLIGHT_GPIO, GPIOF_OUT_INIT_LOW, "LCD Backlight"},
134 static int lcd_enabled;
135 static int dvi_enabled;
137 static void __init sdp3430_display_init(void)
141 r = gpio_request_array(sdp3430_dss_gpios,
142 ARRAY_SIZE(sdp3430_dss_gpios));
144 printk(KERN_ERR "failed to get LCD control GPIOs\n");
148 static int sdp3430_panel_enable_lcd(struct omap_dss_device *dssdev)
151 printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
155 gpio_direction_output(SDP3430_LCD_PANEL_ENABLE_GPIO, 1);
156 gpio_direction_output(SDP3430_LCD_PANEL_BACKLIGHT_GPIO, 1);
163 static void sdp3430_panel_disable_lcd(struct omap_dss_device *dssdev)
167 gpio_direction_output(SDP3430_LCD_PANEL_ENABLE_GPIO, 0);
168 gpio_direction_output(SDP3430_LCD_PANEL_BACKLIGHT_GPIO, 0);
171 static int sdp3430_panel_enable_dvi(struct omap_dss_device *dssdev)
174 printk(KERN_ERR "cannot enable DVI, LCD is enabled\n");
183 static void sdp3430_panel_disable_dvi(struct omap_dss_device *dssdev)
188 static int sdp3430_panel_enable_tv(struct omap_dss_device *dssdev)
193 static void sdp3430_panel_disable_tv(struct omap_dss_device *dssdev)
198 static struct omap_dss_device sdp3430_lcd_device = {
200 .driver_name = "sharp_ls_panel",
201 .type = OMAP_DISPLAY_TYPE_DPI,
202 .phy.dpi.data_lines = 16,
203 .platform_enable = sdp3430_panel_enable_lcd,
204 .platform_disable = sdp3430_panel_disable_lcd,
207 static struct panel_generic_dpi_data dvi_panel = {
209 .platform_enable = sdp3430_panel_enable_dvi,
210 .platform_disable = sdp3430_panel_disable_dvi,
213 static struct omap_dss_device sdp3430_dvi_device = {
215 .type = OMAP_DISPLAY_TYPE_DPI,
216 .driver_name = "generic_dpi_panel",
218 .phy.dpi.data_lines = 24,
221 static struct omap_dss_device sdp3430_tv_device = {
223 .driver_name = "venc",
224 .type = OMAP_DISPLAY_TYPE_VENC,
225 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
226 .platform_enable = sdp3430_panel_enable_tv,
227 .platform_disable = sdp3430_panel_disable_tv,
231 static struct omap_dss_device *sdp3430_dss_devices[] = {
237 static struct omap_dss_board_info sdp3430_dss_data = {
238 .num_devices = ARRAY_SIZE(sdp3430_dss_devices),
239 .devices = sdp3430_dss_devices,
240 .default_device = &sdp3430_lcd_device,
243 static struct omap_board_config_kernel sdp3430_config[] __initdata = {
246 static void __init omap_3430sdp_init_early(void)
248 omap2_init_common_infrastructure();
249 omap2_init_common_devices(hyb18m512160af6_sdrc_params, NULL);
252 static int sdp3430_batt_table[] = {
254 30800, 29500, 28300, 27100,
255 26000, 24900, 23900, 22900, 22000, 21100, 20300, 19400, 18700, 17900,
256 17200, 16500, 15900, 15300, 14700, 14100, 13600, 13100, 12600, 12100,
257 11600, 11200, 10800, 10400, 10000, 9630, 9280, 8950, 8620, 8310,
258 8020, 7730, 7460, 7200, 6950, 6710, 6470, 6250, 6040, 5830,
259 5640, 5450, 5260, 5090, 4920, 4760, 4600, 4450, 4310, 4170,
260 4040, 3910, 3790, 3670, 3550
263 static struct twl4030_bci_platform_data sdp3430_bci_data = {
264 .battery_tmp_tbl = sdp3430_batt_table,
265 .tblsize = ARRAY_SIZE(sdp3430_batt_table),
268 static struct omap2_hsmmc_info mmc[] = {
271 /* 8 bits (default) requires S6.3 == ON,
272 * so the SIM card isn't used; else 4 bits.
274 .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
279 .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
285 static int sdp3430_twl_gpio_setup(struct device *dev,
286 unsigned gpio, unsigned ngpio)
288 /* gpio + 0 is "mmc0_cd" (input/IRQ),
289 * gpio + 1 is "mmc1_cd" (input/IRQ)
291 mmc[0].gpio_cd = gpio + 0;
292 mmc[1].gpio_cd = gpio + 1;
293 omap2_hsmmc_init(mmc);
295 /* gpio + 7 is "sub_lcd_en_bkl" (output/PWM1) */
296 gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, "sub_lcd_en_bkl");
298 /* gpio + 15 is "sub_lcd_nRST" (output) */
299 gpio_request_one(gpio + 15, GPIOF_OUT_INIT_LOW, "sub_lcd_nRST");
304 static struct twl4030_gpio_platform_data sdp3430_gpio_data = {
305 .gpio_base = OMAP_MAX_GPIO_LINES,
306 .irq_base = TWL4030_GPIO_IRQ_BASE,
307 .irq_end = TWL4030_GPIO_IRQ_END,
308 .pulldowns = BIT(2) | BIT(6) | BIT(8) | BIT(13)
310 .setup = sdp3430_twl_gpio_setup,
313 static struct twl4030_usb_data sdp3430_usb_data = {
314 .usb_mode = T2_USB_MODE_ULPI,
317 static struct twl4030_madc_platform_data sdp3430_madc_data = {
321 /* regulator consumer mappings */
324 static struct regulator_consumer_supply sdp3430_vaux3_supplies[] = {
325 REGULATOR_SUPPLY("vcc", "spi1.0"),
328 static struct regulator_consumer_supply sdp3430_vdda_dac_supplies[] = {
329 REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"),
332 /* VPLL2 for digital video outputs */
333 static struct regulator_consumer_supply sdp3430_vpll2_supplies[] = {
334 REGULATOR_SUPPLY("vdds_dsi", "omapdss"),
335 REGULATOR_SUPPLY("vdds_dsi", "omapdss_dsi1"),
338 static struct regulator_consumer_supply sdp3430_vmmc1_supplies[] = {
339 REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
342 static struct regulator_consumer_supply sdp3430_vsim_supplies[] = {
343 REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"),
346 static struct regulator_consumer_supply sdp3430_vmmc2_supplies[] = {
347 REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1"),
351 * Apply all the fixed voltages since most versions of U-Boot
352 * don't bother with that initialization.
355 /* VAUX1 for mainboard (irda and sub-lcd) */
356 static struct regulator_init_data sdp3430_vaux1 = {
361 .valid_modes_mask = REGULATOR_MODE_NORMAL
362 | REGULATOR_MODE_STANDBY,
363 .valid_ops_mask = REGULATOR_CHANGE_MODE
364 | REGULATOR_CHANGE_STATUS,
368 /* VAUX2 for camera module */
369 static struct regulator_init_data sdp3430_vaux2 = {
374 .valid_modes_mask = REGULATOR_MODE_NORMAL
375 | REGULATOR_MODE_STANDBY,
376 .valid_ops_mask = REGULATOR_CHANGE_MODE
377 | REGULATOR_CHANGE_STATUS,
381 /* VAUX3 for LCD board */
382 static struct regulator_init_data sdp3430_vaux3 = {
387 .valid_modes_mask = REGULATOR_MODE_NORMAL
388 | REGULATOR_MODE_STANDBY,
389 .valid_ops_mask = REGULATOR_CHANGE_MODE
390 | REGULATOR_CHANGE_STATUS,
392 .num_consumer_supplies = ARRAY_SIZE(sdp3430_vaux3_supplies),
393 .consumer_supplies = sdp3430_vaux3_supplies,
396 /* VAUX4 for OMAP VDD_CSI2 (camera) */
397 static struct regulator_init_data sdp3430_vaux4 = {
402 .valid_modes_mask = REGULATOR_MODE_NORMAL
403 | REGULATOR_MODE_STANDBY,
404 .valid_ops_mask = REGULATOR_CHANGE_MODE
405 | REGULATOR_CHANGE_STATUS,
409 /* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */
410 static struct regulator_init_data sdp3430_vmmc1 = {
414 .valid_modes_mask = REGULATOR_MODE_NORMAL
415 | REGULATOR_MODE_STANDBY,
416 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
417 | REGULATOR_CHANGE_MODE
418 | REGULATOR_CHANGE_STATUS,
420 .num_consumer_supplies = ARRAY_SIZE(sdp3430_vmmc1_supplies),
421 .consumer_supplies = sdp3430_vmmc1_supplies,
424 /* VMMC2 for MMC2 card */
425 static struct regulator_init_data sdp3430_vmmc2 = {
430 .valid_modes_mask = REGULATOR_MODE_NORMAL
431 | REGULATOR_MODE_STANDBY,
432 .valid_ops_mask = REGULATOR_CHANGE_MODE
433 | REGULATOR_CHANGE_STATUS,
435 .num_consumer_supplies = ARRAY_SIZE(sdp3430_vmmc2_supplies),
436 .consumer_supplies = sdp3430_vmmc2_supplies,
439 /* VSIM for OMAP VDD_MMC1A (i/o for DAT4..DAT7) */
440 static struct regulator_init_data sdp3430_vsim = {
444 .valid_modes_mask = REGULATOR_MODE_NORMAL
445 | REGULATOR_MODE_STANDBY,
446 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
447 | REGULATOR_CHANGE_MODE
448 | REGULATOR_CHANGE_STATUS,
450 .num_consumer_supplies = ARRAY_SIZE(sdp3430_vsim_supplies),
451 .consumer_supplies = sdp3430_vsim_supplies,
454 /* VDAC for DSS driving S-Video */
455 static struct regulator_init_data sdp3430_vdac = {
460 .valid_modes_mask = REGULATOR_MODE_NORMAL
461 | REGULATOR_MODE_STANDBY,
462 .valid_ops_mask = REGULATOR_CHANGE_MODE
463 | REGULATOR_CHANGE_STATUS,
465 .num_consumer_supplies = ARRAY_SIZE(sdp3430_vdda_dac_supplies),
466 .consumer_supplies = sdp3430_vdda_dac_supplies,
469 static struct regulator_init_data sdp3430_vpll2 = {
475 .valid_modes_mask = REGULATOR_MODE_NORMAL
476 | REGULATOR_MODE_STANDBY,
477 .valid_ops_mask = REGULATOR_CHANGE_MODE
478 | REGULATOR_CHANGE_STATUS,
480 .num_consumer_supplies = ARRAY_SIZE(sdp3430_vpll2_supplies),
481 .consumer_supplies = sdp3430_vpll2_supplies,
484 static struct twl4030_codec_audio_data sdp3430_audio;
486 static struct twl4030_codec_data sdp3430_codec = {
487 .audio_mclk = 26000000,
488 .audio = &sdp3430_audio,
491 static struct twl4030_platform_data sdp3430_twldata = {
492 .irq_base = TWL4030_IRQ_BASE,
493 .irq_end = TWL4030_IRQ_END,
495 /* platform_data for children goes here */
496 .bci = &sdp3430_bci_data,
497 .gpio = &sdp3430_gpio_data,
498 .madc = &sdp3430_madc_data,
499 .keypad = &sdp3430_kp_data,
500 .usb = &sdp3430_usb_data,
501 .codec = &sdp3430_codec,
503 .vaux1 = &sdp3430_vaux1,
504 .vaux2 = &sdp3430_vaux2,
505 .vaux3 = &sdp3430_vaux3,
506 .vaux4 = &sdp3430_vaux4,
507 .vmmc1 = &sdp3430_vmmc1,
508 .vmmc2 = &sdp3430_vmmc2,
509 .vsim = &sdp3430_vsim,
510 .vdac = &sdp3430_vdac,
511 .vpll2 = &sdp3430_vpll2,
514 static int __init omap3430_i2c_init(void)
516 /* i2c1 for PMIC only */
517 omap3_pmic_init("twl4030", &sdp3430_twldata);
518 /* i2c2 on camera connector (for sensor control) and optional isp1301 */
519 omap_register_i2c_bus(2, 400, NULL, 0);
520 /* i2c3 on display connector (for DVI, tfp410) */
521 omap_register_i2c_bus(3, 400, NULL, 0);
525 #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
527 static struct omap_smc91x_platform_data board_smc91x_data = {
529 .flags = GPMC_MUX_ADD_DATA | GPMC_TIMINGS_SMC91C96 |
530 IORESOURCE_IRQ_LOWLEVEL,
533 static void __init board_smc91x_init(void)
535 if (omap_rev() > OMAP3430_REV_ES1_0)
536 board_smc91x_data.gpio_irq = 6;
538 board_smc91x_data.gpio_irq = 29;
540 gpmc_smc91x_init(&board_smc91x_data);
545 static inline void board_smc91x_init(void)
551 static void enable_board_wakeup_source(void)
553 /* T2 interrupt line (keypad) */
554 omap_mux_init_signal("sys_nirq",
555 OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
558 static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
560 .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
561 .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
562 .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
565 .reset_gpio_port[0] = 57,
566 .reset_gpio_port[1] = 61,
567 .reset_gpio_port[2] = -EINVAL
570 #ifdef CONFIG_OMAP_MUX
571 static struct omap_board_mux board_mux[] __initdata = {
572 { .reg_offset = OMAP_MUX_TERMINATOR },
575 static struct omap_device_pad serial1_pads[] __initdata = {
577 * Note that off output enable is an active low
578 * signal. So setting this means pin is a
579 * input enabled in off mode
581 OMAP_MUX_STATIC("uart1_cts.uart1_cts",
583 OMAP_PIN_OFF_INPUT_PULLDOWN |
586 OMAP_MUX_STATIC("uart1_rts.uart1_rts",
590 OMAP_MUX_STATIC("uart1_rx.uart1_rx",
592 OMAP_PIN_OFF_INPUT_PULLDOWN |
595 OMAP_MUX_STATIC("uart1_tx.uart1_tx",
601 static struct omap_device_pad serial2_pads[] __initdata = {
602 OMAP_MUX_STATIC("uart2_cts.uart2_cts",
603 OMAP_PIN_INPUT_PULLUP |
604 OMAP_PIN_OFF_INPUT_PULLDOWN |
607 OMAP_MUX_STATIC("uart2_rts.uart2_rts",
611 OMAP_MUX_STATIC("uart2_rx.uart2_rx",
613 OMAP_PIN_OFF_INPUT_PULLDOWN |
616 OMAP_MUX_STATIC("uart2_tx.uart2_tx",
622 static struct omap_device_pad serial3_pads[] __initdata = {
623 OMAP_MUX_STATIC("uart3_cts_rctx.uart3_cts_rctx",
624 OMAP_PIN_INPUT_PULLDOWN |
625 OMAP_PIN_OFF_INPUT_PULLDOWN |
628 OMAP_MUX_STATIC("uart3_rts_sd.uart3_rts_sd",
632 OMAP_MUX_STATIC("uart3_rx_irrx.uart3_rx_irrx",
634 OMAP_PIN_OFF_INPUT_PULLDOWN |
637 OMAP_MUX_STATIC("uart3_tx_irtx.uart3_tx_irtx",
643 static struct omap_board_data serial1_data = {
645 .pads = serial1_pads,
646 .pads_cnt = ARRAY_SIZE(serial1_pads),
649 static struct omap_board_data serial2_data = {
651 .pads = serial2_pads,
652 .pads_cnt = ARRAY_SIZE(serial2_pads),
655 static struct omap_board_data serial3_data = {
657 .pads = serial3_pads,
658 .pads_cnt = ARRAY_SIZE(serial3_pads),
661 static inline void board_serial_init(void)
663 omap_serial_init_port(&serial1_data);
664 omap_serial_init_port(&serial2_data);
665 omap_serial_init_port(&serial3_data);
668 #define board_mux NULL
670 static inline void board_serial_init(void)
677 * SDP3430 V2 Board CS organization
678 * Different from SDP3430 V1. Now 4 switches used to specify CS
680 * See also the Switch S8 settings in the comments.
682 static char chip_sel_3430[][GPMC_CS_NUM] = {
683 {PDC_NOR, PDC_NAND, PDC_ONENAND, DBG_MPDB, 0, 0, 0, 0}, /* S8:1111 */
684 {PDC_ONENAND, PDC_NAND, PDC_NOR, DBG_MPDB, 0, 0, 0, 0}, /* S8:1110 */
685 {PDC_NAND, PDC_ONENAND, PDC_NOR, DBG_MPDB, 0, 0, 0, 0}, /* S8:1101 */
688 static struct mtd_partition sdp_nor_partitions[] = {
689 /* bootloader (U-Boot, etc) in first sector */
691 .name = "Bootloader-NOR",
694 .mask_flags = MTD_WRITEABLE, /* force read-only */
696 /* bootloader params in the next sector */
698 .name = "Params-NOR",
699 .offset = MTDPART_OFS_APPEND,
705 .name = "Kernel-NOR",
706 .offset = MTDPART_OFS_APPEND,
712 .name = "Filesystem-NOR",
713 .offset = MTDPART_OFS_APPEND,
714 .size = MTDPART_SIZ_FULL,
719 static struct mtd_partition sdp_onenand_partitions[] = {
721 .name = "X-Loader-OneNAND",
723 .size = 4 * (64 * 2048),
724 .mask_flags = MTD_WRITEABLE /* force read-only */
727 .name = "U-Boot-OneNAND",
728 .offset = MTDPART_OFS_APPEND,
729 .size = 2 * (64 * 2048),
730 .mask_flags = MTD_WRITEABLE /* force read-only */
733 .name = "U-Boot Environment-OneNAND",
734 .offset = MTDPART_OFS_APPEND,
735 .size = 1 * (64 * 2048),
738 .name = "Kernel-OneNAND",
739 .offset = MTDPART_OFS_APPEND,
740 .size = 16 * (64 * 2048),
743 .name = "File System-OneNAND",
744 .offset = MTDPART_OFS_APPEND,
745 .size = MTDPART_SIZ_FULL,
749 static struct mtd_partition sdp_nand_partitions[] = {
750 /* All the partition sizes are listed in terms of NAND block size */
752 .name = "X-Loader-NAND",
754 .size = 4 * (64 * 2048),
755 .mask_flags = MTD_WRITEABLE, /* force read-only */
758 .name = "U-Boot-NAND",
759 .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
760 .size = 10 * (64 * 2048),
761 .mask_flags = MTD_WRITEABLE, /* force read-only */
764 .name = "Boot Env-NAND",
766 .offset = MTDPART_OFS_APPEND, /* Offset = 0x1c0000 */
767 .size = 6 * (64 * 2048),
770 .name = "Kernel-NAND",
771 .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */
772 .size = 40 * (64 * 2048),
775 .name = "File System - NAND",
776 .size = MTDPART_SIZ_FULL,
777 .offset = MTDPART_OFS_APPEND, /* Offset = 0x780000 */
781 static struct flash_partitions sdp_flash_partitions[] = {
783 .parts = sdp_nor_partitions,
784 .nr_parts = ARRAY_SIZE(sdp_nor_partitions),
787 .parts = sdp_onenand_partitions,
788 .nr_parts = ARRAY_SIZE(sdp_onenand_partitions),
791 .parts = sdp_nand_partitions,
792 .nr_parts = ARRAY_SIZE(sdp_nand_partitions),
796 static void __init omap_3430sdp_init(void)
800 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
801 omap_board_config = sdp3430_config;
802 omap_board_config_size = ARRAY_SIZE(sdp3430_config);
803 omap3_pm_init_cpuidle(omap3_cpuidle_params_table);
805 omap_display_init(&sdp3430_dss_data);
806 if (omap_rev() > OMAP3430_REV_ES1_0)
807 gpio_pendown = SDP3430_TS_GPIO_IRQ_SDPV2;
809 gpio_pendown = SDP3430_TS_GPIO_IRQ_SDPV1;
810 omap_ads7846_init(1, gpio_pendown, 310, NULL);
814 board_flash_init(sdp_flash_partitions, chip_sel_3430, 0);
815 sdp3430_display_init();
816 enable_board_wakeup_source();
817 usbhs_init(&usbhs_bdata);
820 MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
821 /* Maintainer: Syed Khasim - Texas Instruments Inc */
822 .boot_params = 0x80000100,
823 .reserve = omap_reserve,
824 .map_io = omap3_map_io,
825 .init_early = omap_3430sdp_init_early,
826 .init_irq = omap_init_irq,
827 .init_machine = omap_3430sdp_init,
828 .timer = &omap_timer,