USB: tty: sort out the request_room handling for whiteheat
[safe/jmp/linux-2.6] / drivers / usb / serial / omninet.c
index 9890f26..89c724c 100644 (file)
@@ -64,19 +64,18 @@ static int debug;
 #define BT_IGNITIONPRO_ID      0x2000
 
 /* function prototypes */
-static int  omninet_open(struct tty_struct *tty, struct usb_serial_port *port,
-                                                       struct file *filp);
-static void omninet_close(struct tty_struct *tty, struct usb_serial_port *port,
-                                                       struct file *filp);
+static int  omninet_open(struct tty_struct *tty, struct usb_serial_port *port);
+static void omninet_close(struct usb_serial_port *port);
 static void omninet_read_bulk_callback(struct urb *urb);
 static void omninet_write_bulk_callback(struct urb *urb);
 static int  omninet_write(struct tty_struct *tty, struct usb_serial_port *port,
                                const unsigned char *buf, int count);
 static int  omninet_write_room(struct tty_struct *tty);
-static void omninet_shutdown(struct usb_serial *serial);
+static void omninet_disconnect(struct usb_serial *serial);
+static void omninet_release(struct usb_serial *serial);
 static int omninet_attach(struct usb_serial *serial);
 
-static struct usb_device_id id_table[] = {
+static const struct usb_device_id id_table[] = {
        { USB_DEVICE(ZYXEL_VENDOR_ID, ZYXEL_OMNINET_ID) },
        { USB_DEVICE(ZYXEL_VENDOR_ID, BT_IGNITIONPRO_ID) },
        { }                                             /* Terminating entry */
@@ -109,7 +108,8 @@ static struct usb_serial_driver zyxel_omninet_device = {
        .write_room =           omninet_write_room,
        .read_bulk_callback =   omninet_read_bulk_callback,
        .write_bulk_callback =  omninet_write_bulk_callback,
-       .shutdown =             omninet_shutdown,
+       .disconnect =           omninet_disconnect,
+       .release =              omninet_release,
 };
 
 
@@ -154,16 +154,15 @@ static int omninet_attach(struct usb_serial *serial)
 
        od = kmalloc(sizeof(struct omninet_data), GFP_KERNEL);
        if (!od) {
-               err("%s- kmalloc(%Zd) failed.",
-                               __func__, sizeof(struct omninet_data));
+               dev_err(&port->dev, "%s- kmalloc(%Zd) failed.\n",
+                       __func__, sizeof(struct omninet_data));
                return -ENOMEM;
        }
        usb_set_serial_port_data(port, od);
        return 0;
 }
 
-static int omninet_open(struct tty_struct *tty,
-                       struct usb_serial_port *port, struct file *filp)
+static int omninet_open(struct tty_struct *tty, struct usb_serial_port *port)
 {
        struct usb_serial       *serial = port->serial;
        struct usb_serial_port  *wport;
@@ -183,13 +182,13 @@ static int omninet_open(struct tty_struct *tty,
                        omninet_read_bulk_callback, port);
        result = usb_submit_urb(port->read_urb, GFP_KERNEL);
        if (result)
-               err("%s - failed submitting read urb, error %d",
-                                                       __func__, result);
+               dev_err(&port->dev,
+                       "%s - failed submitting read urb, error %d\n",
+                       __func__, result);
        return result;
 }
 
-static void omninet_close(struct tty_struct *tty,
-                       struct usb_serial_port *port, struct file *filp)
+static void omninet_close(struct usb_serial_port *port)
 {
        dbg("%s - port %d", __func__, port->number);
        usb_kill_urb(port->read_urb);
@@ -219,8 +218,8 @@ static void omninet_read_bulk_callback(struct urb *urb)
 
        if (debug && header->oh_xxx != 0x30) {
                if (urb->actual_length) {
-                       printk(KERN_DEBUG __FILE__
-                                       ": omninet_read %d: ", header->oh_len);
+                       printk(KERN_DEBUG "%s: omninet_read %d: ",
+                              __FILE__, header->oh_len);
                        for (i = 0; i < (header->oh_len +
                                                OMNINET_HEADERLEN); i++)
                                printk("%.2x ", data[i]);
@@ -244,8 +243,9 @@ static void omninet_read_bulk_callback(struct urb *urb)
                        omninet_read_bulk_callback, port);
        result = usb_submit_urb(urb, GFP_ATOMIC);
        if (result)
-               err("%s - failed resubmitting read urb, error %d",
-                                               __func__, result);
+               dev_err(&port->dev,
+                       "%s - failed resubmitting read urb, error %d\n",
+                       __func__, result);
 
        return;
 }
@@ -298,8 +298,9 @@ static int omninet_write(struct tty_struct *tty, struct usb_serial_port *port,
        result = usb_submit_urb(wport->write_urb, GFP_ATOMIC);
        if (result) {
                wport->write_urb_busy = 0;
-               err("%s - failed submitting write urb, error %d",
-                                                       __func__, result);
+               dev_err(&port->dev,
+                       "%s - failed submitting write urb, error %d\n",
+                       __func__, result);
        } else
                result = count;
 
@@ -331,7 +332,7 @@ static void omninet_write_bulk_callback(struct urb *urb)
        struct usb_serial_port  *port   =  urb->context;
        int status = urb->status;
 
-       dbg("%s - port %0x\n", __func__, port->number);
+       dbg("%s - port %0x", __func__, port->number);
 
        port->write_urb_busy = 0;
        if (status) {
@@ -344,13 +345,22 @@ static void omninet_write_bulk_callback(struct urb *urb)
 }
 
 
-static void omninet_shutdown(struct usb_serial *serial)
+static void omninet_disconnect(struct usb_serial *serial)
 {
        struct usb_serial_port *wport = serial->port[1];
-       struct usb_serial_port *port = serial->port[0];
+
        dbg("%s", __func__);
 
        usb_kill_urb(wport->write_urb);
+}
+
+
+static void omninet_release(struct usb_serial *serial)
+{
+       struct usb_serial_port *port = serial->port[0];
+
+       dbg("%s", __func__);
+
        kfree(usb_get_serial_port_data(port));
 }