Changeset 330

Show
Ignore:
Timestamp:
03/22/99 00:47:20 (14 years ago)
Author:
mds
Message:

fixed off-by-factor-of-2 of FAN_FROM_REG in w83781d.
Improved bounds checking for FAN_TO_REG in all files.
For lm78-compatible drivers, minimum speed is 2657 RPM when the
divisor is 2. Attempts to set lower than that now are set to 0.
Before was set to a random number.
Thanks Jeff Dairiki.

Location:
lm-sensors/trunk/kernel/chips
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/kernel/chips/adm9240.c

    r283 r330  
    117117#define IN_FROM_REG(val,nr) (val) 
    118118 
    119 #define FAN_TO_REG(val,div) ((val)==0?255:\ 
    120                              ((1350000+(val)*(div)/2)/((val)*(div))) & 0xff) 
     119static inline unsigned char 
     120FAN_TO_REG (unsigned rpm, unsigned divisor) 
     121{ 
     122  unsigned val; 
     123   
     124  if (rpm == 0) 
     125      return 255; 
     126 
     127  val = (1350000 + rpm * divisor / 2) / (rpm * divisor); 
     128  if (val > 255) 
     129      val = 255; 
     130  return val; 
     131} 
    121132#define FAN_FROM_REG(val,div) ((val)==0?-1:\ 
    122133                               (val)==255?0:1350000/((div)*(val))) 
  • lm-sensors/trunk/kernel/chips/gl518sm.c

    r293 r330  
    6464#define TEMP_FROM_REG(val) (((val) - 119) * 10) 
    6565 
    66 #define FAN_TO_REG(val,div) \ 
    67  (( (val)==0 ? 255 : ((960000+(val)*(div))/(2*(val)*(div))) ) & 0xff) 
     66static inline unsigned char 
     67FAN_TO_REG (unsigned rpm, unsigned divisor) 
     68{ 
     69  unsigned val; 
     70   
     71  if (rpm == 0) 
     72      return 255; 
     73 
     74  val = (960000 + rpm * divisor) / (2 * rpm * divisor); 
     75  if (val > 255) 
     76      val = 255; 
     77  return val; 
     78} 
    6879#define FAN_FROM_REG(val,div) \ 
    6980 ( (val)==0 ? 0 : (val)==255 ? 0 : (960000/(2*(val)*(div))) ) 
  • lm-sensors/trunk/kernel/chips/lm78.c

    r329 r330  
    7777#define IN_FROM_REG(val) (((val) *  16) / 10) 
    7878 
    79 #define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\ 
    80                             ((val)*(div))) & 0xff) 
     79static inline unsigned char 
     80FAN_TO_REG (unsigned rpm, unsigned divisor) 
     81{ 
     82  unsigned val; 
     83   
     84  if (rpm == 0) 
     85      return 255; 
     86 
     87  val = (1350000 + rpm * divisor / 2) / (rpm * divisor); 
     88  if (val > 255) 
     89      val = 255; 
     90  return val; 
     91} 
    8192#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div))) 
    8293 
  • lm-sensors/trunk/kernel/chips/lm80.c

    r283 r330  
    6666#define IN_FROM_REG(val,nr) (val) 
    6767 
    68 #define FAN_TO_REG(val,div) ((val)==0?255:\ 
    69                              ((1350000+(val)*(div)/2)/((val)*(div))) & 0xff) 
     68static inline unsigned char 
     69FAN_TO_REG (unsigned rpm, unsigned divisor) 
     70{ 
     71  unsigned val; 
     72   
     73  if (rpm == 0) 
     74      return 255; 
     75 
     76  val = (1350000 + rpm * divisor / 2) / (rpm * divisor); 
     77  if (val > 255) 
     78      val = 255; 
     79  return val; 
     80} 
    7081#define FAN_FROM_REG(val,div) ((val)==0?-1:\ 
    7182                               (val)==255?0:1350000/((div)*(val))) 
  • lm-sensors/trunk/kernel/chips/maxilife.c

    r327 r330  
    8686#define FAN_FROM_REG(val)      ((val)==0xfe ? -1 : (val)==0xff ? 0 : \ 
    8787                                (1171860 / (val))) 
    88 #define FAN_TO_REG(val)        (1171860 / (val)) 
     88static inline unsigned char 
     89FAN_TO_REG (unsigned rpm) 
     90{ 
     91  unsigned val; 
     92   
     93  if (rpm == 0) 
     94      return 255; 
     95 
     96  val = 1171860 / rpm; 
     97  if (val > 255) 
     98      val = 255; 
     99  return val; 
     100} 
    89101 
    90102#define TEMP_FROM_REG(val)     ((val) * 5) 
  • lm-sensors/trunk/kernel/chips/sis5595.c

    r233 r330  
    8080#define IN_FROM_REG(val) (((val) *  16) / 10) 
    8181 
    82 #define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\ 
    83                             ((val)*(div))) & 0xff) 
     82static inline unsigned char 
     83FAN_TO_REG (unsigned rpm, unsigned divisor) 
     84{ 
     85  unsigned val; 
     86   
     87  if (rpm == 0) 
     88      return 255; 
     89 
     90  val = (1350000 + rpm * divisor / 2) / (rpm * divisor); 
     91  if (val > 255) 
     92      val = 255; 
     93  return val; 
     94} 
    8495#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div))) 
    8596 
  • lm-sensors/trunk/kernel/chips/w83781d.c

    r329 r330  
    115115#define IN_FROM_REG(val,nr) (((val) * 16) / 10) 
    116116 
    117 #define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\ 
    118                             ((val)*(div))) & 0xff) 
    119 #define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*2*(div))) 
     117static inline unsigned char 
     118FAN_TO_REG (unsigned rpm, unsigned divisor) 
     119{ 
     120  unsigned val; 
     121   
     122  if (rpm == 0) 
     123      return 255; 
     124 
     125  val = (1350000 + rpm * divisor / 2) / (rpm * divisor); 
     126  if (val > 255) 
     127      val = 255; 
     128  return val; 
     129} 
     130#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div))) 
    120131 
    121132#define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff)