Loading drivers/char/mxser.c +19 −8 Original line number Diff line number Diff line Loading @@ -1391,7 +1391,8 @@ static int mxser_ioctl(struct tty_struct *tty, struct file *file, unsigned int c long baud; if (get_user(baud, (long __user *)argp)) return -EFAULT; mxser_set_baud(info, baud); if (mxser_set_baud(info, baud) == -1) return -1; return 0; } case MOXA_ASPP_GETBAUD: Loading Loading @@ -2517,7 +2518,13 @@ static int mxser_change_speed(struct mxser_struct *info, struct ktermios *old_te #endif if (mxser_set_baud_method[info->port] == 0) { baud = tty_get_baud_rate(info->tty); mxser_set_baud(info, baud); if (mxser_set_baud(info, baud) == -1) { /* Use previous rate on a failure */ if (old_termios) { baud = tty_termios_baud_rate(old_termios); tty_encode_baud_rate(info->tty, baud, baud); } } } /* byte size and parity */ Loading Loading @@ -2691,27 +2698,31 @@ static int mxser_set_baud(struct mxser_struct *info, long newspd) { int quot = 0; unsigned char cval; int ret = 0; unsigned long flags; unsigned int baud; if (!info->tty || !info->tty->termios) return ret; return -1; if (!(info->base)) return ret; return -1; if (newspd > info->MaxCanSetBaudRate) return 0; return -1; info->realbaud = newspd; if (newspd == 134) { quot = (2 * info->baud_base / 269); tty_encode_baud_rate(info->tty, 134, 134); } else if (newspd) { quot = info->baud_base / newspd; if (quot == 0) quot = 1; baud = info->baud_base / quot; tty_encode_baud_rate(info->tty, baud, baud); } else { quot = 0; tty_encode_baud_rate(info->tty, 0, 0); } info->timeout = ((info->xmit_fifo_size * HZ * 10 * quot) / info->baud_base); Loading @@ -2727,7 +2738,7 @@ static int mxser_set_baud(struct mxser_struct *info, long newspd) info->MCR &= ~UART_MCR_DTR; outb(info->MCR, info->base + UART_MCR); spin_unlock_irqrestore(&info->slock, flags); return ret; return 0; } cval = inb(info->base + UART_LCR); Loading @@ -2739,7 +2750,7 @@ static int mxser_set_baud(struct mxser_struct *info, long newspd) outb(cval, info->base + UART_LCR); /* reset DLAB */ return ret; return 0; } /* Loading drivers/char/mxser_new.c +9 −7 Original line number Diff line number Diff line Loading @@ -452,18 +452,17 @@ static int mxser_block_til_ready(struct tty_struct *tty, struct file *filp, static int mxser_set_baud(struct mxser_port *info, long newspd) { unsigned int i; int quot = 0; int quot = 0, baud; unsigned char cval; int ret = 0; if (!info->tty || !info->tty->termios) return ret; return -1; if (!(info->ioaddr)) return ret; return -1; if (newspd > info->max_baud) return 0; return -1; info->realbaud = newspd; for (i = 0; i < BAUD_TABLE_NO; i++) Loading @@ -476,10 +475,13 @@ static int mxser_set_baud(struct mxser_port *info, long newspd) } else { if (newspd == 134) { quot = (2 * info->baud_base / 269); tty_encode_baud_rate(info->tty, 134, 134); } else if (newspd) { quot = info->baud_base / newspd; if (quot == 0) quot = 1; baud = info->baud_base/quot; tty_encode_baud_rate(info->tty, baud, baud); } else { quot = 0; } Loading @@ -494,7 +496,7 @@ static int mxser_set_baud(struct mxser_port *info, long newspd) } else { info->MCR &= ~UART_MCR_DTR; outb(info->MCR, info->ioaddr + UART_MCR); return ret; return 0; } cval = inb(info->ioaddr + UART_LCR); Loading @@ -518,7 +520,7 @@ static int mxser_set_baud(struct mxser_port *info, long newspd) } else SET_MOXA_MUST_ENUM_VALUE(info->ioaddr, 0); return ret; return 0; } /* Loading Loading
drivers/char/mxser.c +19 −8 Original line number Diff line number Diff line Loading @@ -1391,7 +1391,8 @@ static int mxser_ioctl(struct tty_struct *tty, struct file *file, unsigned int c long baud; if (get_user(baud, (long __user *)argp)) return -EFAULT; mxser_set_baud(info, baud); if (mxser_set_baud(info, baud) == -1) return -1; return 0; } case MOXA_ASPP_GETBAUD: Loading Loading @@ -2517,7 +2518,13 @@ static int mxser_change_speed(struct mxser_struct *info, struct ktermios *old_te #endif if (mxser_set_baud_method[info->port] == 0) { baud = tty_get_baud_rate(info->tty); mxser_set_baud(info, baud); if (mxser_set_baud(info, baud) == -1) { /* Use previous rate on a failure */ if (old_termios) { baud = tty_termios_baud_rate(old_termios); tty_encode_baud_rate(info->tty, baud, baud); } } } /* byte size and parity */ Loading Loading @@ -2691,27 +2698,31 @@ static int mxser_set_baud(struct mxser_struct *info, long newspd) { int quot = 0; unsigned char cval; int ret = 0; unsigned long flags; unsigned int baud; if (!info->tty || !info->tty->termios) return ret; return -1; if (!(info->base)) return ret; return -1; if (newspd > info->MaxCanSetBaudRate) return 0; return -1; info->realbaud = newspd; if (newspd == 134) { quot = (2 * info->baud_base / 269); tty_encode_baud_rate(info->tty, 134, 134); } else if (newspd) { quot = info->baud_base / newspd; if (quot == 0) quot = 1; baud = info->baud_base / quot; tty_encode_baud_rate(info->tty, baud, baud); } else { quot = 0; tty_encode_baud_rate(info->tty, 0, 0); } info->timeout = ((info->xmit_fifo_size * HZ * 10 * quot) / info->baud_base); Loading @@ -2727,7 +2738,7 @@ static int mxser_set_baud(struct mxser_struct *info, long newspd) info->MCR &= ~UART_MCR_DTR; outb(info->MCR, info->base + UART_MCR); spin_unlock_irqrestore(&info->slock, flags); return ret; return 0; } cval = inb(info->base + UART_LCR); Loading @@ -2739,7 +2750,7 @@ static int mxser_set_baud(struct mxser_struct *info, long newspd) outb(cval, info->base + UART_LCR); /* reset DLAB */ return ret; return 0; } /* Loading
drivers/char/mxser_new.c +9 −7 Original line number Diff line number Diff line Loading @@ -452,18 +452,17 @@ static int mxser_block_til_ready(struct tty_struct *tty, struct file *filp, static int mxser_set_baud(struct mxser_port *info, long newspd) { unsigned int i; int quot = 0; int quot = 0, baud; unsigned char cval; int ret = 0; if (!info->tty || !info->tty->termios) return ret; return -1; if (!(info->ioaddr)) return ret; return -1; if (newspd > info->max_baud) return 0; return -1; info->realbaud = newspd; for (i = 0; i < BAUD_TABLE_NO; i++) Loading @@ -476,10 +475,13 @@ static int mxser_set_baud(struct mxser_port *info, long newspd) } else { if (newspd == 134) { quot = (2 * info->baud_base / 269); tty_encode_baud_rate(info->tty, 134, 134); } else if (newspd) { quot = info->baud_base / newspd; if (quot == 0) quot = 1; baud = info->baud_base/quot; tty_encode_baud_rate(info->tty, baud, baud); } else { quot = 0; } Loading @@ -494,7 +496,7 @@ static int mxser_set_baud(struct mxser_port *info, long newspd) } else { info->MCR &= ~UART_MCR_DTR; outb(info->MCR, info->ioaddr + UART_MCR); return ret; return 0; } cval = inb(info->ioaddr + UART_LCR); Loading @@ -518,7 +520,7 @@ static int mxser_set_baud(struct mxser_port *info, long newspd) } else SET_MOXA_MUST_ENUM_VALUE(info->ioaddr, 0); return ret; return 0; } /* Loading