serial: sh-sci: Fix range check of bit-rate for HSCIF
authorNobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Mon, 14 Jul 2014 07:09:59 +0000 (16:09 +0900)
committerStephane Desneux <stephane.desneux@open.eurogiciel.org>
Wed, 4 Feb 2015 10:15:32 +0000 (11:15 +0100)
If bit-rate calculation result of HSCIF is expect 255 from 0,
driver does not calculate error bit. However, we need to round
the value to calculate error bit in the case of negative value.
This rounds the value of bit-rate using clamp(), and bit-rate is the
case of negative value, it enables the calculation of the error bit.

Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit bcb9973a6097652a12660958449301aada41de9c)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
drivers/tty/serial/sh-sci.c

index ce8013702560a025ff63644d38610d3612890e5a..7f571a8bdcfbe67ed433c2f3ac07d6fb1a20b665 100644 (file)
@@ -1798,8 +1798,7 @@ static void sci_baud_calc_hscif(unsigned int bps, unsigned long freq,
                        /* integerized formulas from HSCIF documentation */
                        br = DIV_ROUND_CLOSEST(freq, (sr *
                                              (1 << (2 * c + 1)) * bps)) - 1;
-                       if (br < 0 || br > 255)
-                               continue;
+                       br = clamp(br, 0, 255);
                        err = DIV_ROUND_CLOSEST(freq, ((br + 1) * bps * sr *
                                               (1 << (2 * c + 1)) / 1000)) -
                                               1000;