diff --git a/kernel/chips/adm9240.c b/kernel/chips/adm9240.c index ef0e53ac..8e00b796 100644 --- a/kernel/chips/adm9240.c +++ b/kernel/chips/adm9240.c @@ -116,8 +116,19 @@ #define IN_TO_REG(val,nr) ((val) & 0xff) #define IN_FROM_REG(val,nr) (val) -#define FAN_TO_REG(val,div) ((val)==0?255:\ - ((1350000+(val)*(div)/2)/((val)*(div))) & 0xff) +static inline unsigned char +FAN_TO_REG (unsigned rpm, unsigned divisor) +{ + unsigned val; + + if (rpm == 0) + return 255; + + val = (1350000 + rpm * divisor / 2) / (rpm * divisor); + if (val > 255) + val = 255; + return val; +} #define FAN_FROM_REG(val,div) ((val)==0?-1:\ (val)==255?0:1350000/((div)*(val))) diff --git a/kernel/chips/gl518sm.c b/kernel/chips/gl518sm.c index bf58b227..3f311191 100644 --- a/kernel/chips/gl518sm.c +++ b/kernel/chips/gl518sm.c @@ -63,8 +63,19 @@ #define TEMP_TO_REG(val) (((((val)<0?(val)-5:(val)+5) / 10) + 119) & 0xff) #define TEMP_FROM_REG(val) (((val) - 119) * 10) -#define FAN_TO_REG(val,div) \ - (( (val)==0 ? 255 : ((960000+(val)*(div))/(2*(val)*(div))) ) & 0xff) +static inline unsigned char +FAN_TO_REG (unsigned rpm, unsigned divisor) +{ + unsigned val; + + if (rpm == 0) + return 255; + + val = (960000 + rpm * divisor) / (2 * rpm * divisor); + if (val > 255) + val = 255; + return val; +} #define FAN_FROM_REG(val,div) \ ( (val)==0 ? 0 : (val)==255 ? 0 : (960000/(2*(val)*(div))) ) diff --git a/kernel/chips/lm78.c b/kernel/chips/lm78.c index ee836607..b3aca3a0 100644 --- a/kernel/chips/lm78.c +++ b/kernel/chips/lm78.c @@ -76,8 +76,19 @@ SENSORS_INSMOD_3(lm78,lm78j,lm79); #define IN_TO_REG(val) (((val) * 10 + 8)/16) #define IN_FROM_REG(val) (((val) * 16) / 10) -#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\ - ((val)*(div))) & 0xff) +static inline unsigned char +FAN_TO_REG (unsigned rpm, unsigned divisor) +{ + unsigned val; + + if (rpm == 0) + return 255; + + val = (1350000 + rpm * divisor / 2) / (rpm * divisor); + if (val > 255) + val = 255; + return val; +} #define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div))) #define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff) diff --git a/kernel/chips/lm80.c b/kernel/chips/lm80.c index c493acf8..5576f418 100644 --- a/kernel/chips/lm80.c +++ b/kernel/chips/lm80.c @@ -65,8 +65,19 @@ #define IN_TO_REG(val,nr) ((val) & 0xff) #define IN_FROM_REG(val,nr) (val) -#define FAN_TO_REG(val,div) ((val)==0?255:\ - ((1350000+(val)*(div)/2)/((val)*(div))) & 0xff) +static inline unsigned char +FAN_TO_REG (unsigned rpm, unsigned divisor) +{ + unsigned val; + + if (rpm == 0) + return 255; + + val = (1350000 + rpm * divisor / 2) / (rpm * divisor); + if (val > 255) + val = 255; + return val; +} #define FAN_FROM_REG(val,div) ((val)==0?-1:\ (val)==255?0:1350000/((div)*(val))) diff --git a/kernel/chips/maxilife.c b/kernel/chips/maxilife.c index 1a65b157..1cfda0da 100644 --- a/kernel/chips/maxilife.c +++ b/kernel/chips/maxilife.c @@ -85,7 +85,19 @@ static const char *version = "1.00 25/2/99 Fons Rademakers"; /* 19531 / val * 60 == 1171860 / val */ #define FAN_FROM_REG(val) ((val)==0xfe ? -1 : (val)==0xff ? 0 : \ (1171860 / (val))) -#define FAN_TO_REG(val) (1171860 / (val)) +static inline unsigned char +FAN_TO_REG (unsigned rpm) +{ + unsigned val; + + if (rpm == 0) + return 255; + + val = 1171860 / rpm; + if (val > 255) + val = 255; + return val; +} #define TEMP_FROM_REG(val) ((val) * 5) #define TEMP_TO_REG(val) ((val) / 5) diff --git a/kernel/chips/sis5595.c b/kernel/chips/sis5595.c index 83b8807e..8a9b156f 100644 --- a/kernel/chips/sis5595.c +++ b/kernel/chips/sis5595.c @@ -79,8 +79,19 @@ #define IN_TO_REG(val) (((val) * 10 + 8)/16) #define IN_FROM_REG(val) (((val) * 16) / 10) -#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\ - ((val)*(div))) & 0xff) +static inline unsigned char +FAN_TO_REG (unsigned rpm, unsigned divisor) +{ + unsigned val; + + if (rpm == 0) + return 255; + + val = (1350000 + rpm * divisor / 2) / (rpm * divisor); + if (val > 255) + val = 255; + return val; +} #define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div))) #define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff) diff --git a/kernel/chips/w83781d.c b/kernel/chips/w83781d.c index 523a3d7d..fc24da96 100644 --- a/kernel/chips/w83781d.c +++ b/kernel/chips/w83781d.c @@ -114,9 +114,20 @@ const u8 regpwm[] = {W83781D_REG_PWM1, W83781D_REG_PWM2, W83781D_REG_PWM3, W8378 #define IN_TO_REG(val,nr) (((val) * 10 + 8)/16) #define IN_FROM_REG(val,nr) (((val) * 16) / 10) -#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\ - ((val)*(div))) & 0xff) -#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*2*(div))) +static inline unsigned char +FAN_TO_REG (unsigned rpm, unsigned divisor) +{ + unsigned val; + + if (rpm == 0) + return 255; + + val = (1350000 + rpm * divisor / 2) / (rpm * divisor); + if (val > 255) + val = 255; + return val; +} +#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div))) #define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff) #define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*10)