Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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_CS2_SPACE_BASE 0x42000000

int davinci_init_wdt(void);

/* DM355 function declarations */
void dm355_init(void);
void dm355_init_spi0(unsigned chipselect_mask,
+2 −15
Original line number Diff line number Diff line
@@ -313,9 +313,9 @@ void davinci_restart(enum reboot_mode mode, const char *cmd)
	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 = {
@@ -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);
+7 −1
Original line number Diff line number Diff line
@@ -1076,12 +1076,18 @@ int __init dm355_init_video(struct vpfe_config *vpfe_cfg,

static int __init dm355_init_devices(void)
{
	int ret = 0;

	if (!cpu_is_davinci_dm355())
		return 0;

	davinci_cfg_reg(DM355_INT_EDMA_CC);
	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);
+7 −1
Original line number Diff line number Diff line
@@ -1436,6 +1436,8 @@ int __init dm365_init_video(struct vpfe_config *vpfe_cfg,

static int __init dm365_init_devices(void)
{
	int ret = 0;

	if (!cpu_is_davinci_dm365())
		return 0;

@@ -1445,6 +1447,10 @@ static int __init dm365_init_devices(void)
	platform_device_register(&dm365_mdio_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);
+7 −1
Original line number Diff line number Diff line
@@ -964,6 +964,8 @@ int __init dm644x_init_video(struct vpfe_config *vpfe_cfg,

static int __init dm644x_init_devices(void)
{
	int ret = 0;

	if (!cpu_is_davinci_dm644x())
		return 0;

@@ -972,6 +974,10 @@ static int __init dm644x_init_devices(void)
	platform_device_register(&dm644x_mdio_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);
Loading