mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +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);
|
int davinci_clk_init(struct davinci_clk *clocks);
|
||||||
|
|
||||||
|
extern struct platform_device davinci_wdt_device;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -54,3 +54,38 @@ void __init davinci_init_i2c(struct davinci_i2c_platform_data *pdata)
|
||||||
(void) platform_device_register(&davinci_i2c_device);
|
(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/clk.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
|
@ -349,15 +350,13 @@ struct sys_timer davinci_timer = {
|
||||||
|
|
||||||
|
|
||||||
/* reset board using watchdog timer */
|
/* reset board using watchdog timer */
|
||||||
void davinci_watchdog_reset(void) {
|
void davinci_watchdog_reset(void)
|
||||||
|
{
|
||||||
u32 tgcr, wdtcr;
|
u32 tgcr, wdtcr;
|
||||||
void __iomem *base = IO_ADDRESS(DAVINCI_WDOG_BASE);
|
void __iomem *base = IO_ADDRESS(DAVINCI_WDOG_BASE);
|
||||||
struct device dev;
|
|
||||||
struct clk *wd_clk;
|
struct clk *wd_clk;
|
||||||
char *name = "watchdog";
|
|
||||||
|
|
||||||
dev_set_name(&dev, name);
|
wd_clk = clk_get(&davinci_wdt_device.dev, NULL);
|
||||||
wd_clk = clk_get(&dev, NULL);
|
|
||||||
if (WARN_ON(IS_ERR(wd_clk)))
|
if (WARN_ON(IS_ERR(wd_clk)))
|
||||||
return;
|
return;
|
||||||
clk_enable(wd_clk);
|
clk_enable(wd_clk);
|
||||||
|
|
Loading…
Reference in a new issue