From: Yoshinori Sato - fix h8300 depend setup sequence --- 25-akpm/drivers/serial/sh-sci.c | 20 +++++++++++++++----- 1 files changed, 15 insertions(+), 5 deletions(-) diff -puN drivers/serial/sh-sci.c~h8-300-update-5-9-sci-driver-fix drivers/serial/sh-sci.c --- 25/drivers/serial/sh-sci.c~h8-300-update-5-9-sci-driver-fix Tue May 11 17:11:26 2004 +++ 25-akpm/drivers/serial/sh-sci.c Tue May 11 17:11:26 2004 @@ -905,14 +905,14 @@ static int sci_startup(struct uart_port { struct sci_port *s = &sci_ports[port->line]; - sci_request_irq(s); - sci_start_tx(port, 1); - sci_start_rx(port, 1); - #if defined(__H8300S__) h8300_sci_enable(port, sci_enable); #endif + sci_request_irq(s); + sci_start_tx(port, 1); + sci_start_rx(port, 1); + return 0; } @@ -1329,6 +1329,7 @@ static int __init serial_console_setup(s int bits = 8; int parity = 'n'; int flow = 'n'; + int ret; if (co->index >= SCI_NPORTS) co->index = 0; @@ -1346,10 +1347,19 @@ static int __init serial_console_setup(s #else port->uartclk = CONFIG_CPU_CLOCK; #endif +#if defined(__H8300S__) + h8300_sci_enable(port, sci_enable); +#endif if (options) uart_parse_options(options, &baud, &parity, &bits, &flow); - return uart_set_options(port, co, baud, parity, bits, flow); + ret = uart_set_options(port, co, baud, parity, bits, flow); +#if defined(__H8300H__) || defined(__H8300S__) + /* disable rx interrupt */ + if (ret == 0) + sci_stop_rx(port); +#endif + return ret; } static struct console serial_console = { _