mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
78bcae8616
Support for magic baud rate divisors of 32770 and 32769 used with SMSC
Super I/O chips for extra baud rates of 230400 and 460800 respectively
where base rate is 115200[1] has been added around Linux 2.5.64, which
predates our repo history, but the origin could be identified as commit
2a717aad772f ("Merge with Linux 2.5.64.") with the old MIPS/Linux repo
also at: <git://git.kernel.org/pub/scm/linux/kernel/git/ralf/linux.git>.
Code that is now in `serial8250_do_get_divisor' was added back then to
`serial8250_get_divisor', but that code would only ever trigger if one
of the higher baud rates was actually requested, and that cannot ever
happen, because the earlier call to `serial8250_get_baud_rate' never
returns them. This is because it calls `uart_get_baud_rate' with the
maximum requested being the base rate, that is clk/16 or 115200 for SMSC
chips at their nominal clock rate.
Fix it then and allow UPF_MAGIC_MULTIPLIER baud rates to be selected, by
requesting the maximum baud rate of clk/4 rather than clk/16 if the flag
has been set. Also correct the minimum baud rate, observing that these
ports only support actual (non-magic) divisors of up to 32767 only.
References:
[1] "FDC37M81x, PC98/99 Compliant Enhanced Super I/O Controller with
Keyboard/Mouse Wake-Up", Standard Microsystems Corporation, Rev.
03/27/2000, Table 31 - "Baud Rates", p. 77
Fixes:
|
||
---|---|---|
.. | ||
8250.h | ||
8250_accent.c | ||
8250_acorn.c | ||
8250_aspeed_vuart.c | ||
8250_bcm2835aux.c | ||
8250_bcm7271.c | ||
8250_boca.c | ||
8250_core.c | ||
8250_dma.c | ||
8250_dw.c | ||
8250_dwlib.c | ||
8250_dwlib.h | ||
8250_early.c | ||
8250_em.c | ||
8250_exar.c | ||
8250_exar_st16c554.c | ||
8250_fintek.c | ||
8250_fourport.c | ||
8250_fsl.c | ||
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 | ||
8250_omap.c | ||
8250_pci.c | ||
8250_pnp.c | ||
8250_port.c | ||
8250_pxa.c | ||
8250_tegra.c | ||
8250_uniphier.c | ||
Kconfig | ||
Makefile | ||
serial_cs.c |