i.MX31ADS: Enable the first IMX serial port. (take 3)
[deliverable/linux.git] / arch / arm / mach-mx3 / mx31ads.c
index 7e89bdc23a9f5585c67ff973ae19a080e78357eb..3b48d1ae3a876f898d8be1213ef6c3dd8a9c88b5 100644 (file)
 #include <linux/clk.h>
 #include <linux/serial_8250.h>
 
-#include <asm/hardware.h>
+#include <mach/hardware.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
+#include <asm/mach/time.h>
 #include <asm/memory.h>
 #include <asm/mach/map.h>
-#include <asm/arch/common.h>
+#include <mach/common.h>
+#include <mach/board-mx31ads.h>
+#include <mach/imx-uart.h>
+#include <mach/iomux-mx3.h>
 
 /*!
  * @file mx31ads.c
@@ -82,6 +86,26 @@ static inline int mxc_init_extuart(void)
 }
 #endif
 
+#if defined(CONFIG_SERIAL_IMX) || defined(CONFIG_SERIAL_IMX_MODULE)
+static struct imxuart_platform_data uart_pdata = {
+       .flags = IMXUART_HAVE_RTSCTS,
+};
+
+static inline void mxc_init_imx_uart(void)
+{
+       mxc_iomux_mode(MX31_PIN_CTS1__CTS1);
+       mxc_iomux_mode(MX31_PIN_RTS1__RTS1);
+       mxc_iomux_mode(MX31_PIN_TXD1__TXD1);
+       mxc_iomux_mode(MX31_PIN_RXD1__RXD1);
+
+       mxc_register_device(&mxc_uart_device0, &uart_pdata);
+}
+#else /* !SERIAL_IMX */
+static inline void mxc_init_imx_uart(void)
+{
+}
+#endif /* !SERIAL_IMX */
+
 /*!
  * This structure defines static mappings for the i.MX31ADS board.
  */
@@ -124,8 +148,19 @@ void __init mx31ads_map_io(void)
 static void __init mxc_board_init(void)
 {
        mxc_init_extuart();
+       mxc_init_imx_uart();
+}
+
+static void __init mx31ads_timer_init(void)
+{
+       mxc_clocks_init(26000000);
+       mxc_timer_init("ipg_clk.0");
 }
 
+struct sys_timer mx31ads_timer = {
+       .init   = mx31ads_timer_init,
+};
+
 /*
  * The following uses standard kernel macros defined in arch.h in order to
  * initialize __mach_desc_MX31ADS data structure.
@@ -138,5 +173,5 @@ MACHINE_START(MX31ADS, "Freescale MX31ADS")
        .map_io         = mx31ads_map_io,
        .init_irq       = mxc_init_irq,
        .init_machine   = mxc_board_init,
-       .timer          = &mxc_timer,
+       .timer          = &mx31ads_timer,
 MACHINE_END
This page took 0.023958 seconds and 5 git commands to generate.