Signed-off-by: Kevin Hilman <[email protected]>
---
 arch/arm/mach-davinci/clock.h   |    3 +++
 arch/arm/mach-davinci/devices.c |   35 +++++++++++++++++++++++++++++++++++
 arch/arm/mach-davinci/time.c    |    9 ++++-----
 3 files changed, 42 insertions(+), 5 deletions(-)

diff --git a/arch/arm/mach-davinci/clock.h b/arch/arm/mach-davinci/clock.h
index 35736ec..584494a 100644
--- a/arch/arm/mach-davinci/clock.h
+++ b/arch/arm/mach-davinci/clock.h
@@ -93,4 +93,7 @@ struct davinci_clk {
        }
 
 int davinci_clk_init(struct davinci_clk *clocks);
+
+extern struct platform_device davinci_wdt_device;
+
 #endif
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c
index a31370b..7fdc408 100644
--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -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);
+
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 494e01b..efbbc2a 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -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);
-- 
1.6.2.2


_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to