aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/board-n8x0.c
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2010-12-22 21:42:36 -0500
committerTony Lindgren <tony@atomide.com>2010-12-22 21:42:36 -0500
commit0b50c691f93a973136dc821ef11372ffdfae9646 (patch)
treeba97af7d835d13188b475da57d5d0e83094d2504 /arch/arm/mach-omap2/board-n8x0.c
parent40e44399301b6dbd997408a184140b79b77f632d (diff)
omap2+: Initialize serial port for dynamic remuxing for n8x0
Use omap_serial_init_port so we can let the serial code handle the remuxing of the RX pads. Note that this patch alone is not enough and additional GPIO related patches are needed. Only initialize uart3_rx_irrx pin, the other uart pins can be stay static. Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/board-n8x0.c')
-rw-r--r--arch/arm/mach-omap2/board-n8x0.c40
1 files changed, 38 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
index 43af70ec771e..147d9005f320 100644
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ b/arch/arm/mach-omap2/board-n8x0.c
@@ -645,6 +645,43 @@ static struct omap_board_mux board_mux[] __initdata = {
645 OMAP2420_MUX(EAC_AC_DOUT, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT), 645 OMAP2420_MUX(EAC_AC_DOUT, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
646 { .reg_offset = OMAP_MUX_TERMINATOR }, 646 { .reg_offset = OMAP_MUX_TERMINATOR },
647}; 647};
648
649static struct omap_device_pad serial2_pads[] __initdata = {
650 {
651 .name = "uart3_rx_irrx.uart3_rx_irrx",
652 .flags = OMAP_DEVICE_PAD_REMUX | OMAP_DEVICE_PAD_WAKEUP,
653 .enable = OMAP_MUX_MODE0,
654 .idle = OMAP_MUX_MODE3 /* Mux as GPIO for idle */
655 },
656};
657
658static inline void board_serial_init(void)
659{
660 struct omap_board_data bdata;
661
662 bdata.flags = 0;
663 bdata.pads = NULL;
664 bdata.pads_cnt = 0;
665
666 bdata.id = 0;
667 omap_serial_init_port(&bdata);
668
669 bdata.id = 1;
670 omap_serial_init_port(&bdata);
671
672 bdata.id = 2;
673 bdata.pads = serial2_pads;
674 bdata.pads_cnt = ARRAY_SIZE(serial2_pads);
675 omap_serial_init_port(&bdata);
676}
677
678#else
679
680static inline void board_serial_init(void)
681{
682 omap_serial_init();
683}
684
648#endif 685#endif
649 686
650static void __init n8x0_init_machine(void) 687static void __init n8x0_init_machine(void)
@@ -659,8 +696,7 @@ static void __init n8x0_init_machine(void)
659 if (machine_is_nokia_n810()) 696 if (machine_is_nokia_n810())
660 i2c_register_board_info(2, n810_i2c_board_info_2, 697 i2c_register_board_info(2, n810_i2c_board_info_2,
661 ARRAY_SIZE(n810_i2c_board_info_2)); 698 ARRAY_SIZE(n810_i2c_board_info_2));
662 699 board_serial_init();
663 omap_serial_init();
664 gpmc_onenand_init(board_onenand_data); 700 gpmc_onenand_init(board_onenand_data);
665 n8x0_mmc_init(); 701 n8x0_mmc_init();
666 n8x0_usb_init(); 702 n8x0_usb_init();