Wolfgang Denk <w...@denx.de> writes: > Dear Måns Rullgård, > > In message <yw1xd2mp0yqu....@unicorn.mansr.com> you wrote: >> >> Something like this should be equivalent. That said, it looks >> suspiciously like it's meant to simply do a division and round up. If >> that is the case, +225 should be +249. It probably makes no difference >> for the values actually encountered. > > Umm... this is the part which I do not understand. > > The original code adds 90%; you add 90%, too. However, to round up, > one usually adds only 50% ?
Adding 50% would round to nearest. For integer division to round up, you must add one less than the divisor. >> diff --git a/arch/arm/cpu/armv7/am33xx/clock_ti814x.c >> b/arch/arm/cpu/armv7/am33xx/clock_ti814x.c >> index ef14f47..9b5a47b 100644 >> --- a/arch/arm/cpu/armv7/am33xx/clock_ti814x.c >> +++ b/arch/arm/cpu/armv7/am33xx/clock_ti814x.c >> @@ -211,11 +211,8 @@ static u32 pll_dco_freq_sel(u32 clkout_dco) >> static u32 pll_sigma_delta_val(u32 clkout_dco) >> { >> u32 sig_val = 0; >> - float frac_div; >> >> - frac_div = (float) clkout_dco / 250; >> - frac_div = frac_div + 0.90; >> - sig_val = (int)frac_div; >> + sig_val = (clkout_dco + 225) / 250; >> sig_val = sig_val << 24; > > Where are these 90% coming from? Are they in any way meaningful, or > even critical? My guess is that it was someone's approximation of 249 / 250. I don't know the hardware, so it's conceivable that it really should be this way, although it seems unlikely. -- Måns Rullgård m...@mansr.com _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot