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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 18 Jul 2014 01:14:44 +0000 (18:14 -0700)
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>
drivers/tty/serial/sh-sci.c

index 2ba42069922f8c74272693da741b150b178b67e3..091b65587c7cb88e1e0eba6eb900f979ea3cd654 100644 (file)
@@ -1791,8 +1791,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;