Skip to contentSkip to conversation

H8/300 update (5/9) SCI driver fix

PATCH New Yoshinori Sato 1 participant 1 message May 11, 2004

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 H8/300 update (5/9) SCI driver fix

- fix h8300 depend setup sequence

Signature · 54 lines
Yoshinori Sato
<[email protected]>

diff -Nru linux-2.6.6/drivers/serial/sh-sci.c linux-2.6.6-h8300/drivers/serial/sh-sci.c
--- linux-2.6.6/drivers/serial/sh-sci.c	2004-05-11 14:30:46.000000000 +0900
+++ linux-2.6.6-h8300/drivers/serial/sh-sci.c	2004-05-11 19:21:26.000000000 +0900
@@ -904,14 +904,14 @@
 {
 	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;
 }
 
@@ -1328,6 +1328,7 @@
 	int bits = 8;
 	int parity = 'n';
 	int flow = 'n';
+	int ret;
 
 	if (co->index >= SCI_NPORTS)
 		co->index = 0;
@@ -1345,10 +1346,19 @@
 #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 = {