|
@@ -2420,7 +2420,7 @@ static void serial_console_write(struct console *co, const char *s,
|
|
|
{
|
|
|
struct sci_port *sci_port = &sci_ports[co->index];
|
|
|
struct uart_port *port = &sci_port->port;
|
|
|
- unsigned short bits, ctrl;
|
|
|
+ unsigned short bits, ctrl, ctrl_temp;
|
|
|
unsigned long flags;
|
|
|
int locked = 1;
|
|
|
|
|
@@ -2432,9 +2432,11 @@ static void serial_console_write(struct console *co, const char *s,
|
|
|
else
|
|
|
spin_lock(&port->lock);
|
|
|
|
|
|
- /* first save the SCSCR then disable the interrupts */
|
|
|
+ /* first save SCSCR then disable interrupts, keep clock source */
|
|
|
ctrl = serial_port_in(port, SCSCR);
|
|
|
- serial_port_out(port, SCSCR, sci_port->cfg->scscr);
|
|
|
+ ctrl_temp = (sci_port->cfg->scscr & ~(SCSCR_CKE1 | SCSCR_CKE0)) |
|
|
|
+ (ctrl & (SCSCR_CKE1 | SCSCR_CKE0));
|
|
|
+ serial_port_out(port, SCSCR, ctrl_temp);
|
|
|
|
|
|
uart_console_write(port, s, count, serial_console_putchar);
|
|
|
|