linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / usb / serial / console.c
index 3a9073d..8023bb7 100644 (file)
  *
  */
 
+#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/tty.h>
 #include <linux/console.h>
 #include <linux/usb.h>
-#include <linux/usb/serial.h>
 
 static int debug;
 
+#include "usb-serial.h"
+
 struct usbcons_info {
        int                     magic;
        int                     break_flag;
@@ -200,7 +202,7 @@ static void usb_console_write(struct console *co, const char *buf, unsigned coun
        struct usb_serial *serial;
        int retval = -ENODEV;
 
-       if (!port || port->serial->dev->state == USB_STATE_NOTATTACHED)
+       if (!port)
                return;
        serial = port->serial;
 
@@ -211,38 +213,17 @@ static void usb_console_write(struct console *co, const char *buf, unsigned coun
 
        if (!port->open_count) {
                dbg ("%s - port not opened", __FUNCTION__);
-               return;
+               goto exit;
        }
 
-       while (count) {
-               unsigned int i;
-               unsigned int lf;
-               /* search for LF so we can insert CR if necessary */
-               for (i=0, lf=0 ; i < count ; i++) {
-                       if (*(buf + i) == 10) {
-                               lf = 1;
-                               i++;
-                               break;
-                       }
-               }
-               /* pass on to the driver specific version of this function if it is available */
-               if (serial->type->write)
-                       retval = serial->type->write(port, buf, i);
-               else
-                       retval = usb_serial_generic_write(port, buf, i);
-               dbg("%s - return value : %d", __FUNCTION__, retval);
-               if (lf) {
-                       /* append CR after LF */
-                       unsigned char cr = 13;
-                       if (serial->type->write)
-                               retval = serial->type->write(port, &cr, 1);
-                       else
-                               retval = usb_serial_generic_write(port, &cr, 1);
-                       dbg("%s - return value : %d", __FUNCTION__, retval);
-               }
-               buf += i;
-               count -= i;
-       }
+       /* pass on to the driver specific version of this function if it is available */
+       if (serial->type->write)
+               retval = serial->type->write(port, buf, count);
+       else
+               retval = usb_serial_generic_write(port, buf, count);
+
+exit:
+       dbg("%s - return value (if we had one): %d", __FUNCTION__, retval);
 }
 
 static struct console usbcons = {
@@ -253,14 +234,6 @@ static struct console usbcons = {
        .index =        -1,
 };
 
-void usb_serial_console_disconnect(struct usb_serial *serial)
-{
-       if (serial && serial->port && serial->port[0] && serial->port[0] == usbcons_info.port) {
-               usb_serial_console_exit();
-               usb_serial_put(serial);
-       }
-}
-
 void usb_serial_console_init (int serial_debug, int minor)
 {
        debug = serial_debug;
@@ -286,11 +259,6 @@ void usb_serial_console_init (int serial_debug, int minor)
 
 void usb_serial_console_exit (void)
 {
-       if (usbcons_info.port) {
-               unregister_console(&usbcons);
-               if (usbcons_info.port->open_count)
-                       usbcons_info.port->open_count--;
-               usbcons_info.port = NULL;
-       }
+       unregister_console(&usbcons);
 }