diff options
Diffstat (limited to 'drivers/char/mxser_new.c')
| -rw-r--r-- | drivers/char/mxser_new.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/char/mxser_new.c b/drivers/char/mxser_new.c index a4358acb1b2b..f74734b3407b 100644 --- a/drivers/char/mxser_new.c +++ b/drivers/char/mxser_new.c | |||
| @@ -452,18 +452,17 @@ static int mxser_block_til_ready(struct tty_struct *tty, struct file *filp, | |||
| 452 | static int mxser_set_baud(struct mxser_port *info, long newspd) | 452 | static int mxser_set_baud(struct mxser_port *info, long newspd) |
| 453 | { | 453 | { |
| 454 | unsigned int i; | 454 | unsigned int i; |
| 455 | int quot = 0; | 455 | int quot = 0, baud; |
| 456 | unsigned char cval; | 456 | unsigned char cval; |
| 457 | int ret = 0; | ||
| 458 | 457 | ||
| 459 | if (!info->tty || !info->tty->termios) | 458 | if (!info->tty || !info->tty->termios) |
| 460 | return ret; | 459 | return -1; |
| 461 | 460 | ||
| 462 | if (!(info->ioaddr)) | 461 | if (!(info->ioaddr)) |
| 463 | return ret; | 462 | return -1; |
| 464 | 463 | ||
| 465 | if (newspd > info->max_baud) | 464 | if (newspd > info->max_baud) |
| 466 | return 0; | 465 | return -1; |
| 467 | 466 | ||
| 468 | info->realbaud = newspd; | 467 | info->realbaud = newspd; |
| 469 | for (i = 0; i < BAUD_TABLE_NO; i++) | 468 | for (i = 0; i < BAUD_TABLE_NO; i++) |
| @@ -476,10 +475,13 @@ static int mxser_set_baud(struct mxser_port *info, long newspd) | |||
| 476 | } else { | 475 | } else { |
| 477 | if (newspd == 134) { | 476 | if (newspd == 134) { |
| 478 | quot = (2 * info->baud_base / 269); | 477 | quot = (2 * info->baud_base / 269); |
| 478 | tty_encode_baud_rate(info->tty, 134, 134); | ||
| 479 | } else if (newspd) { | 479 | } else if (newspd) { |
| 480 | quot = info->baud_base / newspd; | 480 | quot = info->baud_base / newspd; |
| 481 | if (quot == 0) | 481 | if (quot == 0) |
| 482 | quot = 1; | 482 | quot = 1; |
| 483 | baud = info->baud_base/quot; | ||
| 484 | tty_encode_baud_rate(info->tty, baud, baud); | ||
| 483 | } else { | 485 | } else { |
| 484 | quot = 0; | 486 | quot = 0; |
| 485 | } | 487 | } |
| @@ -494,7 +496,7 @@ static int mxser_set_baud(struct mxser_port *info, long newspd) | |||
| 494 | } else { | 496 | } else { |
| 495 | info->MCR &= ~UART_MCR_DTR; | 497 | info->MCR &= ~UART_MCR_DTR; |
| 496 | outb(info->MCR, info->ioaddr + UART_MCR); | 498 | outb(info->MCR, info->ioaddr + UART_MCR); |
| 497 | return ret; | 499 | return 0; |
| 498 | } | 500 | } |
| 499 | 501 | ||
| 500 | cval = inb(info->ioaddr + UART_LCR); | 502 | cval = inb(info->ioaddr + UART_LCR); |
| @@ -518,7 +520,7 @@ static int mxser_set_baud(struct mxser_port *info, long newspd) | |||
| 518 | } else | 520 | } else |
| 519 | SET_MOXA_MUST_ENUM_VALUE(info->ioaddr, 0); | 521 | SET_MOXA_MUST_ENUM_VALUE(info->ioaddr, 0); |
| 520 | 522 | ||
| 521 | return ret; | 523 | return 0; |
| 522 | } | 524 | } |
| 523 | 525 | ||
| 524 | /* | 526 | /* |
