mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
serial-core: reset the console speed on resume
On some platforms, we need to restore the console speed on resume even it was not suspended (no_console_suspend), and on others we don't have to do that. So don't care about the "console_suspend_enabled" and unconditionally reset the console speed if it is a console. This is actually a redo ofba15ab0(Set proper console speed on resume if console suspend is disabled) from Deepak Saxena. I also tried to investigate more to find out if this change will break others, here is what I've found out: commit891b9dd107Author: Jason Wang <jason77.wang@gmail.com> serial-core: restore termios settings when resume console ports commitca2e71aa8cAuthor: Jason Wang <jason77.wang@gmail.com> serial-core: skip call set_termios/console_start when no_console_suspend commit4547be7809Author: Stanislav Brabec <sbrabec@suse.cz> serial-core: resume serial hardware with no_console_suspend commitba15ab0e8dAuthor: Deepak Saxena <dsaxena@laptop.org> Set proper console speed on resume if console suspend is disabled fromba15ab0, we learned that, even if the console suspend is disabled (when no_console_suspend is set), we may still need to "reset the port to the state it was in before we suspended." Then with4547be7, this piece of code is removed. And then Jason Wang added that back in ca2e71a and891b9dd, to fix some breakage on OMAP3EVM platform. From ca2e71a we learned that the "set_termios" things is actually needed by both console is suspended and not suspended. That's why I removed the console_suspended_enabled condition, and only call console_start() when we actually suspeneded it. I also noticed in this thread: http://marc.info/?t=129079257100004&r=1&w=2, which talked about on some platforms, UART HW will be cut power whether or not we set no_console_suspend, and then on resume it does not work quite well. I have a similar HW, and this patch fixed this issue, don't know if this patch also works on their platforms. [Update: Stanislav tested this patch on Zaurus and reported it improves the situation. Thanks.] CC: Greg KH <greg@kroah.com> CC: Deepak Saxena <dsaxena@laptop.org> CC: Jason Wang <jason77.wang@gmail.com> CC: Stanislav Brabec <sbrabec@suse.cz> CC: Daniel Drake <dsd@laptop.org> Signed-off-by: Yin Kangkai <kangkai.yin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
d8653d305e
commit
5933a161ab
|
|
@ -2064,7 +2064,7 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport)
|
|||
/*
|
||||
* Re-enable the console device after suspending.
|
||||
*/
|
||||
if (console_suspend_enabled && uart_console(uport)) {
|
||||
if (uart_console(uport)) {
|
||||
/*
|
||||
* First try to use the console cflag setting.
|
||||
*/
|
||||
|
|
@ -2077,9 +2077,9 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport)
|
|||
if (port->tty && port->tty->termios && termios.c_cflag == 0)
|
||||
termios = *(port->tty->termios);
|
||||
|
||||
uart_change_pm(state, 0);
|
||||
uport->ops->set_termios(uport, &termios, NULL);
|
||||
console_start(uport->cons);
|
||||
if (console_suspend_enabled)
|
||||
console_start(uport->cons);
|
||||
}
|
||||
|
||||
if (port->flags & ASYNC_SUSPENDED) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user