# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.570   -> 1.571  
#       drivers/usb/serial/io_edgeport.c        1.26    -> 1.27   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/03/28      [EMAIL PROTECTED]  1.571
# USB io_edgeport driver update
# 
# fixes to let io_edgeport work properly as a usb serial console
# --------------------------------------------
#
diff -Nru a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
--- a/drivers/usb/serial/io_edgeport.c  Wed Apr  3 16:39:21 2002
+++ b/drivers/usb/serial/io_edgeport.c  Wed Apr  3 16:39:21 2002
@@ -274,7 +274,7 @@
 /*
  * Version Information
  */
-#define DRIVER_VERSION "v2.2"
+#define DRIVER_VERSION "v2.3"
 #define DRIVER_AUTHOR "Greg Kroah-Hartman <[EMAIL PROTECTED]> and David Iacovelli"
 #define DRIVER_DESC "Edgeport USB Serial Driver"
 
@@ -811,7 +811,8 @@
                                                dbg(__FUNCTION__" - txcredits for 
port%d = %d", portNumber, edge_port->txCredits);
 
                                                /* tell the tty driver that something 
has changed */
-                                               
wake_up_interruptible(&edge_port->port->tty->write_wait);
+                                               if (edge_port->port->tty)
+                                                       
+wake_up_interruptible(&edge_port->port->tty->write_wait);
 
                                                // Since we have more credit, check if 
more data can be sent
                                                send_more_port_data(edge_serial, 
edge_port);
@@ -898,13 +899,15 @@
 
        tty = edge_port->port->tty;
 
-       /* let the tty driver wakeup if it has a special write_wakeup function */
-       if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && tty->ldisc.write_wakeup) {
-               (tty->ldisc.write_wakeup)(tty);
-       }
+       if (tty) {
+               /* let the tty driver wakeup if it has a special write_wakeup function 
+*/
+               if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && 
+tty->ldisc.write_wakeup) {
+                       (tty->ldisc.write_wakeup)(tty);
+               }
 
-       /* tell the tty driver that something has changed */
-       wake_up_interruptible(&tty->write_wait);
+               /* tell the tty driver that something has changed */
+               wake_up_interruptible(&tty->write_wait);
+       }
 
        // Release the Write URB
        edge_port->write_in_progress = FALSE;
@@ -953,7 +956,8 @@
        tty = edge_port->port->tty;
 
        /* tell the tty driver that something has changed */
-       wake_up_interruptible(&tty->write_wait);
+       if (tty)
+               wake_up_interruptible(&tty->write_wait);
 
        /* we have completed the command */
        edge_port->commandPending = FALSE;
@@ -990,7 +994,8 @@
        /* force low_latency on so that our tty_push actually forces the data through, 
           otherwise it is scheduled, and with high data rates (like with OHCI) data
           can get lost. */
-       port->tty->low_latency = 1;
+       if (port->tty)
+               port->tty->low_latency = 1;
 
        /* see if we've set up our endpoint info yet (can't set it up in edge_startup
           as the structures were not set up at that time.) */
@@ -1568,6 +1573,10 @@
        }
 
        tty = port->tty;
+       if (!tty) {
+               dbg ("%s - no tty available", __FUNCTION__);
+               return;
+       }
 
        /* if we are implementing XON/XOFF, send the stop character */
        if (I_IXOFF(tty)) {
@@ -1613,6 +1622,10 @@
        }
 
        tty = port->tty;
+       if (!tty) {
+               dbg ("%s - no tty available", __FUNCTION__);
+               return;
+       }
 
        /* if we are implementing XON/XOFF, send the start character */
        if (I_IXOFF(tty)) {
@@ -1644,15 +1657,14 @@
 {
        struct edgeport_port *edge_port = (struct edgeport_port *)(port->private);
        struct tty_struct *tty = port->tty;
-       unsigned int cflag = tty->termios->c_cflag;
+       unsigned int cflag;
 
-       dbg(__FUNCTION__" - clfag %08x %08x iflag %08x %08x", 
-           tty->termios->c_cflag,
-           old_termios->c_cflag,
-           RELEVANT_IFLAG(tty->termios->c_iflag),
-           RELEVANT_IFLAG(old_termios->c_iflag)
-          );
+       if (!port->tty || !port->tty->termios) {
+               dbg ("%s - no tty or termios", __FUNCTION__);
+               return;
+       }
 
+       cflag = tty->termios->c_cflag;
        /* check that they really want us to change something */
        if (old_termios) {
                if ((cflag == old_termios->c_cflag) &&
@@ -1662,6 +1674,15 @@
                }
        }
 
+       dbg("%s - clfag %08x iflag %08x", __FUNCTION__, 
+           tty->termios->c_cflag,
+           RELEVANT_IFLAG(tty->termios->c_iflag));
+       if (old_termios) {
+               dbg("%s - old clfag %08x old iflag %08x", __FUNCTION__,
+                   old_termios->c_cflag,
+                   RELEVANT_IFLAG(old_termios->c_iflag));
+       }
+
        dbg(__FUNCTION__" - port %d", port->number);
 
        if (edge_port == NULL)
@@ -1709,6 +1730,9 @@
        unsigned int result = 0;
        struct tty_struct *tty = edge_port->port->tty;
 
+       if (!tty)
+               return -ENOIOCTLCMD;
+
        result = tty->read_cnt;
 
        dbg(__FUNCTION__"(%d) = %d",  edge_port->port->number, result);
@@ -2136,7 +2160,8 @@
                handle_new_msr (edge_port, byte2);
 
                /* send the current line settings to the port so we are in sync with 
any further termios calls */
-               change_port_settings (edge_port, edge_port->port->tty->termios);
+               if (edge_port->port->tty)
+                       change_port_settings (edge_port, 
+edge_port->port->tty->termios);
 
                /* we have completed the open */
                edge_port->openPending = FALSE;
@@ -2247,7 +2272,7 @@
        }
 
        /* Place LSR data byte into Rx buffer */
-       if (lsrData) {
+       if (lsrData && edge_port->port->tty) {
                tty_insert_flip_char(edge_port->port->tty, data, 0);
                tty_flip_buffer_push(edge_port->port->tty);
        }

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to