aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorFabio Estevam <fabio.estevam@freescale.com>2010-12-06 13:38:32 -0500
committerSascha Hauer <s.hauer@pengutronix.de>2010-12-07 14:03:11 -0500
commit8c2efec3cd5fcc6240da8931222ccab556a40ff3 (patch)
tree01640b908b69dbaf6f681f5308406ade1917c8e7 /arch/arm
parent0e44e059588e1d91f3a1974d2ce3348864d1d799 (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')
-rw-r--r--arch/arm/mach-mx5/devices-imx51.h6
-rw-r--r--arch/arm/mach-mx5/mm.c2
-rw-r--r--arch/arm/plat-mxc/devices/platform-imx2-wdt.c27
-rw-r--r--arch/arm/plat-mxc/include/mach/devices-common.h1
-rw-r--r--arch/arm/plat-mxc/include/mach/mx51.h2
5 files changed, 23 insertions, 15 deletions
diff --git a/arch/arm/mach-mx5/devices-imx51.h b/arch/arm/mach-mx5/devices-imx51.h
index 939d2e813708..6302e4670000 100644
--- a/arch/arm/mach-mx5/devices-imx51.h
+++ b/arch/arm/mach-mx5/devices-imx51.h
@@ -44,6 +44,6 @@ extern const struct imx_spi_imx_data imx51_ecspi_data[] __initconst;
44#define imx51_add_ecspi(id, pdata) \ 44#define imx51_add_ecspi(id, pdata) \
45 imx_add_spi_imx(&imx51_ecspi_data[id], pdata) 45 imx_add_spi_imx(&imx51_ecspi_data[id], pdata)
46 46
47extern const struct imx_imx2_wdt_data imx51_imx2_wdt_data __initconst; 47extern const struct imx_imx2_wdt_data imx51_imx2_wdt_data[] __initconst;
48#define imx51_imx2_wdt_data(pdata) \ 48#define imx51_add_imx2_wdt(id, pdata) \
49 imx_add_imx2_wdt_data(&imx51_imx2_wdt_data, pdata) 49 imx_add_imx2_wdt(&imx51_imx2_wdt_data[id])
diff --git a/arch/arm/mach-mx5/mm.c b/arch/arm/mach-mx5/mm.c
index e57f96858f0d..457f9f95204b 100644
--- a/arch/arm/mach-mx5/mm.c
+++ b/arch/arm/mach-mx5/mm.c
@@ -49,7 +49,7 @@ void __init mx51_map_io(void)
49{ 49{
50 mxc_set_cpu_type(MXC_CPU_MX51); 50 mxc_set_cpu_type(MXC_CPU_MX51);
51 mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR)); 51 mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR));
52 mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG_BASE_ADDR)); 52 mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG1_BASE_ADDR));
53 iotable_init(mx51_io_desc, ARRAY_SIZE(mx51_io_desc)); 53 iotable_init(mx51_io_desc, ARRAY_SIZE(mx51_io_desc));
54} 54}
55 55
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
20const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst = 23const 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
25const struct imx_imx2_wdt_data imx25_imx2_wdt_data __initconst = 28const 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
30const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst = 33const 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
35const struct imx_imx2_wdt_data imx31_imx2_wdt_data __initconst = 38const 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
40const struct imx_imx2_wdt_data imx35_imx2_wdt_data __initconst = 43const 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
45const struct imx_imx2_wdt_data imx51_imx2_wdt_data __initconst = 48const 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
49struct platform_device *__init imx_add_imx2_wdt( 56struct 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
69struct imx_imx2_wdt_data { 69struct 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)