Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7d66397 authored by Nobuhiro Iwamatsu's avatar Nobuhiro Iwamatsu Committed by Greg Kroah-Hartman
Browse files

serial: sh-sci: Updated calculation of bit error rate and bit rate



Currently, the decimal point is discarded calculation of BRR.
Therefore, it can not calculate a value close to the correct value.
This patch fixes this problem by using DIV_ROUND_CLOSEST.

Signed-off-by: default avatarNobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ca177492
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1789,11 +1789,13 @@ static void sci_baud_calc_hscif(unsigned int bps, unsigned long freq,
	for (sr = 8; sr <= 32; sr++) {
		for (c = 0; c <= 3; c++) {
			/* integerized formulas from HSCIF documentation */
			br = freq / (sr * (1 << (2 * c + 1)) * bps) - 1;
			br = DIV_ROUND_CLOSEST(freq, (sr *
					      (1 << (2 * c + 1)) * bps)) - 1;
			if (br < 0 || br > 255)
				continue;
			err = freq / ((br + 1) * bps * sr *
			      (1 << (2 * c + 1)) / 1000) - 1000;
			err = DIV_ROUND_CLOSEST(freq, ((br + 1) * bps * sr *
					       (1 << (2 * c + 1)) / 1000)) -
					       1000;
			if (min_err > err) {
				min_err = err;
				*brr = br;