diff options
Diffstat (limited to 'drivers/usb')
-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 | ||