From 3fa5a29a343fb985abdf49be9f769705c5ef94cb Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Thu, 7 Sep 2006 11:57:00 +0200 Subject: [PATCH] --- yaml --- r: 40239 b: refs/heads/master c: 089d8139f4c19c2f4d6984323e9d8a6e77cc92f7 h: refs/heads/master i: 40237: fc6cff113df157b86d61b5d5a17845c054e4e6b6 40235: f016dce3cf6fdf7f2785fa2d7a10c7d36c98be30 40231: d940ae4ec49d60c27abb264c01b5013d27401d15 40223: 4fbd5fda9f18f64ec225790a126d66697eb6c94d v: v3 --- [refs] | 2 +- trunk/drivers/char/watchdog/w83697hf_wdt.c | 31 +++++++++++++++------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index a6c913fa0c77..3ba56c138084 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d46ab596e251e35a7e27c95e4e4d01921f3e579e +refs/heads/master: 089d8139f4c19c2f4d6984323e9d8a6e77cc92f7 diff --git a/trunk/drivers/char/watchdog/w83697hf_wdt.c b/trunk/drivers/char/watchdog/w83697hf_wdt.c index b3dcc81abbbc..2b3ce434c196 100644 --- a/trunk/drivers/char/watchdog/w83697hf_wdt.c +++ b/trunk/drivers/char/watchdog/w83697hf_wdt.c @@ -156,31 +156,44 @@ w83697hf_init(void) w83697hf_unselect_wd_register(); } -static void -wdt_ctrl(int timeout) +static int +wdt_ping(void) { spin_lock(&io_lock); - w83697hf_select_wdt(); w83697hf_write_timeout(timeout); w83697hf_deselect_wdt(); - spin_unlock(&io_lock); + return 0; } static int -wdt_ping(void) +wdt_enable(void) { - wdt_ctrl(timeout); + spin_lock(&io_lock); + w83697hf_select_wdt(); + + w83697hf_write_timeout(timeout); + w83697hf_set_reg(0x30, 1); /* Enable timer */ + + w83697hf_deselect_wdt(); + spin_unlock(&io_lock); return 0; } static int wdt_disable(void) { - wdt_ctrl(0); + spin_lock(&io_lock); + w83697hf_select_wdt(); + + w83697hf_set_reg(0x30, 0); /* Disable timer */ + w83697hf_write_timeout(0); + + w83697hf_deselect_wdt(); + spin_unlock(&io_lock); return 0; } @@ -267,7 +280,7 @@ wdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, } if (options & WDIOS_ENABLECARD) { - wdt_ping(); + wdt_enable(); retval = 0; } @@ -289,7 +302,7 @@ wdt_open(struct inode *inode, struct file *file) * Activate */ - wdt_ping(); + wdt_enable(); return nonseekable_open(inode, file); }