diff options
author | Vabhav Sharma <vabhav.sharma@nxp.com> | 2020-06-26 16:50:34 +0530 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-06-27 13:52:29 +0200 |
commit | d10ee1d1917b082f0008a840cde5aeaad11b396b (patch) | |
tree | 17d681806b178685f5da84c416252a2bdf1932f3 /drivers/tty/serial/fsl_lpuart.c | |
parent | 3550f8979a7bb2f28940aa26aab77314ec8840bd (diff) | |
download | lwn-d10ee1d1917b082f0008a840cde5aeaad11b396b.tar.gz lwn-d10ee1d1917b082f0008a840cde5aeaad11b396b.zip |
tty: serial: fsl_lpuart: minimum baud rate support
The formula for the baud rate is
baud rate = "baud clock / ((OSR+1) × SBR)
Algorithm used in function lpuart32_serial_setbrg() only changes
the SBR. Even with maxmum value put in, OSR stays at 0x7 and the
lowest baud rate would be ~ 2600 bps
Update the algorithm to allow driver operation at 1200,2400 or 600 bps
Signed-off-by: Vabhav Sharma <vabhav.sharma@nxp.com>
Link: https://lore.kernel.org/r/1593170434-13524-1-git-send-email-vabhav.sharma@oss.nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/fsl_lpuart.c')
-rw-r--r-- | drivers/tty/serial/fsl_lpuart.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index 90298c403042..7ca642249224 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -1925,6 +1925,9 @@ static void __lpuart32_serial_setbrg(struct uart_port *port, tmp_sbr++; } + if (tmp_sbr > UARTBAUD_SBR_MASK) + continue; + if (tmp_diff <= baud_diff) { baud_diff = tmp_diff; osr = tmp_osr; |