Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 82231
b: refs/heads/master
c: e7806e3
h: refs/heads/master
i:
  82229: 347fb4c
  82227: 7c8fcf2
  82223: 68ef93e
v: v3
  • Loading branch information
Alan Cox authored and Greg Kroah-Hartman committed Feb 1, 2008
1 parent 7c8f2af commit 38174a8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3ec466b49636c89866f7681813443c3abcefcbc2
refs/heads/master: e7806e366bcab561a6ecc1a6c4a5337f1714ece1
38 changes: 19 additions & 19 deletions trunk/drivers/usb/serial/keyspan_pda.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ static void keyspan_pda_rx_unthrottle (struct usb_serial_port *port)
}


static int keyspan_pda_setbaud (struct usb_serial *serial, int baud)
static speed_t keyspan_pda_setbaud (struct usb_serial *serial, speed_t baud)
{
int rc;
int bindex;
Expand All @@ -319,7 +319,9 @@ static int keyspan_pda_setbaud (struct usb_serial *serial, int baud)
case 38400: bindex = 7; break;
case 57600: bindex = 8; break;
case 115200: bindex = 9; break;
default: return -EINVAL;
default:
bindex = 5; /* Default to 9600 */
baud = 9600;
}

/* rather than figure out how to sleep while waiting for this
Expand All @@ -334,7 +336,9 @@ static int keyspan_pda_setbaud (struct usb_serial *serial, int baud)
NULL, /* &data */
0, /* size */
2000); /* timeout */
return(rc);
if (rc < 0)
return 0;
return baud;
}


Expand Down Expand Up @@ -366,7 +370,7 @@ static void keyspan_pda_set_termios (struct usb_serial_port *port,
struct ktermios *old_termios)
{
struct usb_serial *serial = port->serial;
unsigned int cflag = port->tty->termios->c_cflag;
speed_t speed;

/* cflag specifies lots of stuff: number of stop bits, parity, number
of data bits, baud. What can the device actually handle?:
Expand All @@ -388,22 +392,18 @@ static void keyspan_pda_set_termios (struct usb_serial_port *port,
For now, just do baud. */

switch (cflag & CBAUD) {
/* we could support more values here, just need to calculate
the necessary divisors in the firmware. <asm/termbits.h>
has the Bnnn constants. */
case B110: keyspan_pda_setbaud(serial, 110); break;
case B300: keyspan_pda_setbaud(serial, 300); break;
case B1200: keyspan_pda_setbaud(serial, 1200); break;
case B2400: keyspan_pda_setbaud(serial, 2400); break;
case B4800: keyspan_pda_setbaud(serial, 4800); break;
case B9600: keyspan_pda_setbaud(serial, 9600); break;
case B19200: keyspan_pda_setbaud(serial, 19200); break;
case B38400: keyspan_pda_setbaud(serial, 38400); break;
case B57600: keyspan_pda_setbaud(serial, 57600); break;
case B115200: keyspan_pda_setbaud(serial, 115200); break;
default: dbg("can't handle requested baud rate"); break;
speed = tty_get_baud_rate(port->tty);
speed = keyspan_pda_setbaud(serial, speed);

if (speed == 0) {
dbg("can't handle requested baud rate");
/* It hasn't changed so.. */
speed = tty_termios_baud_rate(old_termios);
}
/* Only speed can change so copy the old h/w parameters
then encode the new speed */
tty_termios_copy_hw(port->tty->termios, old_termios);
tty_encode_baud_rate(port->tty, speed, speed);
}


Expand Down

0 comments on commit 38174a8

Please sign in to comment.