fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / usb / serial / mct_u232.c
index a61fecf..38b1d17 100644 (file)
@@ -64,7 +64,6 @@
  *   (via linux-usb-devel).
  */
 
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/init.h>
@@ -76,7 +75,7 @@
 #include <linux/spinlock.h>
 #include <asm/uaccess.h>
 #include <linux/usb.h>
-#include "usb-serial.h"
+#include <linux/usb/serial.h>
 #include "mct_u232.h"
 
 /*
@@ -97,9 +96,9 @@ static int  mct_u232_open              (struct usb_serial_port *port,
                                          struct file *filp);
 static void mct_u232_close              (struct usb_serial_port *port,
                                          struct file *filp);
-static void mct_u232_read_int_callback   (struct urb *urb, struct pt_regs *regs);
+static void mct_u232_read_int_callback   (struct urb *urb);
 static void mct_u232_set_termios         (struct usb_serial_port *port,
-                                         struct termios * old);
+                                         struct ktermios * old);
 static int  mct_u232_ioctl              (struct usb_serial_port *port,
                                          struct file * file,
                                          unsigned int cmd,
@@ -125,17 +124,19 @@ static struct usb_device_id id_table_combined [] = {
 MODULE_DEVICE_TABLE (usb, id_table_combined);
 
 static struct usb_driver mct_u232_driver = {
-       .owner =        THIS_MODULE,
        .name =         "mct_u232",
        .probe =        usb_serial_probe,
        .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
+       .no_dynamic_id =        1,
 };
 
-static struct usb_serial_device_type mct_u232_device = {
-       .owner =             THIS_MODULE,
-       .name =              "MCT U232",
-       .short_name =        "mct_u232",
+static struct usb_serial_driver mct_u232_device = {
+       .driver = {
+               .owner =        THIS_MODULE,
+               .name =         "mct_u232",
+       },
+       .description =       "MCT U232",
        .id_table =          id_table_combined,
        .num_interrupt_in =  2,
        .num_bulk_in =       0,
@@ -166,7 +167,7 @@ struct mct_u232_private {
  * Handle vendor specific USB requests
  */
 
-#define WDR_TIMEOUT (HZ * 5 ) /* default urb timeout */
+#define WDR_TIMEOUT 5000 /* default urb timeout */
 
 /*
  * Later day 2.6.0-test kernels have new baud rates like B230400 which
@@ -195,16 +196,16 @@ static int mct_u232_calculate_baud_rate(struct usb_serial *serial, int value)
                }
        } else {
                switch (value) {
-               case    B300: value =     300;
-               case    B600: value =     600;
-               case   B1200: value =    1200;
-               case   B2400: value =    2400;
-               case   B4800: value =    4800;
-               case   B9600: value =    9600;
-               case  B19200: value =   19200;
-               case  B38400: value =   38400;
-               case  B57600: value =   57600;
-               case B115200: value =  115200;
+               case    B300: value =     300; break;
+               case    B600: value =     600; break;
+               case   B1200: value =    1200; break;
+               case   B2400: value =    2400; break;
+               case   B4800: value =    4800; break;
+               case   B9600: value =    9600; break;
+               case  B19200: value =   19200; break;
+               case  B38400: value =   38400; break;
+               case  B57600: value =   57600; break;
+               case B115200: value =  115200; break;
                default:
                        err("MCT USB-RS232: unsupported baudrate request 0x%x,"
                            " using default of B9600", value);
@@ -346,10 +347,9 @@ static int mct_u232_startup (struct usb_serial *serial)
        struct mct_u232_private *priv;
        struct usb_serial_port *port, *rport;
 
-       priv = kmalloc(sizeof(struct mct_u232_private), GFP_KERNEL);
+       priv = kzalloc(sizeof(struct mct_u232_private), GFP_KERNEL);
        if (!priv)
                return -ENOMEM;
-       memset(priv, 0, sizeof(struct mct_u232_private));
        spin_lock_init(&priv->lock);
        usb_set_serial_port_data(serial->port[0], priv);
 
@@ -358,10 +358,8 @@ static int mct_u232_startup (struct usb_serial *serial)
        /* Puh, that's dirty */
        port = serial->port[0];
        rport = serial->port[1];
-       if (port->read_urb) {
-               /* No unlinking, it wasn't submitted yet. */
-               usb_free_urb(port->read_urb);
-       }
+       /* No unlinking, it wasn't submitted yet. */
+       usb_free_urb(port->read_urb);
        port->read_urb = rport->interrupt_in_urb;
        rport->interrupt_in_urb = NULL;
        port->read_urb->context = port;
@@ -466,7 +464,7 @@ static void mct_u232_close (struct usb_serial_port *port, struct file *filp)
 } /* mct_u232_close */
 
 
-static void mct_u232_read_int_callback (struct urb *urb, struct pt_regs *regs)
+static void mct_u232_read_int_callback (struct urb *urb)
 {
        struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
        struct mct_u232_private *priv = usb_get_serial_port_data(port);
@@ -558,7 +556,7 @@ exit:
 } /* mct_u232_read_int_callback */
 
 static void mct_u232_set_termios (struct usb_serial_port *port,
-                                 struct termios *old_termios)
+                                 struct ktermios *old_termios)
 {
        struct usb_serial *serial = port->serial;
        struct mct_u232_private *priv = usb_get_serial_port_data(port);
@@ -646,7 +644,7 @@ static void mct_u232_set_termios (struct usb_serial_port *port,
        else
                new_state &= ~(TIOCM_DTR | TIOCM_RTS);
        if (new_state != control_state) {
-               mct_u232_set_modem_ctrl(serial, control_state);
+               mct_u232_set_modem_ctrl(serial, new_state);
                control_state = new_state;
        }