aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mx3/mx31lite.c
diff options
context:
space:
mode:
authorDaniel Mack <daniel@caiaq.de>2009-11-19 06:02:06 -0500
committerSascha Hauer <s.hauer@pengutronix.de>2009-11-19 11:11:01 -0500
commitb7d91a62cb402a3d24a15dca9d2b0c309c4227b4 (patch)
tree835bde38de5f8af81d94a0c8c6afdfdc8baf896c /arch/arm/mach-mx3/mx31lite.c
parent3f92a8bd5fb13e7e2505c65d1548910eaa843024 (diff)
ARM: MX3: modularize 'mx31lite' code
This commit splits the support code for LogicPD's mx31lite hardware into module and board specific parts. This introduces a new mandatory coreparam called 'mx31lite_baseboard' which specifies the base board support to use. For now, only the LiteKit development board is supported, and developers of own boards are encouraged to use that as reference. The UART support moved to the board code. Some comments were amended along the way. Signed-off-by: Daniel Mack <daniel@caiaq.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mx3/mx31lite.c')
-rw-r--r--arch/arm/mach-mx3/mx31lite.c36
1 files changed, 16 insertions, 20 deletions
diff --git a/arch/arm/mach-mx3/mx31lite.c b/arch/arm/mach-mx3/mx31lite.c
index a8d57decdfdb..dc993a878161 100644
--- a/arch/arm/mach-mx3/mx31lite.c
+++ b/arch/arm/mach-mx3/mx31lite.c
@@ -42,23 +42,14 @@
42#include "devices.h" 42#include "devices.h"
43 43
44/* 44/*
45 * This file contains the board-specific initialization routines. 45 * This file contains the module-specific initialization routines.
46 */ 46 */
47 47
48static unsigned int mx31lite_pins[] = { 48static unsigned int mx31lite_pins[] = {
49 /* UART1 */
50 MX31_PIN_CTS1__CTS1,
51 MX31_PIN_RTS1__RTS1,
52 MX31_PIN_TXD1__TXD1,
53 MX31_PIN_RXD1__RXD1,
54 /* LAN9117 IRQ pin */ 49 /* LAN9117 IRQ pin */
55 IOMUX_MODE(MX31_PIN_SFS6, IOMUX_CONFIG_GPIO), 50 IOMUX_MODE(MX31_PIN_SFS6, IOMUX_CONFIG_GPIO),
56}; 51};
57 52
58static struct imxuart_platform_data uart_pdata = {
59 .flags = IMXUART_HAVE_RTSCTS,
60};
61
62static struct mxc_nand_platform_data mx31lite_nand_board_info = { 53static struct mxc_nand_platform_data mx31lite_nand_board_info = {
63 .width = 1, 54 .width = 1,
64 .hw_ecc = 1, 55 .hw_ecc = 1,
@@ -118,17 +109,27 @@ void __init mx31lite_map_io(void)
118 iotable_init(mx31lite_io_desc, ARRAY_SIZE(mx31lite_io_desc)); 109 iotable_init(mx31lite_io_desc, ARRAY_SIZE(mx31lite_io_desc));
119} 110}
120 111
121/* 112static int mx31lite_baseboard;
122 * Board specific initialization. 113core_param(mx31lite_baseboard, mx31lite_baseboard, int, 0444);
123 */ 114
124static void __init mxc_board_init(void) 115static void __init mxc_board_init(void)
125{ 116{
126 int ret; 117 int ret;
127 118
119 switch (mx31lite_baseboard) {
120 case MX31LITE_NOBOARD:
121 break;
122 case MX31LITE_DB:
123 mx31lite_db_init();
124 break;
125 default:
126 printk(KERN_ERR "Illegal mx31lite_baseboard type %d\n",
127 mx31lite_baseboard);
128 }
129
128 mxc_iomux_setup_multiple_pins(mx31lite_pins, ARRAY_SIZE(mx31lite_pins), 130 mxc_iomux_setup_multiple_pins(mx31lite_pins, ARRAY_SIZE(mx31lite_pins),
129 "mx31lite"); 131 "mx31lite");
130 132
131 mxc_register_device(&mxc_uart_device0, &uart_pdata);
132 mxc_register_device(&mxc_nand_device, &mx31lite_nand_board_info); 133 mxc_register_device(&mxc_nand_device, &mx31lite_nand_board_info);
133 134
134 /* SMSC9117 IRQ pin */ 135 /* SMSC9117 IRQ pin */
@@ -150,12 +151,7 @@ struct sys_timer mx31lite_timer = {
150 .init = mx31lite_timer_init, 151 .init = mx31lite_timer_init,
151}; 152};
152 153
153/* 154MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")
154 * The following uses standard kernel macros defined in arch.h in order to
155 * initialize __mach_desc_MX31LITE data structure.
156 */
157
158MACHINE_START(MX31LITE, "LogicPD MX31 LITEKIT")
159 /* Maintainer: Freescale Semiconductor, Inc. */ 155 /* Maintainer: Freescale Semiconductor, Inc. */
160 .phys_io = AIPS1_BASE_ADDR, 156 .phys_io = AIPS1_BASE_ADDR,
161 .io_pg_offst = ((AIPS1_BASE_ADDR_VIRT) >> 18) & 0xfffc, 157 .io_pg_offst = ((AIPS1_BASE_ADDR_VIRT) >> 18) & 0xfffc,