Upgrade to 4.4.50-rt62
[kvmfornfv.git] / kernel / drivers / hwmon / g762.c
index b96a2a9..628be9c 100644 (file)
@@ -193,14 +193,17 @@ static inline unsigned int rpm_from_cnt(u8 cnt, u32 clk_freq, u16 p,
  * Convert fan RPM value from sysfs into count value for fan controller
  * register (FAN_SET_CNT).
  */
-static inline unsigned char cnt_from_rpm(u32 rpm, u32 clk_freq, u16 p,
+static inline unsigned char cnt_from_rpm(unsigned long rpm, u32 clk_freq, u16 p,
                                         u8 clk_div, u8 gear_mult)
 {
-       if (!rpm)         /* to stop the fan, set cnt to 255 */
+       unsigned long f1 = clk_freq * 30 * gear_mult;
+       unsigned long f2 = p * clk_div;
+
+       if (!rpm)       /* to stop the fan, set cnt to 255 */
                return 0xff;
 
-       return clamp_val(((clk_freq * 30 * gear_mult) / (rpm * p * clk_div)),
-                        0, 255);
+       rpm = clamp_val(rpm, f1 / (255 * f2), ULONG_MAX / f2);
+       return DIV_ROUND_CLOSEST(f1, rpm * f2);
 }
 
 /* helper to grab and cache data, at most one time per second */