diff options
author | Fabio Estevam <fabio.estevam@freescale.com> | 2010-12-06 13:38:32 -0500 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2010-12-07 14:03:11 -0500 |
commit | 8c2efec3cd5fcc6240da8931222ccab556a40ff3 (patch) | |
tree | 01640b908b69dbaf6f681f5308406ade1917c8e7 /arch/arm/plat-mxc | |
parent | 0e44e059588e1d91f3a1974d2ce3348864d1d799 (diff) |
ARM: mx5: add support for the two watchdog modules
MX51 has two watchdog modules.
Add support for both of them.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/plat-mxc')
-rw-r--r-- | arch/arm/plat-mxc/devices/platform-imx2-wdt.c | 27 | ||||
-rw-r--r-- | arch/arm/plat-mxc/include/mach/devices-common.h | 1 | ||||
-rw-r--r-- | arch/arm/plat-mxc/include/mach/mx51.h | 2 |
3 files changed, 19 insertions, 11 deletions
diff --git a/arch/arm/plat-mxc/devices/platform-imx2-wdt.c b/arch/arm/plat-mxc/devices/platform-imx2-wdt.c index 8dc19f69042d..e0aec61177f4 100644 --- a/arch/arm/plat-mxc/devices/platform-imx2-wdt.c +++ b/arch/arm/plat-mxc/devices/platform-imx2-wdt.c | |||
@@ -10,40 +10,47 @@ | |||
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, _size) \ | 13 | #define imx_imx2_wdt_data_entry_single(soc, _id, _hwid, _size) \ |
14 | { \ | 14 | { \ |
15 | .iobase = soc ## _WDOG_BASE_ADDR, \ | 15 | .id = _id, \ |
16 | .iobase = soc ## _WDOG ## _hwid ## _BASE_ADDR, \ | ||
16 | .iosize = _size, \ | 17 | .iosize = _size, \ |
17 | } | 18 | } |
19 | #define imx_imx2_wdt_data_entry(soc, _id, _hwid, _size) \ | ||
20 | [_id] = imx_imx2_wdt_data_entry_single(soc, _id, _hwid, _size) | ||
18 | 21 | ||
19 | #ifdef CONFIG_SOC_IMX21 | 22 | #ifdef CONFIG_SOC_IMX21 |
20 | const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst = | 23 | const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst = |
21 | imx_imx2_wdt_data_entry_single(MX21, SZ_4K); | 24 | imx_imx2_wdt_data_entry_single(MX21, 0, , SZ_4K); |
22 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 25 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
23 | 26 | ||
24 | #ifdef CONFIG_SOC_IMX25 | 27 | #ifdef CONFIG_SOC_IMX25 |
25 | const struct imx_imx2_wdt_data imx25_imx2_wdt_data __initconst = | 28 | const struct imx_imx2_wdt_data imx25_imx2_wdt_data __initconst = |
26 | imx_imx2_wdt_data_entry_single(MX25, SZ_16K); | 29 | imx_imx2_wdt_data_entry_single(MX25, 0, , SZ_16K); |
27 | #endif /* ifdef CONFIG_SOC_IMX25 */ | 30 | #endif /* ifdef CONFIG_SOC_IMX25 */ |
28 | 31 | ||
29 | #ifdef CONFIG_SOC_IMX27 | 32 | #ifdef CONFIG_SOC_IMX27 |
30 | const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst = | 33 | const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst = |
31 | imx_imx2_wdt_data_entry_single(MX27, SZ_4K); | 34 | imx_imx2_wdt_data_entry_single(MX27, 0, , SZ_4K); |
32 | #endif /* ifdef CONFIG_SOC_IMX27 */ | 35 | #endif /* ifdef CONFIG_SOC_IMX27 */ |
33 | 36 | ||
34 | #ifdef CONFIG_SOC_IMX31 | 37 | #ifdef CONFIG_SOC_IMX31 |
35 | const struct imx_imx2_wdt_data imx31_imx2_wdt_data __initconst = | 38 | const struct imx_imx2_wdt_data imx31_imx2_wdt_data __initconst = |
36 | imx_imx2_wdt_data_entry_single(MX31, SZ_16K); | 39 | imx_imx2_wdt_data_entry_single(MX31, 0, , SZ_16K); |
37 | #endif /* ifdef CONFIG_SOC_IMX31 */ | 40 | #endif /* ifdef CONFIG_SOC_IMX31 */ |
38 | 41 | ||
39 | #ifdef CONFIG_SOC_IMX35 | 42 | #ifdef CONFIG_SOC_IMX35 |
40 | const struct imx_imx2_wdt_data imx35_imx2_wdt_data __initconst = | 43 | const struct imx_imx2_wdt_data imx35_imx2_wdt_data __initconst = |
41 | imx_imx2_wdt_data_entry_single(MX35, SZ_16K); | 44 | imx_imx2_wdt_data_entry_single(MX35, 0, , SZ_16K); |
42 | #endif /* ifdef CONFIG_SOC_IMX35 */ | 45 | #endif /* ifdef CONFIG_SOC_IMX35 */ |
43 | 46 | ||
44 | #ifdef CONFIG_SOC_IMX51 | 47 | #ifdef CONFIG_SOC_IMX51 |
45 | const struct imx_imx2_wdt_data imx51_imx2_wdt_data __initconst = | 48 | const struct imx_imx2_wdt_data imx51_imx2_wdt_data[] __initconst = { |
46 | imx_imx2_wdt_data_entry_single(MX51, SZ_16K); | 49 | #define imx51_imx2_wdt_data_entry(_id, _hwid) \ |
50 | imx_imx2_wdt_data_entry(MX51, _id, _hwid, SZ_16K) | ||
51 | imx51_imx2_wdt_data_entry(0, 1), | ||
52 | imx51_imx2_wdt_data_entry(1, 2), | ||
53 | }; | ||
47 | #endif /* ifdef CONFIG_SOC_IMX51 */ | 54 | #endif /* ifdef CONFIG_SOC_IMX51 */ |
48 | 55 | ||
49 | struct platform_device *__init imx_add_imx2_wdt( | 56 | struct platform_device *__init imx_add_imx2_wdt( |
@@ -56,6 +63,6 @@ struct platform_device *__init imx_add_imx2_wdt( | |||
56 | .flags = IORESOURCE_MEM, | 63 | .flags = IORESOURCE_MEM, |
57 | }, | 64 | }, |
58 | }; | 65 | }; |
59 | return imx_add_platform_device("imx2-wdt", 0, | 66 | return imx_add_platform_device("imx2-wdt", data->id, |
60 | res, ARRAY_SIZE(res), NULL, 0); | 67 | res, ARRAY_SIZE(res), NULL, 0); |
61 | } | 68 | } |
diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h index 3640eaf88c02..8658c9caa650 100644 --- a/arch/arm/plat-mxc/include/mach/devices-common.h +++ b/arch/arm/plat-mxc/include/mach/devices-common.h | |||
@@ -67,6 +67,7 @@ struct platform_device *__init imx_add_imx21_hcd( | |||
67 | const struct mx21_usbh_platform_data *pdata); | 67 | const struct mx21_usbh_platform_data *pdata); |
68 | 68 | ||
69 | struct imx_imx2_wdt_data { | 69 | struct imx_imx2_wdt_data { |
70 | int id; | ||
70 | resource_size_t iobase; | 71 | resource_size_t iobase; |
71 | resource_size_t iosize; | 72 | resource_size_t iosize; |
72 | }; | 73 | }; |
diff --git a/arch/arm/plat-mxc/include/mach/mx51.h b/arch/arm/plat-mxc/include/mach/mx51.h index 8fddfef9b4e8..882f1f4e7f29 100644 --- a/arch/arm/plat-mxc/include/mach/mx51.h +++ b/arch/arm/plat-mxc/include/mach/mx51.h | |||
@@ -61,7 +61,7 @@ | |||
61 | #define MX51_GPIO3_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x8c000) | 61 | #define MX51_GPIO3_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x8c000) |
62 | #define MX51_GPIO4_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x90000) | 62 | #define MX51_GPIO4_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x90000) |
63 | #define MX51_KPP_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x94000) | 63 | #define MX51_KPP_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x94000) |
64 | #define MX51_WDOG_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x98000) | 64 | #define MX51_WDOG1_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x98000) |
65 | #define MX51_WDOG2_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x9c000) | 65 | #define MX51_WDOG2_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x9c000) |
66 | #define MX51_GPT1_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xa0000) | 66 | #define MX51_GPT1_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xa0000) |
67 | #define MX51_SRTC_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xa4000) | 67 | #define MX51_SRTC_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xa4000) |