USB: ftdi_sio.c:Fill MSR fields of the ftdi async_icount structure
[linux-2.6.git] / drivers / usb / usb-skeleton.c
index ef8c877..32d6fc9 100644 (file)
@@ -18,7 +18,7 @@
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/kref.h>
-#include <asm/uaccess.h>
+#include <linux/uaccess.h>
 #include <linux/usb.h>
 #include <linux/mutex.h>
 
@@ -28,7 +28,7 @@
 #define USB_SKEL_PRODUCT_ID    0xfff0
 
 /* table of devices that work with this driver */
-static struct usb_device_id skel_table [] = {
+static const struct usb_device_id skel_table[] = {
        { USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID) },
        { }                                     /* Terminating entry */
 };
@@ -94,7 +94,7 @@ static int skel_open(struct inode *inode, struct file *file)
 
        interface = usb_find_interface(&skel_driver, subminor);
        if (!interface) {
-               err ("%s - error, can't find device for minor %d",
+               err("%s - error, can't find device for minor %d",
                     __func__, subminor);
                retval = -ENODEV;
                goto exit;
@@ -142,7 +142,7 @@ static int skel_release(struct inode *inode, struct file *file)
 {
        struct usb_skel *dev;
 
-       dev = (struct usb_skel *)file->private_data;
+       dev = file->private_data;
        if (dev == NULL)
                return -ENODEV;
 
@@ -162,7 +162,7 @@ static int skel_flush(struct file *file, fl_owner_t id)
        struct usb_skel *dev;
        int res;
 
-       dev = (struct usb_skel *)file->private_data;
+       dev = file->private_data;
        if (dev == NULL)
                return -ENODEV;
 
@@ -190,7 +190,7 @@ static void skel_read_bulk_callback(struct urb *urb)
        spin_lock(&dev->err_lock);
        /* sync/async unlink faults aren't errors */
        if (urb->status) {
-               if(!(urb->status == -ENOENT ||
+               if (!(urb->status == -ENOENT ||
                    urb->status == -ECONNRESET ||
                    urb->status == -ESHUTDOWN))
                        err("%s - nonzero write bulk status received: %d",
@@ -239,13 +239,14 @@ static int skel_do_read_io(struct usb_skel *dev, size_t count)
        return rv;
 }
 
-static ssize_t skel_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
+static ssize_t skel_read(struct file *file, char *buffer, size_t count,
+                        loff_t *ppos)
 {
        struct usb_skel *dev;
        int rv;
        bool ongoing_io;
 
-       dev = (struct usb_skel *)file->private_data;
+       dev = file->private_data;
 
        /* if we cannot read at all, return EOF */
        if (!dev->bulk_in_urb || !count)
@@ -299,7 +300,8 @@ retry:
        }
 
        /* errors must be reported */
-       if ((rv = dev->errors) < 0) {
+       rv = dev->errors;
+       if (rv < 0) {
                /* any error is reported once */
                dev->errors = 0;
                /* to preserve notifications about reset */
@@ -356,7 +358,7 @@ retry:
                rv = skel_do_read_io(dev, count);
                if (rv < 0)
                        goto exit;
-               else if (!file->f_flags & O_NONBLOCK)
+               else if (!(file->f_flags & O_NONBLOCK))
                        goto retry;
                rv = -EAGAIN;
        }
@@ -373,7 +375,7 @@ static void skel_write_bulk_callback(struct urb *urb)
 
        /* sync/async unlink faults aren't errors */
        if (urb->status) {
-               if(!(urb->status == -ENOENT ||
+               if (!(urb->status == -ENOENT ||
                    urb->status == -ECONNRESET ||
                    urb->status == -ESHUTDOWN))
                        err("%s - nonzero write bulk status received: %d",
@@ -385,12 +387,13 @@ static void skel_write_bulk_callback(struct urb *urb)
        }
 
        /* free up our allocated buffer */
-       usb_buffer_free(urb->dev, urb->transfer_buffer_length,
-                       urb->transfer_buffer, urb->transfer_dma);
+       usb_free_coherent(urb->dev, urb->transfer_buffer_length,
+                         urb->transfer_buffer, urb->transfer_dma);
        up(&dev->limit_sem);
 }
 
-static ssize_t skel_write(struct file *file, const char *user_buffer, size_t count, loff_t *ppos)
+static ssize_t skel_write(struct file *file, const char *user_buffer,
+                         size_t count, loff_t *ppos)
 {
        struct usb_skel *dev;
        int retval = 0;
@@ -398,14 +401,17 @@ static ssize_t skel_write(struct file *file, const char *user_buffer, size_t cou
        char *buf = NULL;
        size_t writesize = min(count, (size_t)MAX_TRANSFER);
 
-       dev = (struct usb_skel *)file->private_data;
+       dev = file->private_data;
 
        /* verify that we actually have some data to write */
        if (count == 0)
                goto exit;
 
-       /* limit the number of URBs in flight to stop a user from using up all RAM */
-       if (!file->f_flags & O_NONBLOCK) {
+       /*
+        * limit the number of URBs in flight to stop a user from using up all
+        * RAM
+        */
+       if (!(file->f_flags & O_NONBLOCK)) {
                if (down_interruptible(&dev->limit_sem)) {
                        retval = -ERESTARTSYS;
                        goto exit;
@@ -418,7 +424,8 @@ static ssize_t skel_write(struct file *file, const char *user_buffer, size_t cou
        }
 
        spin_lock_irq(&dev->err_lock);
-       if ((retval = dev->errors) < 0) {
+       retval = dev->errors;
+       if (retval < 0) {
                /* any error is reported once */
                dev->errors = 0;
                /* to preserve notifications about reset */
@@ -435,7 +442,8 @@ static ssize_t skel_write(struct file *file, const char *user_buffer, size_t cou
                goto error;
        }
 
-       buf = usb_buffer_alloc(dev->udev, writesize, GFP_KERNEL, &urb->transfer_dma);
+       buf = usb_alloc_coherent(dev->udev, writesize, GFP_KERNEL,
+                                &urb->transfer_dma);
        if (!buf) {
                retval = -ENOMEM;
                goto error;
@@ -465,11 +473,15 @@ static ssize_t skel_write(struct file *file, const char *user_buffer, size_t cou
        retval = usb_submit_urb(urb, GFP_KERNEL);
        mutex_unlock(&dev->io_mutex);
        if (retval) {
-               err("%s - failed submitting write urb, error %d", __func__, retval);
+               err("%s - failed submitting write urb, error %d", __func__,
+                   retval);
                goto error_unanchor;
        }
 
-       /* release our reference to this urb, the USB core will eventually free it entirely */
+       /*
+        * release our reference to this urb, the USB core will eventually free
+        * it entirely
+        */
        usb_free_urb(urb);
 
 
@@ -479,7 +491,7 @@ error_unanchor:
        usb_unanchor_urb(urb);
 error:
        if (urb) {
-               usb_buffer_free(dev->udev, writesize, buf, urb->transfer_dma);
+               usb_free_coherent(dev->udev, writesize, buf, urb->transfer_dma);
                usb_free_urb(urb);
        }
        up(&dev->limit_sem);
@@ -495,6 +507,7 @@ static const struct file_operations skel_fops = {
        .open =         skel_open,
        .release =      skel_release,
        .flush =        skel_flush,
+       .llseek =       noop_llseek,
 };
 
 /*
@@ -507,7 +520,8 @@ static struct usb_class_driver skel_class = {
        .minor_base =   USB_SKEL_MINOR_BASE,
 };
 
-static int skel_probe(struct usb_interface *interface, const struct usb_device_id *id)
+static int skel_probe(struct usb_interface *interface,
+                     const struct usb_device_id *id)
 {
        struct usb_skel *dev;
        struct usb_host_interface *iface_desc;
@@ -541,7 +555,7 @@ static int skel_probe(struct usb_interface *interface, const struct usb_device_i
                if (!dev->bulk_in_endpointAddr &&
                    usb_endpoint_is_bulk_in(endpoint)) {
                        /* we found a bulk in endpoint */
-                       buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
+                       buffer_size = usb_endpoint_maxp(endpoint);
                        dev->bulk_in_size = buffer_size;
                        dev->bulk_in_endpointAddr = endpoint->bEndpointAddress;
                        dev->bulk_in_buffer = kmalloc(buffer_size, GFP_KERNEL);
@@ -636,7 +650,7 @@ static int skel_suspend(struct usb_interface *intf, pm_message_t message)
        return 0;
 }
 
-static int skel_resume (struct usb_interface *intf)
+static int skel_resume(struct usb_interface *intf)
 {
        return 0;
 }