Skip to content

Commit

Permalink
USB: io_ti: clean up termios handling
Browse files Browse the repository at this point in the history
Don't pass NULL into termios functions when calling them internally
Remove all the crap which then checks for NULL which can't occur now
Clear CMSPAR as it is not supported
Report the baud rate back to the caller properly (See FIXME someone with
the docs)

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Alan Cox authored and Greg Kroah-Hartman committed Feb 1, 2008
1 parent 537699e commit d5f5bcd
Showing 1 changed file with 10 additions and 16 deletions.
26 changes: 10 additions & 16 deletions drivers/usb/serial/io_ti.c
Original file line number Diff line number Diff line change
Expand Up @@ -1979,7 +1979,7 @@ static int edge_open (struct usb_serial_port *port, struct file * filp)
}

/* set up the port settings */
edge_set_termios (port, NULL);
edge_set_termios (port, port->tty->termios);

/* open up the port */

Expand Down Expand Up @@ -2394,11 +2394,6 @@ static void change_port_settings (struct edgeport_port *edge_port, struct ktermi
dbg("%s - port %d", __FUNCTION__, edge_port->port->number);

tty = edge_port->port->tty;
if ((!tty) ||
(!tty->termios)) {
dbg("%s - no tty structures", __FUNCTION__);
return;
}

config = kmalloc (sizeof (*config), GFP_KERNEL);
if (!config) {
Expand Down Expand Up @@ -2493,15 +2488,21 @@ static void change_port_settings (struct edgeport_port *edge_port, struct ktermi
}
}

tty->termios->c_cflag &= ~CMSPAR;

/* Round the baud rate */
baud = tty_get_baud_rate(tty);
if (!baud) {
/* pick a default, any default... */
baud = 9600;
}
} else
tty_encode_baud_rate(tty, baud, baud);

edge_port->baud_rate = baud;
config->wBaudRate = (__u16)((461550L + baud/2) / baud);

/* FIXME: Recompute actual baud from divisor here */

dbg ("%s - baud rate = %d, wBaudRate = %d", __FUNCTION__, baud, config->wBaudRate);

dbg ("wBaudRate: %d", (int)(461550L / config->wBaudRate));
Expand Down Expand Up @@ -2539,19 +2540,12 @@ static void edge_set_termios (struct usb_serial_port *port, struct ktermios *old
struct tty_struct *tty = port->tty;
unsigned int cflag;

if (!port->tty || !port->tty->termios) {
dbg ("%s - no tty or termios", __FUNCTION__);
return;
}

cflag = tty->termios->c_cflag;

dbg("%s - clfag %08x iflag %08x", __FUNCTION__,
tty->termios->c_cflag, tty->termios->c_iflag);
if (old_termios) {
dbg("%s - old clfag %08x old iflag %08x", __FUNCTION__,
old_termios->c_cflag, old_termios->c_iflag);
}
dbg("%s - old clfag %08x old iflag %08x", __FUNCTION__,
old_termios->c_cflag, old_termios->c_iflag);

dbg("%s - port %d", __FUNCTION__, port->number);

Expand Down

0 comments on commit d5f5bcd

Please sign in to comment.