> > > + /* > > > + * HW register value is accumulated count of pulses from > > > + * PWM fan with the scale of 2 pulses per rotation. > > > + */ > > > + rotations = pulses / 2; > > > + > > > + time = jiffies_delta_to_msecs(time_now - fi->time_prev); > > > + if (unlikely(!time)) { > > > + ret = -EAGAIN; > > > + goto exit; > > > + } > > > > Can you please add a comment describing how you obtain the speed > > calculation? > > That's what I initially tried but ended up dropping it in favour of RPM > formula below, which I found to be doing a better job of explaining than > a few lines of description. > > > Basically at every read you store the values. Is it possible that > > we don't have reads for a long time and the register resets more > > than once? > > Considering a fan continuously running at higher speeds (for example 4000 RPM > which is quite optimistic), with the scale of 2 pulses per rotation, a 32 bit > register will take around a year to overflow, which is more than most usecases > I could think of. Which can be considered as a worse case scenario. I would have preferred here a runtime calculation, which means read now, wait a bit, read again and calculate. The read might be slow, but efficient. Anyway, your argument makes sense, so that I'm not going to push on this, I already r-b'ed it. Thanks, Andi