diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/usb/serial/cp2101.c | 69 |
1 files changed, 27 insertions, 42 deletions
diff --git a/drivers/usb/serial/cp2101.c b/drivers/usb/serial/cp2101.c index e831cb7f64fd..33f6ee50b8d3 100644 --- a/drivers/usb/serial/cp2101.c +++ b/drivers/usb/serial/cp2101.c | |||
| @@ -356,7 +356,7 @@ static void cp2101_get_termios (struct usb_serial_port *port) | |||
| 356 | 356 | ||
| 357 | dbg("%s - port %d", __FUNCTION__, port->number); | 357 | dbg("%s - port %d", __FUNCTION__, port->number); |
| 358 | 358 | ||
| 359 | if ((!port->tty) || (!port->tty->termios)) { | 359 | if (!port->tty || !port->tty->termios) { |
| 360 | dbg("%s - no tty structures", __FUNCTION__); | 360 | dbg("%s - no tty structures", __FUNCTION__); |
| 361 | return; | 361 | return; |
| 362 | } | 362 | } |
| @@ -526,50 +526,35 @@ static void cp2101_set_termios (struct usb_serial_port *port, | |||
| 526 | return; | 526 | return; |
| 527 | } | 527 | } |
| 528 | cflag = port->tty->termios->c_cflag; | 528 | cflag = port->tty->termios->c_cflag; |
| 529 | 529 | old_cflag = old_termios->c_cflag; | |
| 530 | /* Check that they really want us to change something */ | 530 | baud = tty_get_baud_rate(port->tty); |
| 531 | if (old_termios) { | ||
| 532 | if ((cflag == old_termios->c_cflag) && | ||
| 533 | (RELEVANT_IFLAG(port->tty->termios->c_iflag) | ||
| 534 | == RELEVANT_IFLAG(old_termios->c_iflag))) { | ||
| 535 | dbg("%s - nothing to change...", __FUNCTION__); | ||
| 536 | return; | ||
| 537 | } | ||
| 538 | |||
| 539 | old_cflag = old_termios->c_cflag; | ||
| 540 | } | ||
| 541 | 531 | ||
| 542 | /* If the baud rate is to be updated*/ | 532 | /* If the baud rate is to be updated*/ |
| 543 | if ((cflag & CBAUD) != (old_cflag & CBAUD)) { | 533 | if (baud != tty_termios_baud_rate(old_termios)) { |
| 544 | switch (cflag & CBAUD) { | 534 | switch (baud) { |
| 545 | /* | 535 | case 0: |
| 546 | * The baud rates which are commented out below | 536 | case 600: |
| 547 | * appear to be supported by the device | 537 | case 1200: |
| 548 | * but are non-standard | 538 | case 1800: |
| 549 | */ | 539 | case 2400: |
| 550 | case B0: baud = 0; break; | 540 | case 4800: |
| 551 | case B600: baud = 600; break; | 541 | case 7200: |
| 552 | case B1200: baud = 1200; break; | 542 | case 9600: |
| 553 | case B1800: baud = 1800; break; | 543 | case 14400: |
| 554 | case B2400: baud = 2400; break; | 544 | case 19200: |
| 555 | case B4800: baud = 4800; break; | 545 | case 28800: |
| 556 | /*case B7200: baud = 7200; break;*/ | 546 | case 38400: |
| 557 | case B9600: baud = 9600; break; | 547 | case 55854: |
| 558 | /*ase B14400: baud = 14400; break;*/ | 548 | case 57600: |
| 559 | case B19200: baud = 19200; break; | 549 | case 115200: |
| 560 | /*case B28800: baud = 28800; break;*/ | 550 | case 127117: |
| 561 | case B38400: baud = 38400; break; | 551 | case 230400: |
| 562 | /*case B55854: baud = 55054; break;*/ | 552 | case 460800: |
| 563 | case B57600: baud = 57600; break; | 553 | case 921600: |
| 564 | case B115200: baud = 115200; break; | 554 | case 3686400: |
| 565 | /*case B127117: baud = 127117; break;*/ | 555 | break; |
| 566 | case B230400: baud = 230400; break; | ||
| 567 | case B460800: baud = 460800; break; | ||
| 568 | case B921600: baud = 921600; break; | ||
| 569 | /*case B3686400: baud = 3686400; break;*/ | ||
| 570 | default: | 556 | default: |
| 571 | dev_err(&port->dev, "cp2101 driver does not " | 557 | baud = 9600; |
| 572 | "support the baudrate requested\n"); | ||
| 573 | break; | 558 | break; |
| 574 | } | 559 | } |
| 575 | 560 | ||
