USB: belkin_sa: clean up for new style termios and speed handling, plus style
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Fri, 14 Dec 2007 00:15:26 +0000 (16:15 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 1 Feb 2008 22:34:56 +0000 (14:34 -0800)
A tester with actual hardware would be useful

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/serial/belkin_sa.c

index 86724e885704b01dcfb77d9291d3958690f32932..df0a2b3b02943e76d40a89f832c498eea0e964ca 100644 (file)
@@ -350,14 +350,12 @@ static void belkin_sa_set_termios (struct usb_serial_port *port, struct ktermios
        unsigned long control_state;
        int bad_flow_control;
        speed_t baud;
+       struct ktermios *termios = port->tty->termios;
        
-       if ((!port->tty) || (!port->tty->termios)) {
-               dbg ("%s - no tty or termios structure", __FUNCTION__);
-               return;
-       }
+       iflag = termios->c_iflag;
+       cflag = termios->c_cflag;
 
-       iflag = port->tty->termios->c_iflag;
-       cflag = port->tty->termios->c_cflag;
+       termios->c_cflag &= ~CMSPAR;
 
        /* get a local copy of the current port settings */
        spin_lock_irqsave(&priv->lock, flags);
@@ -369,33 +367,30 @@ static void belkin_sa_set_termios (struct usb_serial_port *port, struct ktermios
        old_cflag = old_termios->c_cflag;
 
        /* Set the baud rate */
-       if( (cflag&CBAUD) != (old_cflag&CBAUD) ) {
+       if ((cflag & CBAUD) != (old_cflag & CBAUD)) {
                /* reassert DTR and (maybe) RTS on transition from B0 */
                if( (old_cflag&CBAUD) == B0 ) {
                        control_state |= (TIOCM_DTR|TIOCM_RTS);
                        if (BSA_USB_CMD(BELKIN_SA_SET_DTR_REQUEST, 1) < 0)
                                err("Set DTR error");
                        /* don't set RTS if using hardware flow control */
-                       if (!(old_cflag&CRTSCTS) )
+                       if (!(old_cflag & CRTSCTS))
                                if (BSA_USB_CMD(BELKIN_SA_SET_RTS_REQUEST, 1) < 0)
                                        err("Set RTS error");
                }
        }
 
        baud = tty_get_baud_rate(port->tty);
-       if (baud == 0) {
-               dbg("%s - tty_get_baud_rate says 0 baud", __FUNCTION__);
-               return;
-       }
-       urb_value = BELKIN_SA_BAUD(baud);
-       /* Clip to maximum speed */
-       if (urb_value == 0)
-               urb_value = 1;
-       /* Turn it back into a resulting real baud rate */
-       baud = BELKIN_SA_BAUD(urb_value);
-       /* FIXME: Once the tty updates are done then push this back to the tty */
-
-       if ((cflag & CBAUD) != B0 ) {
+       if (baud) {
+               urb_value = BELKIN_SA_BAUD(baud);
+               /* Clip to maximum speed */
+               if (urb_value == 0)
+                       urb_value = 1;
+               /* Turn it back into a resulting real baud rate */
+               baud = BELKIN_SA_BAUD(urb_value);
+
+               /* Report the actual baud rate back to the caller */
+               tty_encode_baud_rate(port->tty, baud, baud);
                if (BSA_USB_CMD(BELKIN_SA_SET_BAUDRATE_REQUEST, urb_value) < 0)
                        err("Set baudrate error");
        } else {