aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValentin Longchamp <valentin.longchamp@epfl.ch>2008-11-23 11:35:08 -0500
committerSascha Hauer <s.hauer@pengutronix.de>2008-12-16 08:58:19 -0500
commit988d2d49f767c2e9c5a082257ec4ca2ff30c2b68 (patch)
treeabaf74090d4a8ea51b643f7ef2255300989cd876
parenta3cce2a8e2e7b09911ea97dbdd5236c60f202a16 (diff)
[ARM] MX31: basic support for mx31moboard platform
Initial support for mx31moboard platfor with 3 serial ports and NOR Flash Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/mach-mx3/Kconfig7
-rw-r--r--arch/arm/mach-mx3/Makefile1
-rw-r--r--arch/arm/mach-mx3/mx31moboard.c141
3 files changed, 149 insertions, 0 deletions
diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig
index dc96ddedc2f2..e79659e8176e 100644
--- a/arch/arm/mach-mx3/Kconfig
+++ b/arch/arm/mach-mx3/Kconfig
@@ -28,5 +28,12 @@ config MACH_MX31_3DS
28 Include support for MX31PDK (3DS) platform. This includes specific 28 Include support for MX31PDK (3DS) platform. This includes specific
29 configurations for the board and its peripherals. 29 configurations for the board and its peripherals.
30 30
31config MACH_MX31MOBOARD
32 bool "Support mx31moboard platforms (EPFL Mobots group)"
33 default n
34 help
35 Include support for mx31moboard platform. This includes specific
36 configurations for the board and its peripherals.
37
31endmenu 38endmenu
32 39
diff --git a/arch/arm/mach-mx3/Makefile b/arch/arm/mach-mx3/Makefile
index 10a0886b32ce..5a151540fe83 100644
--- a/arch/arm/mach-mx3/Makefile
+++ b/arch/arm/mach-mx3/Makefile
@@ -9,3 +9,4 @@ obj-$(CONFIG_MACH_MX31ADS) += mx31ads.o
9obj-$(CONFIG_MACH_MX31LITE) += mx31lite.o 9obj-$(CONFIG_MACH_MX31LITE) += mx31lite.o
10obj-$(CONFIG_MACH_PCM037) += pcm037.o 10obj-$(CONFIG_MACH_PCM037) += pcm037.o
11obj-$(CONFIG_MACH_MX31_3DS) += mx31pdk.o 11obj-$(CONFIG_MACH_MX31_3DS) += mx31pdk.o
12obj-$(CONFIG_MACH_MX31MOBOARD) += mx31moboard.o
diff --git a/arch/arm/mach-mx3/mx31moboard.c b/arch/arm/mach-mx3/mx31moboard.c
new file mode 100644
index 000000000000..c29098af7394
--- /dev/null
+++ b/arch/arm/mach-mx3/mx31moboard.c
@@ -0,0 +1,141 @@
1/*
2 * Copyright (C) 2008 Valentin Longchamp, EPFL Mobots group
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18
19#include <linux/types.h>
20#include <linux/init.h>
21
22#include <linux/platform_device.h>
23#include <linux/mtd/physmap.h>
24#include <linux/mtd/partitions.h>
25#include <linux/memory.h>
26
27#include <mach/hardware.h>
28#include <asm/mach-types.h>
29#include <asm/mach/arch.h>
30#include <asm/mach/time.h>
31#include <asm/mach/map.h>
32#include <mach/common.h>
33#include <mach/imx-uart.h>
34#include <mach/iomux-mx3.h>
35
36#include "devices.h"
37
38static struct physmap_flash_data mx31moboard_flash_data = {
39 .width = 2,
40};
41
42static struct resource mx31moboard_flash_resource = {
43 .start = 0xa0000000,
44 .end = 0xa1ffffff,
45 .flags = IORESOURCE_MEM,
46};
47
48static struct platform_device mx31moboard_flash = {
49 .name = "physmap-flash",
50 .id = 0,
51 .dev = {
52 .platform_data = &mx31moboard_flash_data,
53 },
54 .resource = &mx31moboard_flash_resource,
55 .num_resources = 1,
56};
57
58static struct imxuart_platform_data uart_pdata = {
59 .flags = IMXUART_HAVE_RTSCTS,
60};
61
62static struct platform_device *devices[] __initdata = {
63 &mx31moboard_flash,
64};
65
66/*
67 * Board specific initialization.
68 */
69static void __init mxc_board_init(void)
70{
71 platform_add_devices(devices, ARRAY_SIZE(devices));
72
73 mxc_iomux_mode(MX31_PIN_CTS1__CTS1);
74 mxc_iomux_mode(MX31_PIN_RTS1__RTS1);
75 mxc_iomux_mode(MX31_PIN_TXD1__TXD1);
76 mxc_iomux_mode(MX31_PIN_RXD1__RXD1);
77
78 mxc_register_device(&mxc_uart_device0, &uart_pdata);
79
80 mxc_iomux_mode(MX31_PIN_CTS2__CTS2);
81 mxc_iomux_mode(MX31_PIN_RTS2__RTS2);
82 mxc_iomux_mode(MX31_PIN_TXD2__TXD2);
83 mxc_iomux_mode(MX31_PIN_RXD2__RXD2);
84
85 mxc_register_device(&mxc_uart_device1, &uart_pdata);
86
87 mxc_iomux_mode(MX31_PIN_PC_RST__CTS5);
88 mxc_iomux_mode(MX31_PIN_PC_VS2__RTS5);
89 mxc_iomux_mode(MX31_PIN_PC_BVD2__TXD5);
90 mxc_iomux_mode(MX31_PIN_PC_BVD1__RXD5);
91
92 mxc_register_device(&mxc_uart_device4, &uart_pdata);
93}
94
95/*
96 * This structure defines static mappings for the mx31moboard.
97 */
98static struct map_desc mx31moboard_io_desc[] __initdata = {
99 {
100 .virtual = AIPS1_BASE_ADDR_VIRT,
101 .pfn = __phys_to_pfn(AIPS1_BASE_ADDR),
102 .length = AIPS1_SIZE,
103 .type = MT_DEVICE_NONSHARED
104 }, {
105 .virtual = AIPS2_BASE_ADDR_VIRT,
106 .pfn = __phys_to_pfn(AIPS2_BASE_ADDR),
107 .length = AIPS2_SIZE,
108 .type = MT_DEVICE_NONSHARED
109 },
110};
111
112/*
113 * Set up static virtual mappings.
114 */
115void __init mx31moboard_map_io(void)
116{
117 mxc_map_io();
118 iotable_init(mx31moboard_io_desc, ARRAY_SIZE(mx31moboard_io_desc));
119}
120
121static void __init mx31moboard_timer_init(void)
122{
123 mxc_clocks_init(26000000);
124 mxc_timer_init("ipg_clk.0");
125}
126
127struct sys_timer mx31moboard_timer = {
128 .init = mx31moboard_timer_init,
129};
130
131MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard")
132 /* Maintainer: Valentin Longchamp, EPFL Mobots group */
133 .phys_io = AIPS1_BASE_ADDR,
134 .io_pg_offst = ((AIPS1_BASE_ADDR_VIRT) >> 18) & 0xfffc,
135 .boot_params = PHYS_OFFSET + 0x100,
136 .map_io = mx31moboard_map_io,
137 .init_irq = mxc_init_irq,
138 .init_machine = mxc_board_init,
139 .timer = &mx31moboard_timer,
140MACHINE_END
141