]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/usb/serial/ssu100.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / usb / serial / ssu100.c
index f5312dd3331b2b44de0bb1944fb11559e0a5248a..8359ec798959b1612c14eaacf8c474b914f73898 100644 (file)
@@ -79,7 +79,6 @@ struct ssu100_port_private {
        u8 shadowLSR;
        u8 shadowMSR;
        wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
-       unsigned short max_packet_size;
        struct async_icount icount;
 };
 
@@ -464,36 +463,6 @@ static int ssu100_ioctl(struct tty_struct *tty, struct file *file,
        return -ENOIOCTLCMD;
 }
 
-static void ssu100_set_max_packet_size(struct usb_serial_port *port)
-{
-       struct ssu100_port_private *priv = usb_get_serial_port_data(port);
-       struct usb_serial *serial = port->serial;
-       struct usb_device *udev = serial->dev;
-
-       struct usb_interface *interface = serial->interface;
-       struct usb_endpoint_descriptor *ep_desc = &interface->cur_altsetting->endpoint[1].desc;
-
-       unsigned num_endpoints;
-       int i;
-       unsigned long flags;
-
-       num_endpoints = interface->cur_altsetting->desc.bNumEndpoints;
-       dev_info(&udev->dev, "Number of endpoints %d\n", num_endpoints);
-
-       for (i = 0; i < num_endpoints; i++) {
-               dev_info(&udev->dev, "Endpoint %d MaxPacketSize %d\n", i+1,
-                       interface->cur_altsetting->endpoint[i].desc.wMaxPacketSize);
-               ep_desc = &interface->cur_altsetting->endpoint[i].desc;
-       }
-
-       /* set max packet size based on descriptor */
-       spin_lock_irqsave(&priv->status_lock, flags);
-       priv->max_packet_size = ep_desc->wMaxPacketSize;
-       spin_unlock_irqrestore(&priv->status_lock, flags);
-
-       dev_info(&udev->dev, "Setting MaxPacketSize %d\n", priv->max_packet_size);
-}
-
 static int ssu100_attach(struct usb_serial *serial)
 {
        struct ssu100_port_private *priv;
@@ -511,7 +480,6 @@ static int ssu100_attach(struct usb_serial *serial)
        spin_lock_init(&priv->status_lock);
        init_waitqueue_head(&priv->delta_msr_wait);
        usb_set_serial_port_data(port, priv);
-       ssu100_set_max_packet_size(port);
 
        return ssu100_initdevice(serial->dev);
 }
@@ -641,13 +609,14 @@ static void ssu100_update_lsr(struct usb_serial_port *port, u8 lsr,
 
 }
 
-static int ssu100_process_packet(struct tty_struct *tty,
-                                struct usb_serial_port *port,
-                                struct ssu100_port_private *priv,
-                                char *packet, int len)
+static int ssu100_process_packet(struct urb *urb,
+                                struct tty_struct *tty)
 {
-       int i;
+       struct usb_serial_port *port = urb->context;
+       char *packet = (char *)urb->transfer_buffer;
        char flag = TTY_NORMAL;
+       u32 len = urb->actual_length;
+       int i;
        char *ch;
 
        dbg("%s - port %d", __func__, port->number);
@@ -685,12 +654,8 @@ static int ssu100_process_packet(struct tty_struct *tty,
 static void ssu100_process_read_urb(struct urb *urb)
 {
        struct usb_serial_port *port = urb->context;
-       struct ssu100_port_private *priv = usb_get_serial_port_data(port);
-       char *data = (char *)urb->transfer_buffer;
        struct tty_struct *tty;
-       int count = 0;
-       int i;
-       int len;
+       int count;
 
        dbg("%s", __func__);
 
@@ -698,10 +663,7 @@ static void ssu100_process_read_urb(struct urb *urb)
        if (!tty)
                return;
 
-       for (i = 0; i < urb->actual_length; i += priv->max_packet_size) {
-               len = min_t(int, urb->actual_length - i, priv->max_packet_size);
-               count += ssu100_process_packet(tty, port, priv, &data[i], len);
-       }
+       count = ssu100_process_packet(urb, tty);
 
        if (count)
                tty_flip_buffer_push(tty);
@@ -717,8 +679,6 @@ static struct usb_serial_driver ssu100_device = {
        .id_table            = id_table,
        .usb_driver          = &ssu100_driver,
        .num_ports           = 1,
-       .bulk_in_size        = 256,
-       .bulk_out_size       = 256,
        .open                = ssu100_open,
        .close               = ssu100_close,
        .attach              = ssu100_attach,