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: Sekhar Nori <nsekhar@ti.com>
This commit is contained in:
parent
f26a9968e2
commit
1233090cf6
6 changed files with 32 additions and 19 deletions
|
@ -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)
|
||||||
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] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
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,
|
||||||
|
|
||||||
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,
|
||||||
|
|
||||||
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)
|
||||||
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,
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue