diff mbox

[U-Boot,v3,1/6] replace DIV_ROUND with DIV_ROUND_CLOSEST

Message ID 1415297011-20327-2-git-send-email-yamada.m@jp.panasonic.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Masahiro Yamada Nov. 6, 2014, 6:03 p.m. UTC
The Linux-compatible macro DIV_ROUND_CLOSEST is a bit more flexible
and safer than DIV_ROUND.

For example,
  foo = DIV_ROUND_CLOSEST(x, y++)
works expectedly, but
  foo = DIV_ROUND(x, y++)
does not. (y is incremented twice.)

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
---

Changes in v3: None
Changes in v2: None

 arch/arm/cpu/arm926ejs/mxs/spl_power_init.c | 3 ++-
 arch/arm/cpu/armv7/omap-common/abb.c        | 6 +++---
 drivers/misc/mxc_ocotp.c                    | 4 ++--
 lib/strmhz.c                                | 4 ++--
 4 files changed, 9 insertions(+), 8 deletions(-)

Comments

Tom Rini Nov. 24, 2014, 10:10 p.m. UTC | #1
On Fri, Nov 07, 2014 at 03:03:26AM +0900, Masahiro Yamada wrote:

> The Linux-compatible macro DIV_ROUND_CLOSEST is a bit more flexible
> and safer than DIV_ROUND.
> 
> For example,
>   foo = DIV_ROUND_CLOSEST(x, y++)
> works expectedly, but
>   foo = DIV_ROUND(x, y++)
> does not. (y is incremented twice.)
> 
> Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/arch/arm/cpu/arm926ejs/mxs/spl_power_init.c b/arch/arm/cpu/arm926ejs/mxs/spl_power_init.c
index d25019a..1c54ab7 100644
--- a/arch/arm/cpu/arm926ejs/mxs/spl_power_init.c
+++ b/arch/arm/cpu/arm926ejs/mxs/spl_power_init.c
@@ -1002,7 +1002,8 @@  static void mxs_power_set_vddx(const struct mxs_vddx_cfg *cfg,
 	uint32_t powered_by_linreg = 0;
 	int adjust_up, tmp;
 
-	new_brownout = DIV_ROUND(new_target - new_brownout, cfg->step_mV);
+	new_brownout = DIV_ROUND_CLOSEST(new_target - new_brownout,
+					 cfg->step_mV);
 
 	cur_target = readl(cfg->reg);
 	cur_target &= cfg->trg_mask;
diff --git a/arch/arm/cpu/armv7/omap-common/abb.c b/arch/arm/cpu/armv7/omap-common/abb.c
index 423aeb9..a0add66 100644
--- a/arch/arm/cpu/armv7/omap-common/abb.c
+++ b/arch/arm/cpu/armv7/omap-common/abb.c
@@ -48,9 +48,9 @@  static void abb_setup_timings(u32 setup)
 	 */
 
 	/* calculate SR2_WTCNT_VALUE */
-	sys_rate = DIV_ROUND(V_OSCK, 1000000);
-	clk_cycles = DIV_ROUND(OMAP_ABB_CLOCK_CYCLES * 10, sys_rate);
-	sr2_cnt = DIV_ROUND(OMAP_ABB_SETTLING_TIME * 10, clk_cycles);
+	sys_rate = DIV_ROUND_CLOSEST(V_OSCK, 1000000);
+	clk_cycles = DIV_ROUND_CLOSEST(OMAP_ABB_CLOCK_CYCLES * 10, sys_rate);
+	sr2_cnt = DIV_ROUND_CLOSEST(OMAP_ABB_SETTLING_TIME * 10, clk_cycles);
 
 	setbits_le32(setup,
 		     sr2_cnt << (ffs(OMAP_ABB_SETUP_SR2_WTCNT_VALUE_MASK) - 1));
diff --git a/drivers/misc/mxc_ocotp.c b/drivers/misc/mxc_ocotp.c
index 3de1245..89737af 100644
--- a/drivers/misc/mxc_ocotp.c
+++ b/drivers/misc/mxc_ocotp.c
@@ -122,8 +122,8 @@  static void set_timing(struct ocotp_regs *regs)
 	relax = DIV_ROUND_UP(ipg_clk * BV_TIMING_RELAX_NS, 1000000000) - 1;
 	strobe_read = DIV_ROUND_UP(ipg_clk * BV_TIMING_STROBE_READ_NS,
 					1000000000) + 2 * (relax + 1) - 1;
-	strobe_prog = DIV_ROUND(ipg_clk * BV_TIMING_STROBE_PROG_US, 1000000) +
-			2 * (relax + 1) - 1;
+	strobe_prog = DIV_ROUND_CLOSEST(ipg_clk * BV_TIMING_STROBE_PROG_US,
+						1000000) + 2 * (relax + 1) - 1;
 
 	timing = BF(strobe_read, TIMING_STROBE_READ) |
 			BF(relax, TIMING_RELAX) |
diff --git a/lib/strmhz.c b/lib/strmhz.c
index f9a1772..5c16cc4 100644
--- a/lib/strmhz.c
+++ b/lib/strmhz.c
@@ -11,11 +11,11 @@  char *strmhz (char *buf, unsigned long hz)
 	long l, n;
 	long m;
 
-	n = DIV_ROUND(hz, 1000) / 1000L;
+	n = DIV_ROUND_CLOSEST(hz, 1000) / 1000L;
 	l = sprintf (buf, "%ld", n);
 
 	hz -= n * 1000000L;
-	m = DIV_ROUND(hz, 1000L);
+	m = DIV_ROUND_CLOSEST(hz, 1000L);
 	if (m != 0)
 		sprintf (buf + l, ".%03ld", m);
 	return (buf);