]> err.no Git - linux-2.6/blobdiff - drivers/usb/serial/whiteheat.c
Pull thinkpad-2.6.24 into release branch
[linux-2.6] / drivers / usb / serial / whiteheat.c
index 8fd976d728edfa008fdc5a1861c9c33258875d85..ee5dd8b5a7131b23846d153586686f1163fa7dec 100644 (file)
@@ -885,25 +885,7 @@ static int whiteheat_ioctl (struct usb_serial_port *port, struct file * file, un
 static void whiteheat_set_termios(struct usb_serial_port *port, struct ktermios *old_termios)
 {
        dbg("%s -port %d", __FUNCTION__, port->number);
-
-       if ((!port->tty) || (!port->tty->termios)) {
-               dbg("%s - no tty structures", __FUNCTION__);
-               goto exit;
-       }
-       
-       /* check that they really want us to change something */
-       if (old_termios) {
-               if ((port->tty->termios->c_cflag == old_termios->c_cflag) &&
-                   (port->tty->termios->c_iflag == old_termios->c_iflag)) {
-                       dbg("%s - nothing to change...", __FUNCTION__);
-                       goto exit;
-               }
-       }
-
        firm_setup_port(port);
-
-exit:
-       return;
 }
 
 
@@ -974,10 +956,12 @@ static void whiteheat_unthrottle (struct usb_serial_port *port)
  *****************************************************************************/
 static void command_port_write_callback(struct urb *urb)
 {
+       int status = urb->status;
+
        dbg("%s", __FUNCTION__);
 
-       if (urb->status) {
-               dbg ("nonzero urb status: %d", urb->status);
+       if (status) {
+               dbg("nonzero urb status: %d", status);
                return;
        }
 }
@@ -987,6 +971,7 @@ static void command_port_read_callback(struct urb *urb)
 {
        struct usb_serial_port *command_port = (struct usb_serial_port *)urb->context;
        struct whiteheat_command_private *command_info;
+       int status = urb->status;
        unsigned char *data = urb->transfer_buffer;
        int result;
 
@@ -997,9 +982,9 @@ static void command_port_read_callback(struct urb *urb)
                dbg ("%s - command_info is NULL, exiting.", __FUNCTION__);
                return;
        }
-       if (urb->status) {
-               dbg("%s - nonzero urb status: %d", __FUNCTION__, urb->status);
-               if (urb->status != -ENOENT)
+       if (status) {
+               dbg("%s - nonzero urb status: %d", __FUNCTION__, status);
+               if (status != -ENOENT)
                        command_info->command_finished = WHITEHEAT_CMD_FAILURE;
                wake_up(&command_info->wait_command);
                return;
@@ -1038,6 +1023,7 @@ static void whiteheat_read_callback(struct urb *urb)
        struct whiteheat_urb_wrap *wrap;
        unsigned char *data = urb->transfer_buffer;
        struct whiteheat_private *info = usb_get_serial_port_data(port);
+       int status = urb->status;
 
        dbg("%s - port %d", __FUNCTION__, port->number);
 
@@ -1051,8 +1037,9 @@ static void whiteheat_read_callback(struct urb *urb)
        list_del(&wrap->list);
        spin_unlock(&info->lock);
 
-       if (urb->status) {
-               dbg("%s - nonzero read bulk status received: %d", __FUNCTION__, urb->status);
+       if (status) {
+               dbg("%s - nonzero read bulk status received: %d",
+                   __FUNCTION__, status);
                spin_lock(&info->lock);
                list_add(&wrap->list, &info->rx_urbs_free);
                spin_unlock(&info->lock);
@@ -1079,6 +1066,7 @@ static void whiteheat_write_callback(struct urb *urb)
        struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
        struct whiteheat_private *info = usb_get_serial_port_data(port);
        struct whiteheat_urb_wrap *wrap;
+       int status = urb->status;
 
        dbg("%s - port %d", __FUNCTION__, port->number);
 
@@ -1092,8 +1080,9 @@ static void whiteheat_write_callback(struct urb *urb)
        list_move(&wrap->list, &info->tx_urbs_free);
        spin_unlock(&info->lock);
 
-       if (urb->status) {
-               dbg("%s - nonzero write bulk status received: %d", __FUNCTION__, urb->status);
+       if (status) {
+               dbg("%s - nonzero write bulk status received: %d",
+                   __FUNCTION__, status);
                return;
        }
 
@@ -1246,6 +1235,8 @@ static int firm_setup_port(struct usb_serial_port *port) {
        port_settings.baud = tty_get_baud_rate(port->tty);
        dbg("%s - baud rate = %d", __FUNCTION__, port_settings.baud);
 
+       /* fixme: should set validated settings */
+       tty_encode_baud_rate(port->tty, port_settings.baud, port_settings.baud);
        /* handle any settings that aren't specified in the tty structure */
        port_settings.lloop = 0;