*
*/
+#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;
struct usb_serial *serial;
int retval = -ENODEV;
- if (!port || port->serial->dev->state == USB_STATE_NOTATTACHED)
+ if (!port)
return;
serial = port->serial;
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 = {
.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;
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);
}