Hi Geert,
Thank you for your review.
On Wednesday, October 18, 2017 1, Geert Uytterhoeven wrote:
> > + /*
> > + * Remove clock ticks for rise and fall times. Convert ns to
> clock
> > + * ticks.
> > + */
> > + brl -= t->scl_fall_ns / (1000000000/rate);
> > + brh -= t->scl_rise_ns / (1000000000/rate);
>
> To avoid losing too much precision by the division, you can rewrite this
> as
> e.g.
>
> brl -= t->scl_fall_ns * rate / 1000000000;
>
> ("scl_fall_ns * rate" should not overflow).
> Perhaps DIV_ROUND_UP(), too?
Unfortunately, I do not get the correct number every time.
Sometimes I get the correct number, but most of the time I get 0.
Note, if rate=33,330,000 and t->scl_fall_ns=300, then
t->scl_fall_ns * rate = 9,999,000,000 (0x253FCA1C0) a 34-bit number.
So, I'd rather just stick with the less precision because it's not that
much of a bit deal.
Chris