amba_pl011: Round input clock up
authorPhil Elwell <phil@raspberrypi.org>
Wed, 1 Mar 2017 16:07:39 +0000 (16:07 +0000)
committerDom Cobley <popcornmix@gmail.com>
Mon, 21 Mar 2022 16:03:48 +0000 (16:03 +0000)
commitab3f1b39537f6d3825b8873006fbe2fc5ff057b7
treeb593f18e7b030cffedabcdf0be11f12aad127f8b
parent017f25f0f8bb45323163c9b1ef8b1d8c73684d67
amba_pl011: Round input clock up

The UART clock is initialised to be as close to the requested
frequency as possible without exceeding it. Now that there is a
clock manager that returns the actual frequencies, an expected
48MHz clock is reported as 47999625. If the requested baudrate
== requested clock/16, there is no headroom and the slight
reduction in actual clock rate results in failure.

Detect cases where it looks like a "round" clock was chosen and
adjust the reported clock to match that "round" value. As the
code comment says:

/*
 * If increasing a clock by less than 0.1% changes it
 * from ..999.. to ..000.., round up.
 */

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
drivers/tty/serial/amba-pl011.c