]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
serial: mvebu-uart: fix calculation of clock divisor
authorPali Rohár <pali@kernel.org>
Thu, 24 Jun 2021 22:49:00 +0000 (00:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jul 2021 14:16:03 +0000 (16:16 +0200)
commit 9078204ca5c33ba20443a8623a41a68a9995a70d upstream.

The clock divisor should be rounded to the closest value.

Signed-off-by: Pali Rohár <pali@kernel.org>
Fixes: 68a0db1d7da2 ("serial: mvebu-uart: add function to change baudrate")
Cc: stable@vger.kernel.org # 0e4cf69ede87 ("serial: mvebu-uart: clarify the baud rate derivation")
Link: https://lore.kernel.org/r/20210624224909.6350-2-pali@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/mvebu-uart.c

index 87ec05fef480bcd77a4106435780ae00586dbcc7..f0107d5df99e919676c3f7792b0d9f54e8dde01c 100644 (file)
@@ -462,7 +462,7 @@ static int mvebu_uart_baud_rate_set(struct uart_port *port, unsigned int baud)
         * makes use of D to configure the desired baudrate.
         */
        m_divisor = OSAMP_DEFAULT_DIVISOR;
-       d_divisor = DIV_ROUND_UP(port->uartclk, baud * m_divisor);
+       d_divisor = DIV_ROUND_CLOSEST(port->uartclk, baud * m_divisor);
 
        brdv = readl(port->membase + UART_BRDV);
        brdv &= ~BRDV_BAUD_MASK;