From: Patrick Gefre Small mods for setting up the uart - parity, flow control Signed-off-by: Patrick Gefre Signed-off-by: Andrew Morton --- drivers/serial/ioc4_serial.c | 28 ++++++++-------------------- 1 files changed, 8 insertions(+), 20 deletions(-) diff -puN drivers/serial/ioc4_serial.c~altix-ioc4-serial-small-uart-setup-mods drivers/serial/ioc4_serial.c --- 25/drivers/serial/ioc4_serial.c~altix-ioc4-serial-small-uart-setup-mods 2005-04-26 20:16:53.018718736 -0700 +++ 25-akpm/drivers/serial/ioc4_serial.c 2005-04-26 20:16:53.023717976 -0700 @@ -1688,8 +1688,8 @@ ioc4_change_speed(struct uart_port *the_ { struct ioc4_port *port = get_ioc4_port(the_port); int baud, bits; - unsigned cflag, cval; - int new_parity = 0, new_parity_enable = 0, new_stop = 1, new_data = 8; + unsigned cflag; + int new_parity = 0, new_parity_enable = 0, new_stop = 0, new_data = 8; struct uart_info *info = the_port->info; cflag = new_termios->c_cflag; @@ -1697,48 +1697,35 @@ ioc4_change_speed(struct uart_port *the_ switch (cflag & CSIZE) { case CS5: new_data = 5; - cval = 0x00; bits = 7; break; case CS6: new_data = 6; - cval = 0x01; bits = 8; break; case CS7: new_data = 7; - cval = 0x02; bits = 9; break; case CS8: new_data = 8; - cval = 0x03; bits = 10; break; default: /* cuz we always need a default ... */ new_data = 5; - cval = 0x00; bits = 7; break; } if (cflag & CSTOPB) { - cval |= 0x04; bits++; new_stop = 1; } if (cflag & PARENB) { - cval |= UART_LCR_PARITY; bits++; new_parity_enable = 1; - } - if (cflag & PARODD) { - cval |= UART_LCR_EPAR; - new_parity = 1; - } - if (cflag & IGNPAR) { - cval &= ~UART_LCR_PARITY; - new_parity_enable = 0; + if (cflag & PARODD) + new_parity = 1; } baud = uart_get_baud_rate(the_port, new_termios, old_termios, MIN_BAUD_SUPPORTED, MAX_BAUD_SUPPORTED); @@ -1771,10 +1758,12 @@ ioc4_change_speed(struct uart_port *the_ if (cflag & CRTSCTS) { info->flags |= ASYNC_CTS_FLOW; port->ip_sscr |= IOC4_SSCR_HFC_EN; - writel(port->ip_sscr, &port->ip_serial_regs->sscr); } - else + else { info->flags &= ~ASYNC_CTS_FLOW; + port->ip_sscr &= ~IOC4_SSCR_HFC_EN; + } + writel(port->ip_sscr, &port->ip_serial_regs->sscr); /* Set the configuration and proper notification call */ DPRINT_CONFIG(("%s : port 0x%p cflag 0%o " @@ -1847,7 +1836,6 @@ static void ioc4_cb_output_lowat(struct } } - /** * handle_intr - service any interrupts for the given port - 2nd level * called via sd_intr _