diff options
Diffstat (limited to 'arch/arm/mach-omap2/board-4430sdp.c')
-rw-r--r-- | arch/arm/mach-omap2/board-4430sdp.c | 190 |
1 files changed, 172 insertions, 18 deletions
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index f603f3b04cb8..333ceb2c8fb0 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <plat/common.h> | 35 | #include <plat/common.h> |
36 | #include <plat/usb.h> | 36 | #include <plat/usb.h> |
37 | #include <plat/mmc.h> | 37 | #include <plat/mmc.h> |
38 | #include <plat/omap4-keypad.h> | ||
38 | 39 | ||
39 | #include "mux.h" | 40 | #include "mux.h" |
40 | #include "hsmmc.h" | 41 | #include "hsmmc.h" |
@@ -47,6 +48,90 @@ | |||
47 | #define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184 | 48 | #define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184 |
48 | #define OMAP4_SFH7741_ENABLE_GPIO 188 | 49 | #define OMAP4_SFH7741_ENABLE_GPIO 188 |
49 | 50 | ||
51 | static const int sdp4430_keymap[] = { | ||
52 | KEY(0, 0, KEY_E), | ||
53 | KEY(0, 1, KEY_R), | ||
54 | KEY(0, 2, KEY_T), | ||
55 | KEY(0, 3, KEY_HOME), | ||
56 | KEY(0, 4, KEY_F5), | ||
57 | KEY(0, 5, KEY_UNKNOWN), | ||
58 | KEY(0, 6, KEY_I), | ||
59 | KEY(0, 7, KEY_LEFTSHIFT), | ||
60 | |||
61 | KEY(1, 0, KEY_D), | ||
62 | KEY(1, 1, KEY_F), | ||
63 | KEY(1, 2, KEY_G), | ||
64 | KEY(1, 3, KEY_SEND), | ||
65 | KEY(1, 4, KEY_F6), | ||
66 | KEY(1, 5, KEY_UNKNOWN), | ||
67 | KEY(1, 6, KEY_K), | ||
68 | KEY(1, 7, KEY_ENTER), | ||
69 | |||
70 | KEY(2, 0, KEY_X), | ||
71 | KEY(2, 1, KEY_C), | ||
72 | KEY(2, 2, KEY_V), | ||
73 | KEY(2, 3, KEY_END), | ||
74 | KEY(2, 4, KEY_F7), | ||
75 | KEY(2, 5, KEY_UNKNOWN), | ||
76 | KEY(2, 6, KEY_DOT), | ||
77 | KEY(2, 7, KEY_CAPSLOCK), | ||
78 | |||
79 | KEY(3, 0, KEY_Z), | ||
80 | KEY(3, 1, KEY_KPPLUS), | ||
81 | KEY(3, 2, KEY_B), | ||
82 | KEY(3, 3, KEY_F1), | ||
83 | KEY(3, 4, KEY_F8), | ||
84 | KEY(3, 5, KEY_UNKNOWN), | ||
85 | KEY(3, 6, KEY_O), | ||
86 | KEY(3, 7, KEY_SPACE), | ||
87 | |||
88 | KEY(4, 0, KEY_W), | ||
89 | KEY(4, 1, KEY_Y), | ||
90 | KEY(4, 2, KEY_U), | ||
91 | KEY(4, 3, KEY_F2), | ||
92 | KEY(4, 4, KEY_VOLUMEUP), | ||
93 | KEY(4, 5, KEY_UNKNOWN), | ||
94 | KEY(4, 6, KEY_L), | ||
95 | KEY(4, 7, KEY_LEFT), | ||
96 | |||
97 | KEY(5, 0, KEY_S), | ||
98 | KEY(5, 1, KEY_H), | ||
99 | KEY(5, 2, KEY_J), | ||
100 | KEY(5, 3, KEY_F3), | ||
101 | KEY(5, 4, KEY_F9), | ||
102 | KEY(5, 5, KEY_VOLUMEDOWN), | ||
103 | KEY(5, 6, KEY_M), | ||
104 | KEY(5, 7, KEY_RIGHT), | ||
105 | |||
106 | KEY(6, 0, KEY_Q), | ||
107 | KEY(6, 1, KEY_A), | ||
108 | KEY(6, 2, KEY_N), | ||
109 | KEY(6, 3, KEY_BACK), | ||
110 | KEY(6, 4, KEY_BACKSPACE), | ||
111 | KEY(6, 5, KEY_UNKNOWN), | ||
112 | KEY(6, 6, KEY_P), | ||
113 | KEY(6, 7, KEY_UP), | ||
114 | |||
115 | KEY(7, 0, KEY_PROG1), | ||
116 | KEY(7, 1, KEY_PROG2), | ||
117 | KEY(7, 2, KEY_PROG3), | ||
118 | KEY(7, 3, KEY_PROG4), | ||
119 | KEY(7, 4, KEY_F4), | ||
120 | KEY(7, 5, KEY_UNKNOWN), | ||
121 | KEY(7, 6, KEY_OK), | ||
122 | KEY(7, 7, KEY_DOWN), | ||
123 | }; | ||
124 | |||
125 | static struct matrix_keymap_data sdp4430_keymap_data = { | ||
126 | .keymap = sdp4430_keymap, | ||
127 | .keymap_size = ARRAY_SIZE(sdp4430_keymap), | ||
128 | }; | ||
129 | |||
130 | static struct omap4_keypad_platform_data sdp4430_keypad_data = { | ||
131 | .keymap_data = &sdp4430_keymap_data, | ||
132 | .rows = 8, | ||
133 | .cols = 8, | ||
134 | }; | ||
50 | static struct gpio_led sdp4430_gpio_leds[] = { | 135 | static struct gpio_led sdp4430_gpio_leds[] = { |
51 | { | 136 | { |
52 | .name = "omap4:green:debug0", | 137 | .name = "omap4:green:debug0", |
@@ -238,16 +323,13 @@ static struct omap_board_config_kernel sdp4430_config[] __initdata = { | |||
238 | { OMAP_TAG_LCD, &sdp4430_lcd_config }, | 323 | { OMAP_TAG_LCD, &sdp4430_lcd_config }, |
239 | }; | 324 | }; |
240 | 325 | ||
241 | static void __init omap_4430sdp_init_irq(void) | 326 | static void __init omap_4430sdp_init_early(void) |
242 | { | 327 | { |
243 | omap_board_config = sdp4430_config; | ||
244 | omap_board_config_size = ARRAY_SIZE(sdp4430_config); | ||
245 | omap2_init_common_infrastructure(); | 328 | omap2_init_common_infrastructure(); |
246 | omap2_init_common_devices(NULL, NULL); | 329 | omap2_init_common_devices(NULL, NULL); |
247 | #ifdef CONFIG_OMAP_32K_TIMER | 330 | #ifdef CONFIG_OMAP_32K_TIMER |
248 | omap2_gp_clockevent_set_gptimer(1); | 331 | omap2_gp_clockevent_set_gptimer(1); |
249 | #endif | 332 | #endif |
250 | gic_init_irq(); | ||
251 | } | 333 | } |
252 | 334 | ||
253 | static struct omap_musb_board_data musb_board_data = { | 335 | static struct omap_musb_board_data musb_board_data = { |
@@ -266,11 +348,6 @@ static struct twl4030_usb_data omap4_usbphy_data = { | |||
266 | 348 | ||
267 | static struct omap2_hsmmc_info mmc[] = { | 349 | static struct omap2_hsmmc_info mmc[] = { |
268 | { | 350 | { |
269 | .mmc = 1, | ||
270 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, | ||
271 | .gpio_wp = -EINVAL, | ||
272 | }, | ||
273 | { | ||
274 | .mmc = 2, | 351 | .mmc = 2, |
275 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, | 352 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
276 | .gpio_cd = -EINVAL, | 353 | .gpio_cd = -EINVAL, |
@@ -278,19 +355,24 @@ static struct omap2_hsmmc_info mmc[] = { | |||
278 | .nonremovable = true, | 355 | .nonremovable = true, |
279 | .ocr_mask = MMC_VDD_29_30, | 356 | .ocr_mask = MMC_VDD_29_30, |
280 | }, | 357 | }, |
358 | { | ||
359 | .mmc = 1, | ||
360 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, | ||
361 | .gpio_wp = -EINVAL, | ||
362 | }, | ||
281 | {} /* Terminator */ | 363 | {} /* Terminator */ |
282 | }; | 364 | }; |
283 | 365 | ||
284 | static struct regulator_consumer_supply sdp4430_vaux_supply[] = { | 366 | static struct regulator_consumer_supply sdp4430_vaux_supply[] = { |
285 | { | 367 | { |
286 | .supply = "vmmc", | 368 | .supply = "vmmc", |
287 | .dev_name = "mmci-omap-hs.1", | 369 | .dev_name = "omap_hsmmc.1", |
288 | }, | 370 | }, |
289 | }; | 371 | }; |
290 | static struct regulator_consumer_supply sdp4430_vmmc_supply[] = { | 372 | static struct regulator_consumer_supply sdp4430_vmmc_supply[] = { |
291 | { | 373 | { |
292 | .supply = "vmmc", | 374 | .supply = "vmmc", |
293 | .dev_name = "mmci-omap-hs.0", | 375 | .dev_name = "omap_hsmmc.0", |
294 | }, | 376 | }, |
295 | }; | 377 | }; |
296 | 378 | ||
@@ -424,7 +506,6 @@ static struct regulator_init_data sdp4430_vana = { | |||
424 | .constraints = { | 506 | .constraints = { |
425 | .min_uV = 2100000, | 507 | .min_uV = 2100000, |
426 | .max_uV = 2100000, | 508 | .max_uV = 2100000, |
427 | .apply_uV = true, | ||
428 | .valid_modes_mask = REGULATOR_MODE_NORMAL | 509 | .valid_modes_mask = REGULATOR_MODE_NORMAL |
429 | | REGULATOR_MODE_STANDBY, | 510 | | REGULATOR_MODE_STANDBY, |
430 | .valid_ops_mask = REGULATOR_CHANGE_MODE | 511 | .valid_ops_mask = REGULATOR_CHANGE_MODE |
@@ -436,7 +517,6 @@ static struct regulator_init_data sdp4430_vcxio = { | |||
436 | .constraints = { | 517 | .constraints = { |
437 | .min_uV = 1800000, | 518 | .min_uV = 1800000, |
438 | .max_uV = 1800000, | 519 | .max_uV = 1800000, |
439 | .apply_uV = true, | ||
440 | .valid_modes_mask = REGULATOR_MODE_NORMAL | 520 | .valid_modes_mask = REGULATOR_MODE_NORMAL |
441 | | REGULATOR_MODE_STANDBY, | 521 | | REGULATOR_MODE_STANDBY, |
442 | .valid_ops_mask = REGULATOR_CHANGE_MODE | 522 | .valid_ops_mask = REGULATOR_CHANGE_MODE |
@@ -448,7 +528,6 @@ static struct regulator_init_data sdp4430_vdac = { | |||
448 | .constraints = { | 528 | .constraints = { |
449 | .min_uV = 1800000, | 529 | .min_uV = 1800000, |
450 | .max_uV = 1800000, | 530 | .max_uV = 1800000, |
451 | .apply_uV = true, | ||
452 | .valid_modes_mask = REGULATOR_MODE_NORMAL | 531 | .valid_modes_mask = REGULATOR_MODE_NORMAL |
453 | | REGULATOR_MODE_STANDBY, | 532 | | REGULATOR_MODE_STANDBY, |
454 | .valid_ops_mask = REGULATOR_CHANGE_MODE | 533 | .valid_ops_mask = REGULATOR_CHANGE_MODE |
@@ -547,9 +626,76 @@ static struct omap_board_mux board_mux[] __initdata = { | |||
547 | OMAP4_MUX(USBB2_ULPITLL_CLK, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), | 626 | OMAP4_MUX(USBB2_ULPITLL_CLK, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), |
548 | { .reg_offset = OMAP_MUX_TERMINATOR }, | 627 | { .reg_offset = OMAP_MUX_TERMINATOR }, |
549 | }; | 628 | }; |
629 | |||
630 | static struct omap_device_pad serial2_pads[] __initdata = { | ||
631 | OMAP_MUX_STATIC("uart2_cts.uart2_cts", | ||
632 | OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), | ||
633 | OMAP_MUX_STATIC("uart2_rts.uart2_rts", | ||
634 | OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
635 | OMAP_MUX_STATIC("uart2_rx.uart2_rx", | ||
636 | OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), | ||
637 | OMAP_MUX_STATIC("uart2_tx.uart2_tx", | ||
638 | OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
639 | }; | ||
640 | |||
641 | static struct omap_device_pad serial3_pads[] __initdata = { | ||
642 | OMAP_MUX_STATIC("uart3_cts_rctx.uart3_cts_rctx", | ||
643 | OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), | ||
644 | OMAP_MUX_STATIC("uart3_rts_sd.uart3_rts_sd", | ||
645 | OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
646 | OMAP_MUX_STATIC("uart3_rx_irrx.uart3_rx_irrx", | ||
647 | OMAP_PIN_INPUT | OMAP_MUX_MODE0), | ||
648 | OMAP_MUX_STATIC("uart3_tx_irtx.uart3_tx_irtx", | ||
649 | OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
650 | }; | ||
651 | |||
652 | static struct omap_device_pad serial4_pads[] __initdata = { | ||
653 | OMAP_MUX_STATIC("uart4_rx.uart4_rx", | ||
654 | OMAP_PIN_INPUT | OMAP_MUX_MODE0), | ||
655 | OMAP_MUX_STATIC("uart4_tx.uart4_tx", | ||
656 | OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
657 | }; | ||
658 | |||
659 | static struct omap_board_data serial2_data = { | ||
660 | .id = 1, | ||
661 | .pads = serial2_pads, | ||
662 | .pads_cnt = ARRAY_SIZE(serial2_pads), | ||
663 | }; | ||
664 | |||
665 | static struct omap_board_data serial3_data = { | ||
666 | .id = 2, | ||
667 | .pads = serial3_pads, | ||
668 | .pads_cnt = ARRAY_SIZE(serial3_pads), | ||
669 | }; | ||
670 | |||
671 | static struct omap_board_data serial4_data = { | ||
672 | .id = 3, | ||
673 | .pads = serial4_pads, | ||
674 | .pads_cnt = ARRAY_SIZE(serial4_pads), | ||
675 | }; | ||
676 | |||
677 | static inline void board_serial_init(void) | ||
678 | { | ||
679 | struct omap_board_data bdata; | ||
680 | bdata.flags = 0; | ||
681 | bdata.pads = NULL; | ||
682 | bdata.pads_cnt = 0; | ||
683 | bdata.id = 0; | ||
684 | /* pass dummy data for UART1 */ | ||
685 | omap_serial_init_port(&bdata); | ||
686 | |||
687 | omap_serial_init_port(&serial2_data); | ||
688 | omap_serial_init_port(&serial3_data); | ||
689 | omap_serial_init_port(&serial4_data); | ||
690 | } | ||
550 | #else | 691 | #else |
551 | #define board_mux NULL | 692 | #define board_mux NULL |
552 | #endif | 693 | |
694 | static inline void board_serial_init(void) | ||
695 | { | ||
696 | omap_serial_init(); | ||
697 | } | ||
698 | #endif | ||
553 | 699 | ||
554 | static void __init omap_4430sdp_init(void) | 700 | static void __init omap_4430sdp_init(void) |
555 | { | 701 | { |
@@ -560,10 +706,13 @@ static void __init omap_4430sdp_init(void) | |||
560 | package = OMAP_PACKAGE_CBL; | 706 | package = OMAP_PACKAGE_CBL; |
561 | omap4_mux_init(board_mux, package); | 707 | omap4_mux_init(board_mux, package); |
562 | 708 | ||
709 | omap_board_config = sdp4430_config; | ||
710 | omap_board_config_size = ARRAY_SIZE(sdp4430_config); | ||
711 | |||
563 | omap4_i2c_init(); | 712 | omap4_i2c_init(); |
564 | omap_sfh7741prox_init(); | 713 | omap_sfh7741prox_init(); |
565 | platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices)); | 714 | platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices)); |
566 | omap_serial_init(); | 715 | board_serial_init(); |
567 | omap4_twl6030_hsmmc_init(mmc); | 716 | omap4_twl6030_hsmmc_init(mmc); |
568 | 717 | ||
569 | usb_musb_init(&musb_board_data); | 718 | usb_musb_init(&musb_board_data); |
@@ -576,6 +725,10 @@ static void __init omap_4430sdp_init(void) | |||
576 | spi_register_board_info(sdp4430_spi_board_info, | 725 | spi_register_board_info(sdp4430_spi_board_info, |
577 | ARRAY_SIZE(sdp4430_spi_board_info)); | 726 | ARRAY_SIZE(sdp4430_spi_board_info)); |
578 | } | 727 | } |
728 | |||
729 | status = omap4_keyboard_init(&sdp4430_keypad_data); | ||
730 | if (status) | ||
731 | pr_err("Keypad initialization failed: %d\n", status); | ||
579 | } | 732 | } |
580 | 733 | ||
581 | static void __init omap_4430sdp_map_io(void) | 734 | static void __init omap_4430sdp_map_io(void) |
@@ -587,9 +740,10 @@ static void __init omap_4430sdp_map_io(void) | |||
587 | MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board") | 740 | MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board") |
588 | /* Maintainer: Santosh Shilimkar - Texas Instruments Inc */ | 741 | /* Maintainer: Santosh Shilimkar - Texas Instruments Inc */ |
589 | .boot_params = 0x80000100, | 742 | .boot_params = 0x80000100, |
590 | .map_io = omap_4430sdp_map_io, | ||
591 | .reserve = omap_reserve, | 743 | .reserve = omap_reserve, |
592 | .init_irq = omap_4430sdp_init_irq, | 744 | .map_io = omap_4430sdp_map_io, |
745 | .init_early = omap_4430sdp_init_early, | ||
746 | .init_irq = gic_init_irq, | ||
593 | .init_machine = omap_4430sdp_init, | 747 | .init_machine = omap_4430sdp_init, |
594 | .timer = &omap_timer, | 748 | .timer = &omap_timer, |
595 | MACHINE_END | 749 | MACHINE_END |