linux-stable/drivers/tty/serial/8250
Maciej W. Rozycki f7adc73878 serial: 8250: Handle custom baud rates in UPF_MAGIC_MULTIPLIER range
Handle custom baud rates requested in the UPF_MAGIC_MULTIPLIER range
with BOTHER.  Currently matching is exact, that is if a baud rate that
is not either of clk/4 or clk/8 is requested, then we fall through to
the default case, which will just divide the clock rate by 16 times the
rate requested, round it to closest integer, and possibly yield even
worse results then if clamping to the extra baud rates was chosen.

So for example if we have the usual base rate of 115200 and request a
rate of 230399, then the fall-through divisor calculation will yield 1,
and consequently the baud rate of 115200 will be programmed even though
obviously the magic rate of 230400 would be more appropriate.

Make the selection of the magic rates range-qualified then and use clk/4
for rates from clk/6 up (assuming `serial8250_get_baud_rate' has already
rejected any rates too far beyond clk/4), and otherwise use clk/8 for
rates from clk/12 up, and finally fall through to the standard divisor
calculation.  Explicitly void using the undocumented rate of 153600bps
and stick to documented divisor values only.

Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Link: https://lore.kernel.org/r/alpine.DEB.2.21.2105200232090.29169@angie.orcam.me.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-06-16 09:20:29 +02:00
..
8250.h serial: 8250: Use BIT(x) for UART_{CAP,BUG}_* 2021-05-20 17:14:50 +02:00
8250_accent.c
8250_acorn.c
8250_aspeed_vuart.c Merge 5.13-rc4 into tty-next 2021-05-31 09:44:28 +02:00
8250_bcm2835aux.c
8250_bcm7271.c serial: 8250: Make symbol 'brcmuart_debugfs_root' static 2021-04-02 16:12:27 +02:00
8250_boca.c
8250_core.c tty/serial: make port of serial8250_register_8250_port const 2021-05-20 16:59:14 +02:00
8250_dma.c
8250_dw.c serial: 8250_dw: Add device HID for new AMD UART controller 2021-05-13 17:08:42 +02:00
8250_dwlib.c
8250_dwlib.h
8250_early.c
8250_em.c
8250_exar.c Linux 5.13-rc6 2021-06-14 09:14:43 +02:00
8250_exar_st16c554.c
8250_fintek.c
8250_fourport.c
8250_fsl.c serial: do not restore interrupt state in sysrq helper 2021-04-22 12:04:26 +02:00
8250_gsc.c
8250_hp300.c
8250_hub6.c
8250_ingenic.c
8250_ioc3.c
8250_lpc18xx.c
8250_lpss.c
8250_men_mcb.c
8250_mid.c
8250_mtk.c
8250_of.c serial: 8250: of: Check for CONFIG_SERIAL_8250_BCM7271 2021-05-13 16:22:48 +02:00
8250_omap.c Revert "serial: 8250: 8250_omap: Fix possible interrupt storm" 2021-05-28 10:58:49 +02:00
8250_pci.c serial: 8250: Correct the clock for OxSemi PCIe devices 2021-06-16 09:20:29 +02:00
8250_pnp.c
8250_port.c serial: 8250: Handle custom baud rates in UPF_MAGIC_MULTIPLIER range 2021-06-16 09:20:29 +02:00
8250_pxa.c
8250_tegra.c
8250_uniphier.c
Kconfig serial: extend compile-test coverage 2021-04-22 13:12:13 +02:00
Makefile serial: 8250: Add new 8250-core based Broadcom STB driver 2021-03-26 15:18:30 +01:00
serial_cs.c tty: serial: 8250: serial_cs: Fix a memory leak in error handling path 2021-05-27 15:20:05 +02:00