ARM: mx3: dynamically allocate imx2-wdt devices
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 15 Nov 2010 14:28:45 +0000 (15:28 +0100)
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Fri, 19 Nov 2010 20:54:36 +0000 (21:54 +0100)
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
arch/arm/mach-mx3/Kconfig
arch/arm/mach-mx3/devices-imx31.h
arch/arm/mach-mx3/devices-imx35.h
arch/arm/mach-mx3/devices.c
arch/arm/mach-mx3/devices.h
arch/arm/mach-mx3/mach-cpuimx35.c
arch/arm/mach-mx3/mach-pcm037.c
arch/arm/mach-mx3/mach-pcm043.c
arch/arm/mach-mx3/mx31lite-db.c
arch/arm/plat-mxc/devices/platform-imx2-wdt.c

index 157348354b7f0bf31b8481f698c22841109c135c..bcfcf9ad76e534a87b591fd64f46450a9216e1ab 100644 (file)
@@ -51,6 +51,7 @@ config MACH_PCM037
        bool "Support Phytec pcm037 (i.MX31) platforms"
        select SOC_IMX31
        select IMX_HAVE_PLATFORM_FSL_USB2_UDC
+       select IMX_HAVE_PLATFORM_IMX2_WDT
        select IMX_HAVE_PLATFORM_IMX_I2C
        select IMX_HAVE_PLATFORM_IMX_UART
        select IMX_HAVE_PLATFORM_MXC_EHCI
@@ -75,6 +76,7 @@ config MACH_MX31LITE
        bool "Support MX31 LITEKIT (LogicPD)"
        select SOC_IMX31
        select MXC_ULPI if USB_ULPI
+       select IMX_HAVE_PLATFORM_IMX2_WDT
        select IMX_HAVE_PLATFORM_IMX_UART
        select IMX_HAVE_PLATFORM_MXC_EHCI
        select IMX_HAVE_PLATFORM_MXC_MMC
@@ -143,6 +145,7 @@ config MACH_PCM043
        bool "Support Phytec pcm043 (i.MX35) platforms"
        select SOC_IMX35
        select IMX_HAVE_PLATFORM_FSL_USB2_UDC
+       select IMX_HAVE_PLATFORM_IMX2_WDT
        select IMX_HAVE_PLATFORM_IMX_I2C
        select IMX_HAVE_PLATFORM_IMX_SSI
        select IMX_HAVE_PLATFORM_IMX_UART
@@ -193,6 +196,7 @@ config MACH_EUKREA_CPUIMX35
        bool "Support Eukrea CPUIMX35 Platform"
        select SOC_IMX35
        select IMX_HAVE_PLATFORM_FSL_USB2_UDC
+       select IMX_HAVE_PLATFORM_IMX2_WDT
        select IMX_HAVE_PLATFORM_IMX_UART
        select IMX_HAVE_PLATFORM_IMX_I2C
        select IMX_HAVE_PLATFORM_MXC_EHCI
index 6571dd795e97eb2dfde758ff3962e8f58ea6f4b1..109f0bc3b52461ddec95d69f3b2c5bc61bdd08c0 100644 (file)
@@ -13,6 +13,10 @@ extern const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst;
 #define imx31_add_fsl_usb2_udc(pdata)  \
        imx_add_fsl_usb2_udc(&imx31_fsl_usb2_udc_data, pdata)
 
+extern const struct imx_imx2_wdt_data imx31_imx2_wdt_data __initconst;
+#define imx31_add_imx2_wdt(pdata)       \
+       imx_add_imx2_wdt(&imx31_imx2_wdt_data)
+
 extern const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst;
 #define imx31_add_imx_i2c(id, pdata)   \
        imx_add_imx_i2c(&imx31_imx_i2c_data[id], pdata)
index 849c48a2c472eb002563f69f6487748935f3c41b..763ee9754773643dd19efb9797100a7e2f1b2e92 100644 (file)
@@ -23,6 +23,10 @@ extern const struct imx_flexcan_data imx35_flexcan_data[] __initconst;
 #define imx35_add_flexcan0(pdata)      imx35_add_flexcan(0, pdata)
 #define imx35_add_flexcan1(pdata)      imx35_add_flexcan(1, pdata)
 
+extern const struct imx_imx2_wdt_data imx35_imx2_wdt_data __initconst;
+#define imx35_add_imx2_wdt(pdata)       \
+       imx_add_imx2_wdt(&imx35_imx2_wdt_data)
+
 extern const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst;
 #define imx35_add_imx_i2c(id, pdata)   \
        imx_add_imx_i2c(&imx35_imx_i2c_data[id], pdata)
index c122c0faaaa5b76f42896325884f5431829bca2a..448fe5614e4f40f247dec501a902fcd9ea26ff7a 100644 (file)
@@ -95,19 +95,6 @@ struct platform_device mx3_camera = {
        },
 };
 
-static struct resource imx_wdt_resources[] = {
-       {
-               .flags = IORESOURCE_MEM,
-       },
-};
-
-struct platform_device imx_wdt_device0 = {
-       .name           = "imx2-wdt",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(imx_wdt_resources),
-       .resource       = imx_wdt_resources,
-};
-
 static struct resource imx_rtc_resources[] = {
        {
                .start  = MX31_RTC_BASE_ADDR,
@@ -145,23 +132,3 @@ struct platform_device imx_kpp_device = {
        .num_resources = ARRAY_SIZE(imx_kpp_resources),
        .resource = imx_kpp_resources,
 };
-
-static int __init mx3_devices_init(void)
-{
-#if defined(CONFIG_ARCH_MX31)
-       if (cpu_is_mx31()) {
-               imx_wdt_resources[0].start = MX31_WDOG_BASE_ADDR;
-               imx_wdt_resources[0].end = MX31_WDOG_BASE_ADDR + 0x3fff;
-       }
-#endif
-#if defined(CONFIG_ARCH_MX35)
-       if (cpu_is_mx35()) {
-               imx_wdt_resources[0].start = MX35_WDOG_BASE_ADDR;
-               imx_wdt_resources[0].end = MX35_WDOG_BASE_ADDR + 0x3fff;
-       }
-#endif
-
-       return 0;
-}
-
-subsys_initcall(mx3_devices_init);
index 1bc2918ba04c7a25fd41dbb582273d1b58e8fe0b..2f9f87725e7b29fb57f2489b942b66c65c26031e 100644 (file)
@@ -1,6 +1,5 @@
 extern struct platform_device mx3_ipu;
 extern struct platform_device mx3_fb;
 extern struct platform_device mx3_camera;
-extern struct platform_device imx_wdt_device0;
 extern struct platform_device imx_rtc_device0;
 extern struct platform_device imx_kpp_device;
index 0af1e84d8f9db2b4a60af2eae5e0eca5d5a05a33..dda19883ffe2f0b2ed612fc1966119f92e86422d 100644 (file)
@@ -72,10 +72,6 @@ static struct i2c_board_info eukrea_cpuimx35_i2c_devices[] = {
        },
 };
 
-static struct platform_device *devices[] __initdata = {
-       &imx_wdt_device0,
-};
-
 static struct pad_desc eukrea_cpuimx35_pads[] = {
        /* UART1 */
        MX35_PAD_CTS1__UART1_CTS,
@@ -156,7 +152,7 @@ static void __init mxc_board_init(void)
                        ARRAY_SIZE(eukrea_cpuimx35_pads));
 
        imx35_add_fec(NULL);
-       platform_add_devices(devices, ARRAY_SIZE(devices));
+       imx35_add_imx2_wdt(NULL);
 
        imx35_add_imx_uart0(&uart_pdata);
        imx35_add_mxc_nand(&eukrea_cpuimx35_nand_board_info);
index 2d297436820bfd0a783caf86fb9a875e50f2f6c6..cb657692b80526cc18de7f053cbf07eb500389e2 100644 (file)
@@ -440,7 +440,6 @@ static int __init pcm037_camera_alloc_dma(const size_t buf_size)
 static struct platform_device *devices[] __initdata = {
        &pcm037_flash,
        &pcm037_sram_device,
-       &imx_wdt_device0,
        &pcm037_mt9t031,
        &pcm037_mt9v022,
 };
@@ -606,6 +605,7 @@ static void __init mxc_board_init(void)
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
 
+       imx31_add_imx2_wdt(NULL);
        imx31_add_imx_uart0(&uart_pdata);
        /* XXX: should't this have .flags = 0 (i.e. no RTSCTS) on PCM037_EET? */
        imx31_add_imx_uart1(&uart_pdata);
index f9e7da98b10714bb32996e4c8dbb1be36a9ab11d..f2f2fd036273ebe1483e19216a59c234da5da525 100644 (file)
@@ -138,7 +138,6 @@ static struct i2c_board_info pcm043_i2c_devices[] = {
 
 static struct platform_device *devices[] __initdata = {
        &pcm043_flash,
-       &imx_wdt_device0,
 };
 
 static struct pad_desc pcm043_pads[] = {
@@ -362,6 +361,7 @@ static void __init mxc_board_init(void)
 
        imx35_add_fec(NULL);
        platform_add_devices(devices, ARRAY_SIZE(devices));
+       imx35_add_imx2_wdt(NULL);
 
        imx35_add_imx_uart0(&uart_pdata);
        imx35_add_mxc_nand(&pcm037_nand_board_info);
index a06161edba3f837c984dc351aaa4bc4e3bc67668..3124ea837ac7969d9877f4f1f1633db73ca889a5 100644 (file)
@@ -199,6 +199,6 @@ void __init mx31lite_db_init(void)
        imx31_add_mxc_mmc(0, &mmc_pdata);
        imx31_add_spi_imx0(&spi0_pdata);
        platform_device_register(&litekit_led_device);
-       mxc_register_device(&imx_wdt_device0, NULL);
+       imx31_add_imx2_wdt(NULL);
        mxc_register_device(&imx_rtc_device0, NULL);
 }
index d2c97aae1eee7896fb8b32da0d36aa508a5d8a33..c61bd4e631496a495af009953550f32d358eba89 100644 (file)
@@ -31,6 +31,16 @@ const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst =
        imx_imx2_wdt_data_entry_single(MX27, SZ_4K);
 #endif /* ifdef CONFIG_SOC_IMX27 */
 
+#ifdef CONFIG_SOC_IMX31
+const struct imx_imx2_wdt_data imx31_imx2_wdt_data __initconst =
+       imx_imx2_wdt_data_entry_single(MX31, SZ_16K);
+#endif /* ifdef CONFIG_SOC_IMX31 */
+
+#ifdef CONFIG_SOC_IMX35
+const struct imx_imx2_wdt_data imx35_imx2_wdt_data __initconst =
+       imx_imx2_wdt_data_entry_single(MX35, SZ_16K);
+#endif /* ifdef CONFIG_SOC_IMX35 */
+
 struct platform_device *__init imx_add_imx2_wdt(
                const struct imx_imx2_wdt_data *data)
 {