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