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

Commit fb631387 authored by Kevin Hilman's avatar Kevin Hilman
Browse files

davinci: add platform support for watchdog timer

parent 0521444d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -93,4 +93,7 @@ struct davinci_clk {
	}

int davinci_clk_init(struct davinci_clk *clocks);

extern struct platform_device davinci_wdt_device;

#endif
+35 −0
Original line number Diff line number Diff line
@@ -54,3 +54,38 @@ void __init davinci_init_i2c(struct davinci_i2c_platform_data *pdata)
	(void) platform_device_register(&davinci_i2c_device);
}

/*-------------------------------------------------------------------------*/

static struct resource wdt_resources[] = {
	{
		.start	= 0x01c21c00,
		.end	= 0x01c21fff,
		.flags	= IORESOURCE_MEM,
	},
};

struct platform_device davinci_wdt_device = {
	.name		= "watchdog",
	.id		= -1,
	.num_resources	= ARRAY_SIZE(wdt_resources),
	.resource	= wdt_resources,
};

static void davinci_init_wdt(void)
{
	platform_device_register(&davinci_wdt_device);
}

/*-------------------------------------------------------------------------*/

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);
+4 −5
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/device.h>
#include <linux/platform_device.h>

#include <mach/hardware.h>
#include <asm/system.h>
@@ -349,15 +350,13 @@ struct sys_timer davinci_timer = {


/* reset board using watchdog timer */
void davinci_watchdog_reset(void) {
void davinci_watchdog_reset(void)
{
	u32 tgcr, wdtcr;
	void __iomem *base = IO_ADDRESS(DAVINCI_WDOG_BASE);
	struct device dev;
	struct clk *wd_clk;
	char *name = "watchdog";

	dev_set_name(&dev, name);
	wd_clk = clk_get(&dev, NULL);
	wd_clk = clk_get(&davinci_wdt_device.dev, NULL);
	if (WARN_ON(IS_ERR(wd_clk)))
		return;
	clk_enable(wd_clk);