]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/watchdog/pcwd_usb.c
[PATCH] Switch all my contributions stuff to a single common address
[linux-2.6-omap-h63xx.git] / drivers / watchdog / pcwd_usb.c
index bf443d077a1ea40b9b907b27055f50e7fd56a464..afb089695da84222370f9c23c3a7fff841ef8132 100644 (file)
@@ -5,7 +5,7 @@
  *
  *     Based on source code of the following authors:
  *       Ken Hollis <kenji@bitgate.com>,
- *       Alan Cox <alan@redhat.com>,
+ *       Alan Cox <alan@lxorguk.ukuu.org.uk>,
  *       Matt Domsch <Matt_Domsch@dell.com>,
  *       Rob Radez <rob@osinvestor.com>,
  *       Greg Kroah-Hartman <greg@kroah.com>
@@ -40,8 +40,7 @@
 #include <linux/slab.h>                /* For kmalloc, ... */
 #include <linux/mutex.h>       /* For mutex locking */
 #include <linux/hid.h>         /* For HID_REQ_SET_REPORT & HID_DT_REPORT */
-
-#include <asm/uaccess.h>       /* For copy_to_user/put_user/... */
+#include <linux/uaccess.h>     /* For copy_to_user/put_user/... */
 
 
 #ifdef CONFIG_USB_DEBUG
@@ -88,7 +87,7 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" _
 #define USB_PCWD_PRODUCT_ID    0x1140
 
 /* table of devices that work with this driver */
-static struct usb_device_id usb_pcwd_table [] = {
+static struct usb_device_id usb_pcwd_table[] = {
        { USB_DEVICE(USB_PCWD_VENDOR_ID, USB_PCWD_PRODUCT_ID) },
        { }                                     /* Terminating entry */
 };
@@ -110,7 +109,7 @@ MODULE_DEVICE_TABLE (usb, usb_pcwd_table);
 #define CMD_DISABLE_WATCHDOG           CMD_ENABLE_WATCHDOG
 
 /* Watchdog's Dip Switch heartbeat values */
-static const int heartbeat_tbl [] = {
+static const int heartbeat_tbl[] = {
        5,      /* OFF-OFF-OFF  =  5 Sec  */
        10,     /* OFF-OFF-ON   = 10 Sec  */
        30,     /* OFF-ON-OFF   = 30 Sec  */
@@ -130,15 +129,15 @@ static char expect_release;
 
 /* Structure to hold all of our device specific stuff */
 struct usb_pcwd_private {
-       struct usb_device *     udev;                   /* save off the usb device pointer */
-       struct usb_interface *  interface;              /* the interface for this device */
+       struct usb_device       *udev;                  /* save off the usb device pointer */
+       struct usb_interface    *interface;             /* the interface for this device */
 
        unsigned int            interface_number;       /* the interface number used for cmd's */
 
-       unsigned char *         intr_buffer;            /* the buffer to intr data */
+       unsigned char           *intr_buffer;           /* the buffer to intr data */
        dma_addr_t              intr_dma;               /* the dma address for the intr buffer */
        size_t                  intr_size;              /* the size of the intr buffer */
-       struct urb *            intr_urb;               /* the urb used for the intr pipe */
+       struct urb              *intr_urb;              /* the urb used for the intr pipe */
 
        unsigned char           cmd_command;            /* The command that is reported back */
        unsigned char           cmd_data_msb;           /* The data MSB that is reported back */
@@ -154,8 +153,8 @@ static struct usb_pcwd_private *usb_pcwd_device;
 static DEFINE_MUTEX(disconnect_mutex);
 
 /* local function prototypes */
-static int usb_pcwd_probe      (struct usb_interface *interface, const struct usb_device_id *id);
-static void usb_pcwd_disconnect        (struct usb_interface *interface);
+static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_device_id *id);
+static void usb_pcwd_disconnect(struct usb_interface *interface);
 
 /* usb specific object needed to register this driver with the usb subsystem */
 static struct usb_driver usb_pcwd_driver = {
@@ -195,10 +194,10 @@ static void usb_pcwd_intr_done(struct urb *urb)
        usb_pcwd->cmd_data_lsb = data[2];
 
        /* notify anyone waiting that the cmd has finished */
-       atomic_set (&usb_pcwd->cmd_received, 1);
+       atomic_set(&usb_pcwd->cmd_received, 1);
 
 resubmit:
-       retval = usb_submit_urb (urb, GFP_ATOMIC);
+       retval = usb_submit_urb(urb, GFP_ATOMIC);
        if (retval)
                printk(KERN_ERR PFX "can't resubmit intr, usb_submit_urb failed with result %d\n",
                        retval);
@@ -224,7 +223,7 @@ static int usb_pcwd_send_command(struct usb_pcwd_private *usb_pcwd, unsigned cha
        dbg("sending following data cmd=0x%02x msb=0x%02x lsb=0x%02x",
                buf[0], buf[1], buf[2]);
 
-       atomic_set (&usb_pcwd->cmd_received, 0);
+       atomic_set(&usb_pcwd->cmd_received, 0);
 
        if (usb_control_msg(usb_pcwd->udev, usb_sndctrlpipe(usb_pcwd->udev, 0),
                        HID_REQ_SET_REPORT, HID_DT_REPORT,
@@ -237,7 +236,7 @@ static int usb_pcwd_send_command(struct usb_pcwd_private *usb_pcwd, unsigned cha
        got_response = 0;
        for (count = 0; (count < USB_COMMAND_TIMEOUT) && (!got_response); count++) {
                mdelay(1);
-               if (atomic_read (&usb_pcwd->cmd_received))
+               if (atomic_read(&usb_pcwd->cmd_received))
                        got_response = 1;
        }
 
@@ -356,7 +355,7 @@ static ssize_t usb_pcwd_write(struct file *file, const char __user *data,
                        /* scan to see whether or not we got the 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_release = 42;
@@ -369,8 +368,8 @@ static ssize_t usb_pcwd_write(struct file *file, const char __user *data,
        return len;
 }
 
-static int usb_pcwd_ioctl(struct inode *inode, struct file *file,
-                         unsigned int cmd, unsigned long arg)
+static long usb_pcwd_ioctl(struct file *file, unsigned int cmd,
+                                               unsigned long arg)
 {
        void __user *argp = (void __user *)arg;
        int __user *p = argp;
@@ -383,77 +382,76 @@ static int usb_pcwd_ioctl(struct inode *inode, struct file *file,
        };
 
        switch (cmd) {
-               case WDIOC_GETSUPPORT:
-                       return copy_to_user(argp, &ident,
-                               sizeof (ident)) ? -EFAULT : 0;
+       case WDIOC_GETSUPPORT:
+               return copy_to_user(argp, &ident, sizeof(ident)) ? -EFAULT : 0;
 
-               case WDIOC_GETSTATUS:
-               case WDIOC_GETBOOTSTATUS:
-                       return put_user(0, p);
+       case WDIOC_GETSTATUS:
+       case WDIOC_GETBOOTSTATUS:
+               return put_user(0, p);
 
-               case WDIOC_GETTEMP:
-               {
-                       int temperature;
+       case WDIOC_GETTEMP:
+       {
+               int temperature;
 
-                       if (usb_pcwd_get_temperature(usb_pcwd_device, &temperature))
-                               return -EFAULT;
+               if (usb_pcwd_get_temperature(usb_pcwd_device, &temperature))
+                       return -EFAULT;
 
-                       return put_user(temperature, p);
-               }
+               return put_user(temperature, p);
+       }
 
-               case WDIOC_KEEPALIVE:
-                       usb_pcwd_keepalive(usb_pcwd_device);
-                       return 0;
+       case WDIOC_SETOPTIONS:
+       {
+               int new_options, retval = -EINVAL;
 
-               case WDIOC_SETOPTIONS:
-               {
-                       int new_options, retval = -EINVAL;
+               if (get_user(new_options, p))
+                       return -EFAULT;
 
-                       if (get_user (new_options, p))
-                               return -EFAULT;
+               if (new_options & WDIOS_DISABLECARD) {
+                       usb_pcwd_stop(usb_pcwd_device);
+                       retval = 0;
+               }
 
-                       if (new_options & WDIOS_DISABLECARD) {
-                               usb_pcwd_stop(usb_pcwd_device);
-                               retval = 0;
-                       }
+               if (new_options & WDIOS_ENABLECARD) {
+                       usb_pcwd_start(usb_pcwd_device);
+                       retval = 0;
+               }
 
-                       if (new_options & WDIOS_ENABLECARD) {
-                               usb_pcwd_start(usb_pcwd_device);
-                               retval = 0;
-                       }
+               return retval;
+       }
 
-                       return retval;
-               }
+       case WDIOC_KEEPALIVE:
+               usb_pcwd_keepalive(usb_pcwd_device);
+               return 0;
 
-               case WDIOC_SETTIMEOUT:
-               {
-                       int new_heartbeat;
+       case WDIOC_SETTIMEOUT:
+       {
+               int new_heartbeat;
 
-                       if (get_user(new_heartbeat, p))
-                               return -EFAULT;
+               if (get_user(new_heartbeat, p))
+                       return -EFAULT;
 
-                       if (usb_pcwd_set_heartbeat(usb_pcwd_device, new_heartbeat))
-                           return -EINVAL;
+               if (usb_pcwd_set_heartbeat(usb_pcwd_device, new_heartbeat))
+                   return -EINVAL;
 
-                       usb_pcwd_keepalive(usb_pcwd_device);
-                       /* Fall */
-               }
+               usb_pcwd_keepalive(usb_pcwd_device);
+               /* Fall */
+       }
 
-               case WDIOC_GETTIMEOUT:
-                       return put_user(heartbeat, p);
+       case WDIOC_GETTIMEOUT:
+               return put_user(heartbeat, p);
 
-               case WDIOC_GETTIMELEFT:
-               {
-                       int time_left;
+       case WDIOC_GETTIMELEFT:
+       {
+               int time_left;
 
-                       if (usb_pcwd_get_timeleft(usb_pcwd_device, &time_left))
-                               return -EFAULT;
+               if (usb_pcwd_get_timeleft(usb_pcwd_device, &time_left))
+                       return -EFAULT;
 
-                       return put_user(time_left, p);
-               }
+               return put_user(time_left, p);
+       }
 
-               default:
-                       return -ENOTTY;
+       default:
+               return -ENOTTY;
        }
 }
 
@@ -519,10 +517,8 @@ static int usb_pcwd_temperature_release(struct inode *inode, struct file *file)
 
 static int usb_pcwd_notify_sys(struct notifier_block *this, unsigned long code, void *unused)
 {
-       if (code==SYS_DOWN || code==SYS_HALT) {
-               /* Turn the WDT off */
-               usb_pcwd_stop(usb_pcwd_device);
-       }
+       if (code == SYS_DOWN || code == SYS_HALT)
+               usb_pcwd_stop(usb_pcwd_device); /* Turn the WDT off */
 
        return NOTIFY_DONE;
 }
@@ -535,7 +531,7 @@ static const struct file_operations usb_pcwd_fops = {
        .owner =        THIS_MODULE,
        .llseek =       no_llseek,
        .write =        usb_pcwd_write,
-       .ioctl =        usb_pcwd_ioctl,
+       .unlocked_ioctl = usb_pcwd_ioctl,
        .open =         usb_pcwd_open,
        .release =      usb_pcwd_release,
 };
@@ -567,13 +563,13 @@ static struct notifier_block usb_pcwd_notifier = {
 /**
  *     usb_pcwd_delete
  */
-static inline void usb_pcwd_delete (struct usb_pcwd_private *usb_pcwd)
+static inline void usb_pcwd_delete(struct usb_pcwd_private *usb_pcwd)
 {
        usb_free_urb(usb_pcwd->intr_urb);
        if (usb_pcwd->intr_buffer != NULL)
                usb_buffer_free(usb_pcwd->udev, usb_pcwd->intr_size,
                                usb_pcwd->intr_buffer, usb_pcwd->intr_dma);
-       kfree (usb_pcwd);
+       kfree(usb_pcwd);
 }
 
 /**
@@ -626,7 +622,7 @@ static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_devi
        maxp = usb_maxpacket(udev, pipe, usb_pipeout(pipe));
 
        /* allocate memory for our device and initialize it */
-       usb_pcwd = kzalloc (sizeof(struct usb_pcwd_private), GFP_KERNEL);
+       usb_pcwd = kzalloc(sizeof(struct usb_pcwd_private), GFP_KERNEL);
        if (usb_pcwd == NULL) {
                printk(KERN_ERR PFX "Out of memory\n");
                goto error;
@@ -641,7 +637,8 @@ static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_devi
        usb_pcwd->intr_size = (le16_to_cpu(endpoint->wMaxPacketSize) > 8 ? le16_to_cpu(endpoint->wMaxPacketSize) : 8);
 
        /* set up the memory buffer's */
-       if (!(usb_pcwd->intr_buffer = usb_buffer_alloc(udev, usb_pcwd->intr_size, GFP_ATOMIC, &usb_pcwd->intr_dma))) {
+       usb_pcwd->intr_buffer = usb_buffer_alloc(udev, usb_pcwd->intr_size, GFP_ATOMIC, &usb_pcwd->intr_dma);
+       if (!usb_pcwd->intr_buffer) {
                printk(KERN_ERR PFX "Out of memory\n");
                goto error;
        }
@@ -675,11 +672,10 @@ static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_devi
 
        /* Get the Firmware Version */
        got_fw_rev = usb_pcwd_send_command(usb_pcwd, CMD_GET_FIRMWARE_VERSION, &fw_rev_major, &fw_rev_minor);
-       if (got_fw_rev) {
+       if (got_fw_rev)
                sprintf(fw_ver_str, "%u.%02u", fw_rev_major, fw_rev_minor);
-       } else {
+       else
                sprintf(fw_ver_str, "<card no answer>");
-       }
 
        printk(KERN_INFO PFX "Found card (Firmware: %s) with temp option\n",
                fw_ver_str);
@@ -725,7 +721,7 @@ static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_devi
        }
 
        /* we can register the device now, as it is ready */
-       usb_set_intfdata (interface, usb_pcwd);
+       usb_set_intfdata(interface, usb_pcwd);
 
        printk(KERN_INFO PFX "initialized. heartbeat=%d sec (nowayout=%d)\n",
                heartbeat, nowayout);
@@ -759,8 +755,8 @@ static void usb_pcwd_disconnect(struct usb_interface *interface)
        /* prevent races with open() */
        mutex_lock(&disconnect_mutex);
 
-       usb_pcwd = usb_get_intfdata (interface);
-       usb_set_intfdata (interface, NULL);
+       usb_pcwd = usb_get_intfdata(interface);
+       usb_set_intfdata(interface, NULL);
 
        mutex_lock(&usb_pcwd->mtx);
 
@@ -820,5 +816,5 @@ static void __exit usb_pcwd_exit(void)
 }
 
 
-module_init (usb_pcwd_init);
-module_exit (usb_pcwd_exit);
+module_init(usb_pcwd_init);
+module_exit(usb_pcwd_exit);