From: Lutz Ballaschke <vegan.grindcore@googlemail.com>
To: wim@iguana.be
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] watchdog: add f71862fg support
Date: Mon, 6 Sep 2010 15:24:34 +0200 [thread overview]
Message-ID: <20100906132434.GA17730@kreios.titan> (raw)
From: Lutz Ballaschke <vegan.grindcore@gmail.com>
Fintek Super-I/O f71862fg watchdog support added to f71808e_wdt driver.
Furthermore the WDIOC_GETTIMELEFT ioctl is added to the driver.
Signed-off-by: Lutz Ballaschke <vegan.grindcore@gmail.com>
---
diff -Nurp linux-2.6.36-rc1-orig/drivers/watchdog/f71808e_wdt.c linux-2.6.36-rc1/drivers/watchdog/f71808e_wdt.c
--- linux-2.6.36-rc1-orig/drivers/watchdog/f71808e_wdt.c 2010-08-16 02:41:37.000000000 +0200
+++ linux-2.6.36-rc1/drivers/watchdog/f71808e_wdt.c 2010-09-04 18:52:14.000000000 +0200
@@ -42,6 +42,11 @@
#define SIO_REG_DEVID 0x20 /* Device ID (2 bytes) */
#define SIO_REG_DEVREV 0x22 /* Device revision */
#define SIO_REG_MANID 0x23 /* Fintek ID (2 bytes) */
+#define SIO_REG_ROM_ADDR_SEL 0x27 /* ROM address select */
+#define SIO_REG_MFUNCT1 0x29 /* Multi function select 1 */
+#define SIO_REG_MFUNCT2 0x2a /* Multi function select 2 */
+#define SIO_REG_MFUNCT3 0x2b /* Multi function select 3 */
+#define SIO_REG_MFUNCT4 0x2c /* Multi function select 4 */
#define SIO_REG_ENABLE 0x30 /* Logical device enable */
#define SIO_REG_ADDR 0x60 /* Logical device address (2 bytes) */
@@ -52,8 +57,6 @@
#define SIO_F71882_ID 0x0541 /* Chipset ID */
#define SIO_F71889_ID 0x0723 /* Chipset ID */
-#define F71882FG_REG_START 0x01
-
#define F71808FG_REG_WDO_CONF 0xf0
#define F71808FG_REG_WDT_CONF 0xf5
#define F71808FG_REG_WD_TIME 0xf6
@@ -252,6 +255,24 @@ exit_unlock:
return err;
}
+static int watchdog_time_left(void)
+{
+ int ret = 0;
+
+ mutex_lock(&watchdog.lock);
+ ret = superio_enter(watchdog.sioaddr);
+ if (ret)
+ goto exit_unlock;
+
+ superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT);
+ ret = (int) superio_inb(watchdog.sioaddr, F71808FG_REG_WD_TIME);
+ superio_exit(watchdog.sioaddr);
+
+exit_unlock:
+ mutex_unlock(&watchdog.lock);
+ return ret;
+}
+
static int watchdog_keepalive(void)
{
int err = 0;
@@ -299,13 +320,19 @@ static int watchdog_start(void)
switch (watchdog.type) {
case f71808fg:
/* Set pin 21 to GPIO23/WDTRST#, then to WDTRST# */
- superio_clear_bit(watchdog.sioaddr, 0x2a, 3);
- superio_clear_bit(watchdog.sioaddr, 0x2b, 3);
+ superio_clear_bit(watchdog.sioaddr, SIO_REG_MFUNCT2, 3);
+ superio_clear_bit(watchdog.sioaddr, SIO_REG_MFUNCT3, 3);
break;
case f71882fg:
/* Set pin 56 to WDTRST# */
- superio_set_bit(watchdog.sioaddr, 0x29, 1);
+ superio_set_bit(watchdog.sioaddr, SIO_REG_MFUNCT1, 1);
+ break;
+
+ case f71862fg:
+ /* Set pin 63 to WDTRST# (SPI must be disabled first!) */
+ superio_clear_bit(watchdog.sioaddr, SIO_REG_ROM_ADDR_SEL, 6);
+ superio_set_bit(watchdog.sioaddr, SIO_REG_MFUNCT3, 4);
break;
default:
@@ -549,6 +576,12 @@ static long watchdog_ioctl(struct file *
case WDIOC_GETTIMEOUT:
return put_user(watchdog.timeout, uarg.i);
+ case WDIOC_GETTIMELEFT:
+ status = watchdog_time_left();
+ if (status < 0)
+ return status;
+ return put_user(status, uarg.i);
+
default:
return -ENOTTY;
@@ -709,6 +742,8 @@ static int __init f71808e_find(int sioad
watchdog.type = f71882fg;
break;
case SIO_F71862_ID:
+ watchdog.type = f71862fg;
+ break;
case SIO_F71889_ID:
/* These have a watchdog, though it isn't implemented (yet). */
err = -ENOSYS;
next reply other threads:[~2010-09-06 13:22 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-06 13:24 Lutz Ballaschke [this message]
2010-09-07 13:18 ` Giel van Schijndel
2010-09-10 9:03 ` Wim Van Sebroeck
2010-09-10 23:24 ` Lutz Ballaschke
2010-09-10 23:48 ` Giel van Schijndel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100906132434.GA17730@kreios.titan \
--to=vegan.grindcore@googlemail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=wim@iguana.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®