diff options
-rw-r--r-- | drivers/serial/serial_ns16550.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c index 056ef2a9a13..49e2c1f14f6 100644 --- a/drivers/serial/serial_ns16550.c +++ b/drivers/serial/serial_ns16550.c @@ -130,13 +130,9 @@ static int calc_divisor (NS16550_t port) #endif #define MODE_X_DIV 16 - /* Compute divisor value. Normally, we should simply return: - * CONFIG_SYS_NS16550_CLK) / MODE_X_DIV / gd->baudrate - * but we need to round that value by adding 0.5. - * Rounding is especially important at high baud rates. - */ - return (CONFIG_SYS_NS16550_CLK + (gd->baudrate * (MODE_X_DIV / 2))) / - (MODE_X_DIV * gd->baudrate); + + return DIV_ROUND_CLOSEST(CONFIG_SYS_NS16550_CLK, + MODE_X_DIV * gd->baudrate); } void |