From: Atsushi Nemoto Date: Mon, 29 Oct 2007 21:37:23 +0000 (-0700) Subject: serial: fix serial_txx9 console initialization X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=23f42b7b2e538a27bc457a9ba12a6656343dc5ea;p=openwrt%2Fstaging%2Fblogic.git serial: fix serial_txx9 console initialization Since commit 97d97224ff361e08777fb33e0fd193ca877dac28 ("[SERIAL] Fix console initialisation ordering"), serial_core calls ->pm() on initialization even if the port was used for console. This behaviour breaks serial_txx9 console since The serial_txx9 driver initialize its port entirely on its ->pm() method if new state was 0. This patch adds checking for oldstate value to fix this probelm. Signed-off-by: Atsushi Nemoto Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/serial/serial_txx9.c b/drivers/serial/serial_txx9.c index 6846a6c38b6d..7ad21925869a 100644 --- a/drivers/serial/serial_txx9.c +++ b/drivers/serial/serial_txx9.c @@ -657,7 +657,15 @@ static void serial_txx9_pm(struct uart_port *port, unsigned int state, unsigned int oldstate) { - if (state == 0) + /* + * If oldstate was -1 this is called from + * uart_configure_port(). In this case do not initialize the + * port now, because the port was already initialized (for + * non-console port) or should not be initialized here (for + * console port). If we initialized the port here we lose + * serial console settings. + */ + if (state == 0 && oldstate != -1) serial_txx9_initialize(port); }