| From f26b05b6f8e3a25e9eab2dc4175f7f775b00a53c Mon Sep 17 00:00:00 2001 |
| From: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> |
| Date: Mon, 14 Jul 2014 16:09:59 +0900 |
| Subject: serial: sh-sci: Fix range check of bit-rate for HSCIF |
| |
| 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 | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c |
| index ce8013702560..7f571a8bdcfb 100644 |
| --- a/drivers/tty/serial/sh-sci.c |
| +++ b/drivers/tty/serial/sh-sci.c |
| @@ -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; |
| -- |
| 2.1.2 |
| |