• Yin Kangkai's avatar
    serial-core: reset the console speed on resume · 5933a161
    Yin Kangkai authored
    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 of ba15ab0e (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:
    
    commit 891b9dd1
    Author: Jason Wang <jason77.wang@gmail.com>
        serial-core: restore termios settings when resume console ports
    
    commit ca2e71aa
    Author: Jason Wang <jason77.wang@gmail.com>
        serial-core: skip call set_termios/console_start when no_console_suspend
    
    commit 4547be78
    Author: Stanislav Brabec <sbrabec@suse.cz>
        serial-core: resume serial hardware with no_console_suspend
    
    commit ba15ab0e
    Author: Deepak Saxena <dsaxena@laptop.org>
        Set proper console speed on resume if console suspend is disabled
    
    from ba15ab0e, 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 with 4547be78, this piece of code is removed.
    
    And then Jason Wang added that back in ca2e71aa and 891b9dd1, to fix
    some breakage on OMAP3EVM platform. From ca2e71aa 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: default avatarYin Kangkai <kangkai.yin@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    5933a161
serial_core.c 63.6 KB