aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mx25
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2010-06-30 06:16:24 -0400
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2010-07-26 08:27:25 -0400
commit2dcf78c0eeae3bd07082821557014f25f02ca2e9 (patch)
tree8ca5c4c7f35c9a9ab07fcd9732124c905e609aa1 /arch/arm/mach-mx25
parent6b6322676add0fa2713d0ec89a28390fd4d907f5 (diff)
parent5109a4597f7e758b8d20694392d0361a0b4c43b1 (diff)
Merge branch 'imx/for-2.6.36' of git://git.pengutronix.de/git/ukl/linux-2.6 into HEAD
There are some more conflicts than detected by git, namely support for the newly added cpuimx machines needed to be converted to dynamic device registration. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Conflicts: arch/arm/mach-imx/Makefile arch/arm/mach-imx/devices.c arch/arm/mach-imx/devices.h arch/arm/mach-imx/eukrea_mbimx27-baseboard.c arch/arm/mach-mx2/Kconfig arch/arm/mach-mx25/Makefile arch/arm/mach-mx25/devices.c arch/arm/plat-mxc/include/mach/mx25.h arch/arm/plat-mxc/include/mach/mxc_nand.h
Diffstat (limited to 'arch/arm/mach-mx25')
-rw-r--r--arch/arm/mach-mx25/Kconfig5
-rw-r--r--arch/arm/mach-mx25/Makefile2
-rw-r--r--arch/arm/mach-mx25/devices-imx25.h38
-rw-r--r--arch/arm/mach-mx25/devices.c231
-rw-r--r--arch/arm/mach-mx25/devices.h12
-rw-r--r--arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c5
-rw-r--r--arch/arm/mach-mx25/mach-cpuimx25.c19
-rw-r--r--arch/arm/mach-mx25/mach-mx25_3ds.c (renamed from arch/arm/mach-mx25/mach-mx25pdk.c)21
-rw-r--r--arch/arm/mach-mx25/mm.c7
9 files changed, 75 insertions, 265 deletions
diff --git a/arch/arm/mach-mx25/Kconfig b/arch/arm/mach-mx25/Kconfig
index 3a6668eebf9..67e0b54218a 100644
--- a/arch/arm/mach-mx25/Kconfig
+++ b/arch/arm/mach-mx25/Kconfig
@@ -4,9 +4,14 @@ comment "MX25 platforms:"
4 4
5config MACH_MX25_3DS 5config MACH_MX25_3DS
6 bool "Support MX25PDK (3DS) Platform" 6 bool "Support MX25PDK (3DS) Platform"
7 select IMX_HAVE_PLATFORM_IMX_UART
8 select IMX_HAVE_PLATFORM_MXC_NAND
7 9
8config MACH_EUKREA_CPUIMX25 10config MACH_EUKREA_CPUIMX25
9 bool "Support Eukrea CPUIMX25 Platform" 11 bool "Support Eukrea CPUIMX25 Platform"
12 select IMX_HAVE_PLATFORM_IMX_I2C
13 select IMX_HAVE_PLATFORM_IMX_UART
14 select IMX_HAVE_PLATFORM_MXC_NAND
10 select MXC_ULPI if USB_ULPI 15 select MXC_ULPI if USB_ULPI
11 16
12choice 17choice
diff --git a/arch/arm/mach-mx25/Makefile b/arch/arm/mach-mx25/Makefile
index 83ab5d80510..87ffb9c2f90 100644
--- a/arch/arm/mach-mx25/Makefile
+++ b/arch/arm/mach-mx25/Makefile
@@ -1,5 +1,5 @@
1obj-y := mm.o devices.o 1obj-y := mm.o devices.o
2obj-$(CONFIG_ARCH_MX25) += clock.o 2obj-$(CONFIG_ARCH_MX25) += clock.o
3obj-$(CONFIG_MACH_MX25_3DS) += mach-mx25pdk.o 3obj-$(CONFIG_MACH_MX25_3DS) += mach-mx25_3ds.o
4obj-$(CONFIG_MACH_EUKREA_CPUIMX25) += mach-cpuimx25.o 4obj-$(CONFIG_MACH_EUKREA_CPUIMX25) += mach-cpuimx25.o
5obj-$(CONFIG_MACH_EUKREA_MBIMXSD_BASEBOARD) += eukrea_mbimxsd-baseboard.o 5obj-$(CONFIG_MACH_EUKREA_MBIMXSD_BASEBOARD) += eukrea_mbimxsd-baseboard.o
diff --git a/arch/arm/mach-mx25/devices-imx25.h b/arch/arm/mach-mx25/devices-imx25.h
new file mode 100644
index 00000000000..2025cb947fc
--- /dev/null
+++ b/arch/arm/mach-mx25/devices-imx25.h
@@ -0,0 +1,38 @@
1/*
2 * Copyright (C) 2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License version 2 as published by the
7 * Free Software Foundation.
8 */
9#include <mach/mx25.h>
10#include <mach/devices-common.h>
11
12#define imx25_add_imx_i2c0(pdata) \
13 imx_add_imx_i2c(0, MX25_I2C1_BASE_ADDR, SZ_16K, MX25_INT_I2C1, pdata)
14#define imx25_add_imx_i2c1(pdata) \
15 imx_add_imx_i2c(1, MX25_I2C2_BASE_ADDR, SZ_16K, MX25_INT_I2C2, pdata)
16#define imx25_add_imx_i2c2(pdata) \
17 imx_add_imx_i2c(2, MX25_I2C3_BASE_ADDR, SZ_16K, MX25_INT_I2C3, pdata)
18
19#define imx25_add_imx_uart0(pdata) \
20 imx_add_imx_uart_1irq(0, MX25_UART1_BASE_ADDR, SZ_16K, MX25_INT_UART1, pdata)
21#define imx25_add_imx_uart1(pdata) \
22 imx_add_imx_uart_1irq(1, MX25_UART2_BASE_ADDR, SZ_16K, MX25_INT_UART2, pdata)
23#define imx25_add_imx_uart2(pdata) \
24 imx_add_imx_uart_1irq(2, MX25_UART3_BASE_ADDR, SZ_16K, MX25_INT_UART3, pdata)
25#define imx25_add_imx_uart3(pdata) \
26 imx_add_imx_uart_1irq(3, MX25_UART4_BASE_ADDR, SZ_16K, MX25_INT_UART4, pdata)
27#define imx25_add_imx_uart4(pdata) \
28 imx_add_imx_uart_1irq(4, MX25_UART5_BASE_ADDR, SZ_16K, MX25_INT_UART5, pdata)
29
30#define imx25_add_mxc_nand(pdata) \
31 imx_add_mxc_nand_v21(MX25_NFC_BASE_ADDR, MX25_INT_NANDFC, pdata)
32
33#define imx25_add_spi_imx0(pdata) \
34 imx_add_spi_imx(0, MX25_CSPI1_BASE_ADDR, SZ_16K, MX25_INT_CSPI1, pdata)
35#define imx25_add_spi_imx1(pdata) \
36 imx_add_spi_imx(1, MX25_CSPI2_BASE_ADDR, SZ_16K, MX25_INT_CSPI2, pdata)
37#define imx25_add_spi_imx2(pdata) \
38 imx_add_spi_imx(2, MX25_CSPI3_BASE_ADDR, SZ_16K, MX25_INT_CSPI3, pdata)
diff --git a/arch/arm/mach-mx25/devices.c b/arch/arm/mach-mx25/devices.c
index 82d3e53f01f..3468eb15b23 100644
--- a/arch/arm/mach-mx25/devices.c
+++ b/arch/arm/mach-mx25/devices.c
@@ -22,101 +22,6 @@
22#include <mach/mx25.h> 22#include <mach/mx25.h>
23#include <mach/irqs.h> 23#include <mach/irqs.h>
24 24
25static struct resource uart0[] = {
26 {
27 .start = 0x43f90000,
28 .end = 0x43f93fff,
29 .flags = IORESOURCE_MEM,
30 }, {
31 .start = 45,
32 .end = 45,
33 .flags = IORESOURCE_IRQ,
34 },
35};
36
37struct platform_device mxc_uart_device0 = {
38 .name = "imx-uart",
39 .id = 0,
40 .resource = uart0,
41 .num_resources = ARRAY_SIZE(uart0),
42};
43
44static struct resource uart1[] = {
45 {
46 .start = 0x43f94000,
47 .end = 0x43f97fff,
48 .flags = IORESOURCE_MEM,
49 }, {
50 .start = 32,
51 .end = 32,
52 .flags = IORESOURCE_IRQ,
53 },
54};
55
56struct platform_device mxc_uart_device1 = {
57 .name = "imx-uart",
58 .id = 1,
59 .resource = uart1,
60 .num_resources = ARRAY_SIZE(uart1),
61};
62
63static struct resource uart2[] = {
64 {
65 .start = 0x5000c000,
66 .end = 0x5000ffff,
67 .flags = IORESOURCE_MEM,
68 }, {
69 .start = 18,
70 .end = 18,
71 .flags = IORESOURCE_IRQ,
72 },
73};
74
75struct platform_device mxc_uart_device2 = {
76 .name = "imx-uart",
77 .id = 2,
78 .resource = uart2,
79 .num_resources = ARRAY_SIZE(uart2),
80};
81
82static struct resource uart3[] = {
83 {
84 .start = 0x50008000,
85 .end = 0x5000bfff,
86 .flags = IORESOURCE_MEM,
87 }, {
88 .start = 5,
89 .end = 5,
90 .flags = IORESOURCE_IRQ,
91 },
92};
93
94struct platform_device mxc_uart_device3 = {
95 .name = "imx-uart",
96 .id = 3,
97 .resource = uart3,
98 .num_resources = ARRAY_SIZE(uart3),
99};
100
101static struct resource uart4[] = {
102 {
103 .start = 0x5002c000,
104 .end = 0x5002ffff,
105 .flags = IORESOURCE_MEM,
106 }, {
107 .start = 40,
108 .end = 40,
109 .flags = IORESOURCE_IRQ,
110 },
111};
112
113struct platform_device mxc_uart_device4 = {
114 .name = "imx-uart",
115 .id = 4,
116 .resource = uart4,
117 .num_resources = ARRAY_SIZE(uart4),
118};
119
120static u64 otg_dmamask = DMA_BIT_MASK(32); 25static u64 otg_dmamask = DMA_BIT_MASK(32);
121 26
122static struct resource mxc_otg_resources[] = { 27static struct resource mxc_otg_resources[] = {
@@ -179,63 +84,6 @@ struct platform_device mxc_usbh2 = {
179 .num_resources = ARRAY_SIZE(mxc_usbh2_resources), 84 .num_resources = ARRAY_SIZE(mxc_usbh2_resources),
180}; 85};
181 86
182static struct resource mxc_spi_resources0[] = {
183 {
184 .start = 0x43fa4000,
185 .end = 0x43fa7fff,
186 .flags = IORESOURCE_MEM,
187 }, {
188 .start = 14,
189 .end = 14,
190 .flags = IORESOURCE_IRQ,
191 },
192};
193
194struct platform_device mxc_spi_device0 = {
195 .name = "spi_imx",
196 .id = 0,
197 .num_resources = ARRAY_SIZE(mxc_spi_resources0),
198 .resource = mxc_spi_resources0,
199};
200
201static struct resource mxc_spi_resources1[] = {
202 {
203 .start = 0x50010000,
204 .end = 0x50013fff,
205 .flags = IORESOURCE_MEM,
206 }, {
207 .start = 13,
208 .end = 13,
209 .flags = IORESOURCE_IRQ,
210 },
211};
212
213struct platform_device mxc_spi_device1 = {
214 .name = "spi_imx",
215 .id = 1,
216 .num_resources = ARRAY_SIZE(mxc_spi_resources1),
217 .resource = mxc_spi_resources1,
218};
219
220static struct resource mxc_spi_resources2[] = {
221 {
222 .start = 0x50004000,
223 .end = 0x50007fff,
224 .flags = IORESOURCE_MEM,
225 }, {
226 .start = 0,
227 .end = 0,
228 .flags = IORESOURCE_IRQ,
229 },
230};
231
232struct platform_device mxc_spi_device2 = {
233 .name = "spi_imx",
234 .id = 2,
235 .num_resources = ARRAY_SIZE(mxc_spi_resources2),
236 .resource = mxc_spi_resources2,
237};
238
239static struct resource mxc_pwm_resources0[] = { 87static struct resource mxc_pwm_resources0[] = {
240 { 88 {
241 .start = 0x53fe0000, 89 .start = 0x53fe0000,
@@ -331,63 +179,6 @@ struct platform_device mxc_pwm_device3 = {
331 .resource = mxc_pwm_resources3, 179 .resource = mxc_pwm_resources3,
332}; 180};
333 181
334static struct resource mxc_i2c_1_resources[] = {
335 {
336 .start = 0x43f80000,
337 .end = 0x43f83fff,
338 .flags = IORESOURCE_MEM,
339 }, {
340 .start = 3,
341 .end = 3,
342 .flags = IORESOURCE_IRQ,
343 }
344};
345
346struct platform_device mxc_i2c_device0 = {
347 .name = "imx-i2c",
348 .id = 0,
349 .num_resources = ARRAY_SIZE(mxc_i2c_1_resources),
350 .resource = mxc_i2c_1_resources,
351};
352
353static struct resource mxc_i2c_2_resources[] = {
354 {
355 .start = 0x43f98000,
356 .end = 0x43f9bfff,
357 .flags = IORESOURCE_MEM,
358 }, {
359 .start = 4,
360 .end = 4,
361 .flags = IORESOURCE_IRQ,
362 }
363};
364
365struct platform_device mxc_i2c_device1 = {
366 .name = "imx-i2c",
367 .id = 1,
368 .num_resources = ARRAY_SIZE(mxc_i2c_2_resources),
369 .resource = mxc_i2c_2_resources,
370};
371
372static struct resource mxc_i2c_3_resources[] = {
373 {
374 .start = 0x43f84000,
375 .end = 0x43f87fff,
376 .flags = IORESOURCE_MEM,
377 }, {
378 .start = 10,
379 .end = 10,
380 .flags = IORESOURCE_IRQ,
381 }
382};
383
384struct platform_device mxc_i2c_device2 = {
385 .name = "imx-i2c",
386 .id = 2,
387 .num_resources = ARRAY_SIZE(mxc_i2c_3_resources),
388 .resource = mxc_i2c_3_resources,
389};
390
391static struct mxc_gpio_port imx_gpio_ports[] = { 182static struct mxc_gpio_port imx_gpio_ports[] = {
392 { 183 {
393 .chip.label = "gpio-0", 184 .chip.label = "gpio-0",
@@ -412,7 +203,7 @@ static struct mxc_gpio_port imx_gpio_ports[] = {
412 } 203 }
413}; 204};
414 205
415int __init mxc_register_gpios(void) 206int __init imx25_register_gpios(void)
416{ 207{
417 return mxc_gpio_init(imx_gpio_ports, ARRAY_SIZE(imx_gpio_ports)); 208 return mxc_gpio_init(imx_gpio_ports, ARRAY_SIZE(imx_gpio_ports));
418} 209}
@@ -437,26 +228,6 @@ struct platform_device mx25_fec_device = {
437 .resource = mx25_fec_resources, 228 .resource = mx25_fec_resources,
438}; 229};
439 230
440static struct resource mxc_nand_resources[] = {
441 {
442 .start = MX25_NFC_BASE_ADDR,
443 .end = MX25_NFC_BASE_ADDR + 0x1fff,
444 .flags = IORESOURCE_MEM,
445 },
446 {
447 .start = MX25_INT_NANDFC,
448 .end = MX25_INT_NANDFC,
449 .flags = IORESOURCE_IRQ,
450 },
451};
452
453struct platform_device mxc_nand_device = {
454 .name = "mxc_nand",
455 .id = 0,
456 .num_resources = ARRAY_SIZE(mxc_nand_resources),
457 .resource = mxc_nand_resources,
458};
459
460static struct resource mx25_rtc_resources[] = { 231static struct resource mx25_rtc_resources[] = {
461 { 232 {
462 .start = MX25_DRYICE_BASE_ADDR, 233 .start = MX25_DRYICE_BASE_ADDR,
diff --git a/arch/arm/mach-mx25/devices.h b/arch/arm/mach-mx25/devices.h
index 00e29f57a59..4aceb68e35a 100644
--- a/arch/arm/mach-mx25/devices.h
+++ b/arch/arm/mach-mx25/devices.h
@@ -1,24 +1,12 @@
1extern struct platform_device mxc_uart_device0;
2extern struct platform_device mxc_uart_device1;
3extern struct platform_device mxc_uart_device2;
4extern struct platform_device mxc_uart_device3;
5extern struct platform_device mxc_uart_device4;
6extern struct platform_device mxc_otg; 1extern struct platform_device mxc_otg;
7extern struct platform_device otg_udc_device; 2extern struct platform_device otg_udc_device;
8extern struct platform_device mxc_usbh2; 3extern struct platform_device mxc_usbh2;
9extern struct platform_device mxc_spi_device0;
10extern struct platform_device mxc_spi_device1;
11extern struct platform_device mxc_spi_device2;
12extern struct platform_device mxc_pwm_device0; 4extern struct platform_device mxc_pwm_device0;
13extern struct platform_device mxc_pwm_device1; 5extern struct platform_device mxc_pwm_device1;
14extern struct platform_device mxc_pwm_device2; 6extern struct platform_device mxc_pwm_device2;
15extern struct platform_device mxc_pwm_device3; 7extern struct platform_device mxc_pwm_device3;
16extern struct platform_device mxc_keypad_device; 8extern struct platform_device mxc_keypad_device;
17extern struct platform_device mxc_i2c_device0;
18extern struct platform_device mxc_i2c_device1;
19extern struct platform_device mxc_i2c_device2;
20extern struct platform_device mx25_fec_device; 9extern struct platform_device mx25_fec_device;
21extern struct platform_device mxc_nand_device;
22extern struct platform_device mx25_rtc_device; 10extern struct platform_device mx25_rtc_device;
23extern struct platform_device mx25_fb_device; 11extern struct platform_device mx25_fb_device;
24extern struct platform_device mxc_wdt; 12extern struct platform_device mxc_wdt;
diff --git a/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c b/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c
index e0f0dfda4d0..f07b1f95ac7 100644
--- a/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c
+++ b/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c
@@ -38,6 +38,7 @@
38#include <mach/ssi.h> 38#include <mach/ssi.h>
39#include <mach/audmux.h> 39#include <mach/audmux.h>
40 40
41#include "devices-imx25.h"
41#include "devices.h" 42#include "devices.h"
42 43
43static struct pad_desc eukrea_mbimxsd_pads[] = { 44static struct pad_desc eukrea_mbimxsd_pads[] = {
@@ -195,7 +196,7 @@ static struct platform_device *platform_devices[] __initdata = {
195 &eukrea_mbimxsd_lcd_powerdev, 196 &eukrea_mbimxsd_lcd_powerdev,
196}; 197};
197 198
198static struct imxuart_platform_data uart_pdata = { 199static const struct imxuart_platform_data uart_pdata __initconst = {
199 .flags = IMXUART_HAVE_RTSCTS, 200 .flags = IMXUART_HAVE_RTSCTS,
200}; 201};
201 202
@@ -237,7 +238,7 @@ void __init eukrea_mbimxsd_baseboard_init(void)
237 ); 238 );
238#endif 239#endif
239 240
240 mxc_register_device(&mxc_uart_device1, &uart_pdata); 241 imx25_add_imx_uart1(&uart_pdata);
241 mxc_register_device(&mx25_fb_device, &eukrea_mximxsd_fb_pdata); 242 mxc_register_device(&mx25_fb_device, &eukrea_mximxsd_fb_pdata);
242 mxc_register_device(&imx_ssi_device0, &eukrea_mbimxsd_ssi_pdata); 243 mxc_register_device(&imx_ssi_device0, &eukrea_mbimxsd_ssi_pdata);
243 244
diff --git a/arch/arm/mach-mx25/mach-cpuimx25.c b/arch/arm/mach-mx25/mach-cpuimx25.c
index 4796484830a..d39f9ccd4be 100644
--- a/arch/arm/mach-mx25/mach-cpuimx25.c
+++ b/arch/arm/mach-mx25/mach-cpuimx25.c
@@ -37,18 +37,17 @@
37#include <asm/memory.h> 37#include <asm/memory.h>
38#include <asm/mach/map.h> 38#include <asm/mach/map.h>
39#include <mach/common.h> 39#include <mach/common.h>
40#include <mach/imx-uart.h>
41#include <mach/i2c.h>
42#include <mach/mx25.h> 40#include <mach/mx25.h>
43#include <mach/mxc_nand.h> 41#include <mach/mxc_nand.h>
44#include <mach/imxfb.h> 42#include <mach/imxfb.h>
45#include <mach/mxc_ehci.h> 43#include <mach/mxc_ehci.h>
46#include <mach/ulpi.h> 44#include <mach/ulpi.h>
45#include <mach/iomux-mx25.h>
47 46
47#include "devices-imx25.h"
48#include "devices.h" 48#include "devices.h"
49#include <mach/iomux-mx25.h>
50 49
51static struct imxuart_platform_data uart_pdata = { 50static const struct imxuart_platform_data uart_pdata __initconst = {
52 .flags = IMXUART_HAVE_RTSCTS, 51 .flags = IMXUART_HAVE_RTSCTS,
53}; 52};
54 53
@@ -72,13 +71,15 @@ static struct fec_platform_data mx25_fec_pdata = {
72 .phy = PHY_INTERFACE_MODE_RMII, 71 .phy = PHY_INTERFACE_MODE_RMII,
73}; 72};
74 73
75static struct mxc_nand_platform_data eukrea_cpuimx25_nand_board_info = { 74static const struct mxc_nand_platform_data
75eukrea_cpuimx25_nand_board_info __initconst = {
76 .width = 1, 76 .width = 1,
77 .hw_ecc = 1, 77 .hw_ecc = 1,
78 .flash_bbt = 1, 78 .flash_bbt = 1,
79}; 79};
80 80
81static struct imxi2c_platform_data eukrea_cpuimx25_i2c_1_data = { 81static const struct imxi2c_platform_data
82eukrea_cpuimx25_i2c0_data __initconst = {
82 .bitrate = 100000, 83 .bitrate = 100000,
83}; 84};
84 85
@@ -125,14 +126,14 @@ static void __init eukrea_cpuimx25_init(void)
125 ARRAY_SIZE(eukrea_cpuimx25_pads))) 126 ARRAY_SIZE(eukrea_cpuimx25_pads)))
126 printk(KERN_ERR "error setting cpuimx25 pads !\n"); 127 printk(KERN_ERR "error setting cpuimx25 pads !\n");
127 128
128 mxc_register_device(&mxc_uart_device0, &uart_pdata); 129 imx25_add_imx_uart0(&uart_pdata);
129 mxc_register_device(&mxc_nand_device, &eukrea_cpuimx25_nand_board_info); 130 imx25_add_mxc_nand(&eukrea_cpuimx25_nand_board_info);
130 mxc_register_device(&mx25_rtc_device, NULL); 131 mxc_register_device(&mx25_rtc_device, NULL);
131 mxc_register_device(&mx25_fec_device, &mx25_fec_pdata); 132 mxc_register_device(&mx25_fec_device, &mx25_fec_pdata);
132 133
133 i2c_register_board_info(0, eukrea_cpuimx25_i2c_devices, 134 i2c_register_board_info(0, eukrea_cpuimx25_i2c_devices,
134 ARRAY_SIZE(eukrea_cpuimx25_i2c_devices)); 135 ARRAY_SIZE(eukrea_cpuimx25_i2c_devices));
135 mxc_register_device(&mxc_i2c_device0, &eukrea_cpuimx25_i2c_1_data); 136 imx25_add_imx_i2c0(&eukrea_cpuimx25_i2c0_data);
136 137
137#if defined(CONFIG_USB_ULPI) 138#if defined(CONFIG_USB_ULPI)
138 if (otg_mode_host) { 139 if (otg_mode_host) {
diff --git a/arch/arm/mach-mx25/mach-mx25pdk.c b/arch/arm/mach-mx25/mach-mx25_3ds.c
index ba3fbef1c41..62bc21f11a7 100644
--- a/arch/arm/mach-mx25/mach-mx25pdk.c
+++ b/arch/arm/mach-mx25/mach-mx25_3ds.c
@@ -16,6 +16,12 @@
16 * Boston, MA 02110-1301, USA. 16 * Boston, MA 02110-1301, USA.
17 */ 17 */
18 18
19/*
20 * This machine is known as:
21 * - i.MX25 3-Stack Development System
22 * - i.MX25 Platform Development Kit (i.MX25 PDK)
23 */
24
19#include <linux/types.h> 25#include <linux/types.h>
20#include <linux/init.h> 26#include <linux/init.h>
21#include <linux/delay.h> 27#include <linux/delay.h>
@@ -33,14 +39,14 @@
33#include <asm/memory.h> 39#include <asm/memory.h>
34#include <asm/mach/map.h> 40#include <asm/mach/map.h>
35#include <mach/common.h> 41#include <mach/common.h>
36#include <mach/imx-uart.h>
37#include <mach/mx25.h> 42#include <mach/mx25.h>
38#include <mach/mxc_nand.h>
39#include <mach/imxfb.h> 43#include <mach/imxfb.h>
40#include "devices.h"
41#include <mach/iomux-mx25.h> 44#include <mach/iomux-mx25.h>
42 45
43static struct imxuart_platform_data uart_pdata = { 46#include "devices-imx25.h"
47#include "devices.h"
48
49static const struct imxuart_platform_data uart_pdata __initconst = {
44 .flags = IMXUART_HAVE_RTSCTS, 50 .flags = IMXUART_HAVE_RTSCTS,
45}; 51};
46 52
@@ -114,7 +120,8 @@ static void __init mx25pdk_fec_reset(void)
114 gpio_set_value(FEC_RESET_B_GPIO, 1); 120 gpio_set_value(FEC_RESET_B_GPIO, 1);
115} 121}
116 122
117static struct mxc_nand_platform_data mx25pdk_nand_board_info = { 123static const struct mxc_nand_platform_data
124mx25pdk_nand_board_info __initconst = {
118 .width = 1, 125 .width = 1,
119 .hw_ecc = 1, 126 .hw_ecc = 1,
120 .flash_bbt = 1, 127 .flash_bbt = 1,
@@ -177,9 +184,9 @@ static void __init mx25pdk_init(void)
177 mxc_iomux_v3_setup_multiple_pads(mx25pdk_pads, 184 mxc_iomux_v3_setup_multiple_pads(mx25pdk_pads,
178 ARRAY_SIZE(mx25pdk_pads)); 185 ARRAY_SIZE(mx25pdk_pads));
179 186
180 mxc_register_device(&mxc_uart_device0, &uart_pdata); 187 imx25_add_imx_uart0(&uart_pdata);
181 mxc_register_device(&mxc_usbh2, NULL); 188 mxc_register_device(&mxc_usbh2, NULL);
182 mxc_register_device(&mxc_nand_device, &mx25pdk_nand_board_info); 189 imx25_add_mxc_nand(&mx25pdk_nand_board_info);
183 mxc_register_device(&mx25_rtc_device, NULL); 190 mxc_register_device(&mx25_rtc_device, NULL);
184 mxc_register_device(&mx25_fb_device, &mx25pdk_fb_pdata); 191 mxc_register_device(&mx25_fb_device, &mx25pdk_fb_pdata);
185 mxc_register_device(&mxc_wdt, NULL); 192 mxc_register_device(&mxc_wdt, NULL);
diff --git a/arch/arm/mach-mx25/mm.c b/arch/arm/mach-mx25/mm.c
index a7e587ff3e9..593e14545f5 100644
--- a/arch/arm/mach-mx25/mm.c
+++ b/arch/arm/mach-mx25/mm.c
@@ -14,10 +14,6 @@
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details. 16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */ 17 */
22 18
23#include <linux/mm.h> 19#include <linux/mm.h>
@@ -69,8 +65,11 @@ void __init mx25_map_io(void)
69 iotable_init(mxc_io_desc, ARRAY_SIZE(mxc_io_desc)); 65 iotable_init(mxc_io_desc, ARRAY_SIZE(mxc_io_desc));
70} 66}
71 67
68int imx25_register_gpios(void);
69
72void __init mx25_init_irq(void) 70void __init mx25_init_irq(void)
73{ 71{
72 imx25_register_gpios();
74 mxc_init_irq((void __iomem *)MX25_AVIC_BASE_ADDR_VIRT); 73 mxc_init_irq((void __iomem *)MX25_AVIC_BASE_ADDR_VIRT);
75} 74}
76 75