Commit 1233090c authored by Sekhar Nori's avatar Sekhar Nori

ARM: davinci: da8xx: fix multiple watchdog device registration

Fix multiple watchdog device registration on da8xx devices
due to davinci_init_devices blindly registering watchdog
device.

Fix this by getting rid of the initcall and instead registering
watchdog for each soc.
Signed-off-by: default avatarSekhar Nori <nsekhar@ti.com>
parent f26a9968
...@@ -79,6 +79,8 @@ int davinci_gpio_register(struct resource *res, int size, void *pdata); ...@@ -79,6 +79,8 @@ int davinci_gpio_register(struct resource *res, int size, void *pdata);
#define DM646X_ASYNC_EMIF_CONTROL_BASE 0x20008000 #define DM646X_ASYNC_EMIF_CONTROL_BASE 0x20008000
#define DM646X_ASYNC_EMIF_CS2_SPACE_BASE 0x42000000 #define DM646X_ASYNC_EMIF_CS2_SPACE_BASE 0x42000000
int davinci_init_wdt(void);
/* DM355 function declarations */ /* DM355 function declarations */
void dm355_init(void); void dm355_init(void);
void dm355_init_spi0(unsigned chipselect_mask, void dm355_init_spi0(unsigned chipselect_mask,
......
...@@ -313,9 +313,9 @@ void davinci_restart(enum reboot_mode mode, const char *cmd) ...@@ -313,9 +313,9 @@ void davinci_restart(enum reboot_mode mode, const char *cmd)
davinci_watchdog_reset(&davinci_wdt_device); davinci_watchdog_reset(&davinci_wdt_device);
} }
static void davinci_init_wdt(void) int davinci_init_wdt(void)
{ {
platform_device_register(&davinci_wdt_device); return platform_device_register(&davinci_wdt_device);
} }
static struct platform_device davinci_gpio_device = { static struct platform_device davinci_gpio_device = {
...@@ -348,16 +348,3 @@ struct davinci_timer_instance davinci_timer_instance[2] = { ...@@ -348,16 +348,3 @@ struct davinci_timer_instance davinci_timer_instance[2] = {
}, },
}; };
/*-------------------------------------------------------------------------*/
static int __init davinci_init_devices(void)
{
/* please keep these calls, and their implementations above,
* in alphabetical order so they're easier to sort through.
*/
davinci_init_wdt();
return 0;
}
arch_initcall(davinci_init_devices);
...@@ -1076,12 +1076,18 @@ int __init dm355_init_video(struct vpfe_config *vpfe_cfg, ...@@ -1076,12 +1076,18 @@ int __init dm355_init_video(struct vpfe_config *vpfe_cfg,
static int __init dm355_init_devices(void) static int __init dm355_init_devices(void)
{ {
int ret = 0;
if (!cpu_is_davinci_dm355()) if (!cpu_is_davinci_dm355())
return 0; return 0;
davinci_cfg_reg(DM355_INT_EDMA_CC); davinci_cfg_reg(DM355_INT_EDMA_CC);
platform_device_register(&dm355_edma_device); platform_device_register(&dm355_edma_device);
return 0; ret = davinci_init_wdt();
if (ret)
pr_warn("%s: watchdog init failed: %d\n", __func__, ret);
return ret;
} }
postcore_initcall(dm355_init_devices); postcore_initcall(dm355_init_devices);
...@@ -1436,6 +1436,8 @@ int __init dm365_init_video(struct vpfe_config *vpfe_cfg, ...@@ -1436,6 +1436,8 @@ int __init dm365_init_video(struct vpfe_config *vpfe_cfg,
static int __init dm365_init_devices(void) static int __init dm365_init_devices(void)
{ {
int ret = 0;
if (!cpu_is_davinci_dm365()) if (!cpu_is_davinci_dm365())
return 0; return 0;
...@@ -1445,6 +1447,10 @@ static int __init dm365_init_devices(void) ...@@ -1445,6 +1447,10 @@ static int __init dm365_init_devices(void)
platform_device_register(&dm365_mdio_device); platform_device_register(&dm365_mdio_device);
platform_device_register(&dm365_emac_device); platform_device_register(&dm365_emac_device);
return 0; ret = davinci_init_wdt();
if (ret)
pr_warn("%s: watchdog init failed: %d\n", __func__, ret);
return ret;
} }
postcore_initcall(dm365_init_devices); postcore_initcall(dm365_init_devices);
...@@ -964,6 +964,8 @@ int __init dm644x_init_video(struct vpfe_config *vpfe_cfg, ...@@ -964,6 +964,8 @@ int __init dm644x_init_video(struct vpfe_config *vpfe_cfg,
static int __init dm644x_init_devices(void) static int __init dm644x_init_devices(void)
{ {
int ret = 0;
if (!cpu_is_davinci_dm644x()) if (!cpu_is_davinci_dm644x())
return 0; return 0;
...@@ -972,6 +974,10 @@ static int __init dm644x_init_devices(void) ...@@ -972,6 +974,10 @@ static int __init dm644x_init_devices(void)
platform_device_register(&dm644x_mdio_device); platform_device_register(&dm644x_mdio_device);
platform_device_register(&dm644x_emac_device); platform_device_register(&dm644x_emac_device);
return 0; ret = davinci_init_wdt();
if (ret)
pr_warn("%s: watchdog init failed: %d\n", __func__, ret);
return ret;
} }
postcore_initcall(dm644x_init_devices); postcore_initcall(dm644x_init_devices);
...@@ -955,12 +955,18 @@ void __init dm646x_init(void) ...@@ -955,12 +955,18 @@ void __init dm646x_init(void)
static int __init dm646x_init_devices(void) static int __init dm646x_init_devices(void)
{ {
int ret = 0;
if (!cpu_is_davinci_dm646x()) if (!cpu_is_davinci_dm646x())
return 0; return 0;
platform_device_register(&dm646x_mdio_device); platform_device_register(&dm646x_mdio_device);
platform_device_register(&dm646x_emac_device); platform_device_register(&dm646x_emac_device);
return 0; ret = davinci_init_wdt();
if (ret)
pr_warn("%s: watchdog init failed: %d\n", __func__, ret);
return ret;
} }
postcore_initcall(dm646x_init_devices); postcore_initcall(dm646x_init_devices);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment