aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2010-11-11 10:58:50 -0500
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2010-11-19 15:53:37 -0500
commit00871505dcf15418aebc402db9f124dd2738fa2d (patch)
tree31e49a84f3a38525417a5a73f426fced987324f3
parent194ee8e89cc02d8bea8a0b837271f79ca0c72873 (diff)
ARM: mx25: dynamically allocate imx2-wdt devices
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-rw-r--r--arch/arm/mach-mx25/Kconfig1
-rw-r--r--arch/arm/mach-mx25/devices-imx25.h4
-rw-r--r--arch/arm/mach-mx25/devices.c15
-rw-r--r--arch/arm/mach-mx25/devices.h1
-rw-r--r--arch/arm/mach-mx25/mach-mx25_3ds.c2
-rw-r--r--arch/arm/plat-mxc/devices/platform-imx2-wdt.c14
-rw-r--r--arch/arm/plat-mxc/include/mach/devices-common.h1
7 files changed, 17 insertions, 21 deletions
diff --git a/arch/arm/mach-mx25/Kconfig b/arch/arm/mach-mx25/Kconfig
index 10c0f6081665..a0b82190ac5d 100644
--- a/arch/arm/mach-mx25/Kconfig
+++ b/arch/arm/mach-mx25/Kconfig
@@ -5,6 +5,7 @@ comment "MX25 platforms:"
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_ESDHC 7 select IMX_HAVE_PLATFORM_ESDHC
8 select IMX_HAVE_PLATFORM_IMX2_WDT
8 select IMX_HAVE_PLATFORM_IMXDI_RTC 9 select IMX_HAVE_PLATFORM_IMXDI_RTC
9 select IMX_HAVE_PLATFORM_IMX_FB 10 select IMX_HAVE_PLATFORM_IMX_FB
10 select IMX_HAVE_PLATFORM_IMX_KEYPAD 11 select IMX_HAVE_PLATFORM_IMX_KEYPAD
diff --git a/arch/arm/mach-mx25/devices-imx25.h b/arch/arm/mach-mx25/devices-imx25.h
index d80cce0797e1..bf70548caf04 100644
--- a/arch/arm/mach-mx25/devices-imx25.h
+++ b/arch/arm/mach-mx25/devices-imx25.h
@@ -27,6 +27,10 @@ extern struct imx_imxdi_rtc_data imx25_imxdi_rtc_data __initconst;
27#define imx25_add_imxdi_rtc(pdata) \ 27#define imx25_add_imxdi_rtc(pdata) \
28 imx_add_imxdi_rtc(&imx25_imxdi_rtc_data) 28 imx_add_imxdi_rtc(&imx25_imxdi_rtc_data)
29 29
30extern const struct imx_imx2_wdt_data imx25_imx2_wdt_data __initconst;
31#define imx25_add_imx2_wdt(pdata) \
32 imx_add_imx2_wdt(&imx25_imx2_wdt_data)
33
30extern const struct imx_imx_fb_data imx25_imx_fb_data __initconst; 34extern const struct imx_imx_fb_data imx25_imx_fb_data __initconst;
31#define imx25_add_imx_fb(pdata) \ 35#define imx25_add_imx_fb(pdata) \
32 imx_add_imx_fb(&imx25_imx_fb_data, pdata) 36 imx_add_imx_fb(&imx25_imx_fb_data, pdata)
diff --git a/arch/arm/mach-mx25/devices.c b/arch/arm/mach-mx25/devices.c
index 09095e0b69c7..12f31ef43e9f 100644
--- a/arch/arm/mach-mx25/devices.c
+++ b/arch/arm/mach-mx25/devices.c
@@ -22,21 +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 mxc_wdt_resources[] = {
26 {
27 .start = MX25_WDOG_BASE_ADDR,
28 .end = MX25_WDOG_BASE_ADDR + SZ_16K - 1,
29 .flags = IORESOURCE_MEM,
30 },
31};
32
33struct platform_device mxc_wdt = {
34 .name = "imx2-wdt",
35 .id = 0,
36 .num_resources = ARRAY_SIZE(mxc_wdt_resources),
37 .resource = mxc_wdt_resources,
38};
39
40static struct resource mx25_csi_resources[] = { 25static struct resource mx25_csi_resources[] = {
41 { 26 {
42 .start = MX25_CSI_BASE_ADDR, 27 .start = MX25_CSI_BASE_ADDR,
diff --git a/arch/arm/mach-mx25/devices.h b/arch/arm/mach-mx25/devices.h
index 11997e267c4b..fbb75ff5de73 100644
--- a/arch/arm/mach-mx25/devices.h
+++ b/arch/arm/mach-mx25/devices.h
@@ -1,2 +1 @@
1extern struct platform_device mxc_wdt;
2extern struct platform_device mx25_csi_device; extern struct platform_device mx25_csi_device;
diff --git a/arch/arm/mach-mx25/mach-mx25_3ds.c b/arch/arm/mach-mx25/mach-mx25_3ds.c
index 34492aa3cfa6..7e72df77e305 100644
--- a/arch/arm/mach-mx25/mach-mx25_3ds.c
+++ b/arch/arm/mach-mx25/mach-mx25_3ds.c
@@ -195,7 +195,7 @@ static void __init mx25pdk_init(void)
195 imx25_add_mxc_nand(&mx25pdk_nand_board_info); 195 imx25_add_mxc_nand(&mx25pdk_nand_board_info);
196 imx25_add_imxdi_rtc(NULL); 196 imx25_add_imxdi_rtc(NULL);
197 imx25_add_imx_fb(&mx25pdk_fb_pdata); 197 imx25_add_imx_fb(&mx25pdk_fb_pdata);
198 mxc_register_device(&mxc_wdt, NULL); 198 imx25_add_imx2_wdt(NULL);
199 199
200 mx25pdk_fec_reset(); 200 mx25pdk_fec_reset();
201 imx25_add_fec(&mx25_fec_pdata); 201 imx25_add_fec(&mx25_fec_pdata);
diff --git a/arch/arm/plat-mxc/devices/platform-imx2-wdt.c b/arch/arm/plat-mxc/devices/platform-imx2-wdt.c
index 86eb7f128168..8446e2505d8b 100644
--- a/arch/arm/plat-mxc/devices/platform-imx2-wdt.c
+++ b/arch/arm/plat-mxc/devices/platform-imx2-wdt.c
@@ -10,19 +10,25 @@
10#include <mach/hardware.h> 10#include <mach/hardware.h>
11#include <mach/devices-common.h> 11#include <mach/devices-common.h>
12 12
13#define imx_imx2_wdt_data_entry_single(soc) \ 13#define imx_imx2_wdt_data_entry_single(soc, _size) \
14 { \ 14 { \
15 .iobase = soc ## _WDOG_BASE_ADDR, \ 15 .iobase = soc ## _WDOG_BASE_ADDR, \
16 .iosize = _size, \
16 } 17 }
17 18
18#ifdef CONFIG_SOC_IMX21 19#ifdef CONFIG_SOC_IMX21
19const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst = 20const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst =
20 imx_imx2_wdt_data_entry_single(MX21); 21 imx_imx2_wdt_data_entry_single(MX21, SZ_4K);
21#endif /* ifdef CONFIG_SOC_IMX21 */ 22#endif /* ifdef CONFIG_SOC_IMX21 */
22 23
24#ifdef CONFIG_ARCH_MX25
25const struct imx_imx2_wdt_data imx25_imx2_wdt_data __initconst =
26 imx_imx2_wdt_data_entry_single(MX25, SZ_16K);
27#endif /* ifdef CONFIG_ARCH_MX25 */
28
23#ifdef CONFIG_SOC_IMX27 29#ifdef CONFIG_SOC_IMX27
24const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst = 30const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst =
25 imx_imx2_wdt_data_entry_single(MX27); 31 imx_imx2_wdt_data_entry_single(MX27, SZ_4K);
26#endif /* ifdef CONFIG_SOC_IMX27 */ 32#endif /* ifdef CONFIG_SOC_IMX27 */
27 33
28struct platform_device *__init imx_add_imx2_wdt( 34struct platform_device *__init imx_add_imx2_wdt(
@@ -31,7 +37,7 @@ struct platform_device *__init imx_add_imx2_wdt(
31 struct resource res[] = { 37 struct resource res[] = {
32 { 38 {
33 .start = data->iobase, 39 .start = data->iobase,
34 .end = data->iobase + SZ_4K - 1, 40 .end = data->iobase + data->iosize - 1,
35 .flags = IORESOURCE_MEM, 41 .flags = IORESOURCE_MEM,
36 }, 42 },
37 }; 43 };
diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h
index e28453e18756..95331aeb854e 100644
--- a/arch/arm/plat-mxc/include/mach/devices-common.h
+++ b/arch/arm/plat-mxc/include/mach/devices-common.h
@@ -68,6 +68,7 @@ struct platform_device *__init imx_add_imx21_hcd(
68 68
69struct imx_imx2_wdt_data { 69struct imx_imx2_wdt_data {
70 resource_size_t iobase; 70 resource_size_t iobase;
71 resource_size_t iosize;
71}; 72};
72struct platform_device *__init imx_add_imx2_wdt( 73struct platform_device *__init imx_add_imx2_wdt(
73 const struct imx_imx2_wdt_data *data); 74 const struct imx_imx2_wdt_data *data);