replace DIV_ROUND with DIV_ROUND_CLOSEST
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>
This commit is contained in:
parent
3fd968e931
commit
4515992fc7
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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) |
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user