video: tegra: dc: Add quick for Vizio P series
[linux-3.10.git] / drivers / watchdog / smsc37b787_wdt.c
index 239383d..6d665f9 100644 (file)
@@ -1,8 +1,8 @@
 /*
  *     SMsC 37B787 Watchdog Timer driver for Linux 2.6.x.x
  *
- *      Based on acquirewdt.c by Alan Cox <alan@redhat.com>
- *       and some other existing drivers
+ *     Based on acquirewdt.c by Alan Cox <alan@lxorguk.ukuu.org.uk>
+ *     and some other existing drivers
  *
  *     This program is free software; you can redistribute it and/or
  *     modify it under the terms of the GNU General Public License
@@ -11,7 +11,7 @@
  *
  *     The authors do NOT admit liability nor provide warranty for
  *     any of this software. This material is provided "AS-IS" in
- *      the hope that it may be useful for others.
+ *     the hope that it may be useful for others.
  *
  *     (C) Copyright 2003-2006  Sven Anders <anders@anduras.de>
  *
  *
  *  Theory of operation:
  *
- *      A Watchdog Timer (WDT) is a hardware circuit that can
- *      reset the computer system in case of a software fault.
- *      You probably knew that already.
+ *     A Watchdog Timer (WDT) is a hardware circuit that can
+ *     reset the computer system in case of a software fault.
+ *     You probably knew that already.
  *
- *      Usually a userspace daemon will notify the kernel WDT driver
- *      via the /dev/watchdog special device file that userspace is
- *      still alive, at regular intervals.  When such a notification
- *      occurs, the driver will usually tell the hardware watchdog
- *      that everything is in order, and that the watchdog should wait
- *      for yet another little while to reset the system.
- *      If userspace fails (RAM error, kernel bug, whatever), the
- *      notifications cease to occur, and the hardware watchdog will
- *      reset the system (causing a reboot) after the timeout occurs.
+ *     Usually a userspace daemon will notify the kernel WDT driver
+ *     via the /dev/watchdog special device file that userspace is
+ *     still alive, at regular intervals.  When such a notification
+ *     occurs, the driver will usually tell the hardware watchdog
+ *     that everything is in order, and that the watchdog should wait
+ *     for yet another little while to reset the system.
+ *     If userspace fails (RAM error, kernel bug, whatever), the
+ *     notifications cease to occur, and the hardware watchdog will
+ *     reset the system (causing a reboot) after the timeout occurs.
  *
  * Create device with:
  *  mknod /dev/watchdog c 10 130
  *
  * For an example userspace keep-alive daemon, see:
- *   Documentation/watchdog/watchdog.txt
+ *   Documentation/watchdog/wdt.txt
  */
 
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/types.h>
@@ -58,7 +60,6 @@
 #include <linux/io.h>
 #include <linux/uaccess.h>
 
-#include <asm/system.h>
 
 /* enable support for minutes as units? */
 /* (does not always work correctly, so disabled by default!) */
@@ -70,7 +71,6 @@
 #define UNIT_SECOND     0
 #define UNIT_MINUTE     1
 
-#define MODNAME                "smsc37b787_wdt: "
 #define VERSION                "1.1"
 
 #define IOPORT         0x3F0
@@ -85,7 +85,7 @@ static char expect_close;       /* is the close expected? */
 
 static DEFINE_SPINLOCK(io_lock);/* to guard the watchdog from io races */
 
-static int nowayout = WATCHDOG_NOWAYOUT;
+static bool nowayout = WATCHDOG_NOWAYOUT;
 
 /* -- Low level function ----------------------------------------*/
 
@@ -191,7 +191,7 @@ static inline void wdt_timer_conf(unsigned char conf)
 static inline void wdt_timer_ctrl(unsigned char reg)
 {
        /* -- Watchdog timer control --
-        * Bit 0   Status Bit: 0 = Timer counting, 1 = Timeout occured
+        * Bit 0   Status Bit: 0 = Timer counting, 1 = Timeout occurred
         * Bit 1   Power LED Toggle: 0 = Disable Toggle, 1 = Toggle at 1 Hz
         * Bit 2   Force Timeout: 1 = Forces WD timeout event (self-cleaning)
         * Bit 3   P20 Force Timeout enabled:
@@ -363,8 +363,7 @@ static int wb_smsc_wdt_open(struct inode *inode, struct file *file)
        /* Reload and activate timer */
        wb_smsc_wdt_enable();
 
-       printk(KERN_INFO MODNAME
-               "Watchdog enabled. Timeout set to %d %s.\n",
+       pr_info("Watchdog enabled. Timeout set to %d %s\n",
                timeout, (unit == UNIT_SECOND) ? "second(s)" : "minute(s)");
 
        return nonseekable_open(inode, file);
@@ -378,11 +377,9 @@ static int wb_smsc_wdt_release(struct inode *inode, struct file *file)
 
        if (expect_close == 42) {
                wb_smsc_wdt_disable();
-               printk(KERN_INFO MODNAME
-                               "Watchdog disabled, sleeping again...\n");
+               pr_info("Watchdog disabled, sleeping again...\n");
        } else {
-               printk(KERN_CRIT MODNAME
-                               "Unexpected close, not stopping watchdog!\n");
+               pr_crit("Unexpected close, not stopping watchdog!\n");
                wb_smsc_wdt_reset_timer();
        }
 
@@ -408,7 +405,7 @@ static ssize_t wb_smsc_wdt_write(struct file *file, const char __user *data,
                           magic character */
                        for (i = 0; i != len; i++) {
                                char c;
-                               if (get_user(c, data+i))
+                               if (get_user(c, data + i))
                                        return -EFAULT;
                                if (c == 'V')
                                        expect_close = 42;
@@ -434,11 +431,11 @@ static long wb_smsc_wdt_ioctl(struct file *file,
        } uarg;
 
        static const struct watchdog_info ident = {
-               .options =              WDIOF_KEEPALIVEPING |
+               .options =              WDIOF_KEEPALIVEPING |
                                        WDIOF_SETTIMEOUT |
                                        WDIOF_MAGICCLOSE,
                .firmware_version =     0,
-               .identity =             "SMsC 37B787 Watchdog"
+               .identity =             "SMsC 37B787 Watchdog",
        };
 
        uarg.i = (int __user *)arg;
@@ -485,7 +482,7 @@ static long wb_smsc_wdt_ioctl(struct file *file,
        case WDIOC_GETTIMEOUT:
                new_timeout = timeout;
                if (unit == UNIT_MINUTE)
-                         new_timeout *= 60;
+                       new_timeout *= 60;
                return put_user(new_timeout, uarg.i);
        default:
                return -ENOTTY;
@@ -534,12 +531,11 @@ static int __init wb_smsc_wdt_init(void)
 {
        int ret;
 
-       printk(KERN_INFO "SMsC 37B787 watchdog component driver "
-                                       VERSION " initialising...\n");
+       pr_info("SMsC 37B787 watchdog component driver "
+               VERSION " initialising...\n");
 
        if (!request_region(IOPORT, IOPORT_SIZE, "SMsC 37B787 watchdog")) {
-               printk(KERN_ERR MODNAME "Unable to register IO port %#x\n",
-                                                               IOPORT);
+               pr_err("Unable to register IO port %#x\n", IOPORT);
                ret = -EBUSY;
                goto out_pnp;
        }
@@ -553,25 +549,22 @@ static int __init wb_smsc_wdt_init(void)
 
        ret = register_reboot_notifier(&wb_smsc_wdt_notifier);
        if (ret) {
-               printk(KERN_ERR MODNAME
-                       "Unable to register reboot notifier err = %d\n", ret);
+               pr_err("Unable to register reboot notifier err = %d\n", ret);
                goto out_io;
        }
 
        ret = misc_register(&wb_smsc_wdt_miscdev);
        if (ret) {
-               printk(KERN_ERR MODNAME
-                       "Unable to register miscdev on minor %d\n",
-                                                       WATCHDOG_MINOR);
+               pr_err("Unable to register miscdev on minor %d\n",
+                      WATCHDOG_MINOR);
                goto out_rbt;
        }
 
        /* output info */
-       printk(KERN_INFO MODNAME "Timeout set to %d %s.\n",
+       pr_info("Timeout set to %d %s\n",
                timeout, (unit == UNIT_SECOND) ? "second(s)" : "minute(s)");
-       printk(KERN_INFO MODNAME
-               "Watchdog initialized and sleeping (nowayout=%d)...\n",
-                                                               nowayout);
+       pr_info("Watchdog initialized and sleeping (nowayout=%d)...\n",
+               nowayout);
 out_clean:
        return ret;
 
@@ -592,14 +585,14 @@ static void __exit wb_smsc_wdt_exit(void)
        /* Stop the timer before we leave */
        if (!nowayout) {
                wb_smsc_wdt_shutdown();
-               printk(KERN_INFO MODNAME "Watchdog disabled.\n");
+               pr_info("Watchdog disabled\n");
        }
 
        misc_deregister(&wb_smsc_wdt_miscdev);
        unregister_reboot_notifier(&wb_smsc_wdt_notifier);
        release_region(IOPORT, IOPORT_SIZE);
 
-       printk(KERN_INFO "SMsC 37B787 watchdog component driver removed.\n");
+       pr_info("SMsC 37B787 watchdog component driver removed\n");
 }
 
 module_init(wb_smsc_wdt_init);
@@ -621,7 +614,7 @@ MODULE_PARM_DESC(unit,
 module_param(timeout, int, 0);
 MODULE_PARM_DESC(timeout, "range is 1-255 units, default is 60");
 
-module_param(nowayout, int, 0);
+module_param(nowayout, bool, 0);
 MODULE_PARM_DESC(nowayout,
                "Watchdog cannot be stopped once started (default="
                                __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");