From: Yoshinori Sato <ysato@users.sourceforge.jp>

- 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 = {

_