V4L/DVB (10337): gspca - common: Simplify the debug macros.
[safe/jmp/linux-2.6] / drivers / usb / serial / console.c
index 7b74238..19e2404 100644 (file)
@@ -117,7 +117,7 @@ static int usb_console_setup(struct console *co, char *options)
        }
 
        port = serial->port[0];
-       port->port.tty = NULL;
+       tty_port_tty_set(&port->port, NULL);
 
        info->port = port;
 
@@ -135,6 +135,7 @@ static int usb_console_setup(struct console *co, char *options)
                                err("no more memory");
                                goto reset_open_count;
                        }
+                       kref_init(&tty->kref);
                        termios = kzalloc(sizeof(*termios), GFP_KERNEL);
                        if (!termios) {
                                retval = -ENOMEM;
@@ -143,7 +144,7 @@ static int usb_console_setup(struct console *co, char *options)
                        }
                        memset(&dummy, 0, sizeof(struct ktermios));
                        tty->termios = termios;
-                       port->port.tty = tty;
+                       tty_port_tty_set(&port->port, tty);
                }
 
                /* only call the device specific open if this
@@ -161,9 +162,9 @@ static int usb_console_setup(struct console *co, char *options)
                if (serial->type->set_termios) {
                        termios->c_cflag = cflag;
                        tty_termios_encode_baud_rate(termios, baud, baud);
-                       serial->type->set_termios(NULL, port, &dummy);
+                       serial->type->set_termios(tty, port, &dummy);
 
-                       port->port.tty = NULL;
+                       tty_port_tty_set(&port->port, NULL);
                        kfree(termios);
                        kfree(tty);
                }
@@ -176,7 +177,7 @@ out:
        return retval;
 free_termios:
        kfree(termios);
-       port->port.tty = NULL;
+       tty_port_tty_set(&port->port, NULL);
 free_tty:
        kfree(tty);
 reset_open_count:
@@ -240,12 +241,25 @@ static void usb_console_write(struct console *co,
        }
 }
 
+static struct tty_driver *usb_console_device(struct console *co, int *index)
+{
+       struct tty_driver **p = (struct tty_driver **)co->data;
+
+       if (!*p)
+               return NULL;
+
+       *index = co->index;
+       return *p;
+}
+
 static struct console usbcons = {
        .name =         "ttyUSB",
        .write =        usb_console_write,
+       .device =       usb_console_device,
        .setup =        usb_console_setup,
        .flags =        CON_PRINTBUFFER,
        .index =        -1,
+       .data =         &usb_serial_tty_driver,
 };
 
 void usb_serial_console_disconnect(struct usb_serial *serial)