mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
davinci: add platform support for watchdog timer
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
This commit is contained in:
parent
0521444d49
commit
fb6313879c
3 changed files with 42 additions and 5 deletions
|
@ -93,4 +93,7 @@ struct davinci_clk {
|
|||
}
|
||||
|
||||
int davinci_clk_init(struct davinci_clk *clocks);
|
||||
|
||||
extern struct platform_device davinci_wdt_device;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue