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

Reply via email to