• Yin Kangkai's avatar
    serial: change the divisor latch only when prescalar actually changed · 0d0389e5
    Yin Kangkai authored
    In 8250.c original ns16550 autoconfig code, we change the divisor latch when
    we goto to high speed mode, we're assuming the previous speed is legacy. This
    some times is not true.
    
    For example in a system with both CONFIG_SERIAL_8250 and
    CONFIG_SERIAL_8250_PNP set, in this case, the code (autoconfig) will be called
    twice, one in serial8250_init/probe() and the other is from
    serial_pnp_probe. When serial_pnp_probe calls the autoconfig for NS16550A,
    it's already in high speed mode, change the divisor latch (quot << 3) in this
    case will make the UART console garbled.
    
    CC: Greg Kroah-Hartman <greg@kroah.com>
    CC: David Woodhouse <dwmw2@infradead.org>
    CC: linux-kernel@vger.kernel.org
    CC: stable@kernel.org
    Signed-off-by: default avatarYin Kangkai <kangkai.yin@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    0d0389e5
8250.c 84.6 KB