Changeset 173

Show
Ignore:
Timestamp:
01/24/99 01:15:12 (14 years ago)
Author:
phil
Message:

(Phil) Added adm9240 and adm1021 entries into the lib and added VID
output to ADM9240. Status/alarms values need to be implemented instead
of a raw output, but I'll do that too.

Location:
lm-sensors/trunk
Files:
6 modified

Legend:

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

    r154 r173  
    133133#define DIV_TO_REG(val) (val==1?0:(val==2?1:(val==4?2:3))) 
    134134 
     135#define VID_FROM_REG(val) ((val)==0x1f?0:(val)>=0x10?510-(val)*10:\ 
     136                           (val)>=0x06?0:205-(val)*5) 
     137 
    135138/* Initial limits */ 
    136139#define ADM9240_INIT_IN_0 190 
     
    202205         u8 temp_os_hyst;            /* Register value */ 
    203206         u16 alarms;                 /* Register encoding, combined */ 
    204          u8 analog_out;            /* Register value */ 
     207         u8 analog_out;              /* Register value */ 
     208         u8 vid;                     /* Register value combined */ 
    205209}; 
    206210 
     
    238242                         int *nrels_mag, long *results); 
    239243static void adm9240_analog_out(struct i2c_client *client, int operation, int ctl_name, 
     244                         int *nrels_mag, long *results); 
     245static void adm9240_vid(struct i2c_client *client, int operation, int ctl_name, 
    240246                         int *nrels_mag, long *results); 
    241247 
     
    293299  { ADM9240_SYSCTL_ANALOG_OUT, "analog_out", NULL, 0, 0644, NULL, &sensors_proc_real, 
    294300    &sensors_sysctl_real, NULL, &adm9240_analog_out }, 
     301  { ADM9240_SYSCTL_VID, "vid", NULL, 0, 0644, NULL, &sensors_proc_real, 
     302    &sensors_sysctl_real, NULL, &adm9240_vid }, 
    295303  { 0 } 
    296304}; 
     
    524532    data->fan_div[0] = (i >> 4) & 0x03; 
    525533    data->fan_div[1] = (i >> 6) & 0x03; 
     534    data->vid = i & 0x0f; 
     535    data->vid |= (adm9240_read_value(client,ADM9240_REG_VID4) & 0x01) << 4; 
     536 
    526537    data->alarms = adm9240_read_value(client,ADM9240_REG_INT1_STAT) + 
    527538                   (adm9240_read_value(client,ADM9240_REG_INT2_STAT) << 8); 
     
    683694} 
    684695 
     696void adm9240_vid(struct i2c_client *client, int operation, int ctl_name, 
     697              int *nrels_mag, long *results) 
     698{ 
     699  struct adm9240_data *data = client->data; 
     700   
     701  if (operation == SENSORS_PROC_REAL_INFO) 
     702    *nrels_mag = 2; 
     703  else if (operation == SENSORS_PROC_REAL_READ) { 
     704    adm9240_update_client(client); 
     705    results[0] = VID_FROM_REG(data->vid); 
     706    *nrels_mag = 1; 
     707  } 
     708} 
     709 
    685710int adm9240_init(void) 
    686711{ 
  • lm-sensors/trunk/kernel/include/sensors.h

    r158 r173  
    232232#define ADM9240_SYSCTL_ALARMS 2001 /* bitvector */ 
    233233#define ADM9240_SYSCTL_ANALOG_OUT 2002 
     234#define ADM9240_SYSCTL_VID 2003 
    234235 
    235236#define LTC1710_SYSCTL_SWITCH_1 1000 
  • lm-sensors/trunk/lib/chips.c

    r171 r173  
    293293                              SENSORS_LM75_TEMP, SENSORS_MODE_RW,  
    294294                              LM75_SYSCTL_TEMP, VALUE(1), 1 }, 
     295    { 0 } 
     296  }; 
     297 
     298 
     299static sensors_chip_feature adm1021_features[] = 
     300  { 
     301    { SENSORS_ADM1021_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     302                         SENSORS_MODE_R, ADM1021_SYSCTL_TEMP, VALUE(3), 0 }, 
     303    { SENSORS_ADM1021_TEMP_HYST, "temp_low", SENSORS_ADM1021_TEMP, 
     304                              SENSORS_ADM1021_TEMP, SENSORS_MODE_RW,  
     305                              ADM1021_SYSCTL_TEMP, VALUE(2), 0 }, 
     306    { SENSORS_ADM1021_TEMP_OVER, "temp_over", SENSORS_ADM1021_TEMP, 
     307                              SENSORS_ADM1021_TEMP, SENSORS_MODE_RW, 
     308                              ADM1021_SYSCTL_TEMP, VALUE(1), 0 }, 
     309    { SENSORS_ADM1021_REMOTE_TEMP, "remote_temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     310                         SENSORS_MODE_R, ADM1021_SYSCTL_REMOTE_TEMP, VALUE(3), 0 }, 
     311    { SENSORS_ADM1021_REMOTE_TEMP_HYST, "remote_temp_low", SENSORS_ADM1021_REMOTE_TEMP, 
     312                              SENSORS_ADM1021_REMOTE_TEMP, SENSORS_MODE_RW,  
     313                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(2), 0 }, 
     314    { SENSORS_ADM1021_REMOTE_TEMP_OVER, "remote_temp_over", SENSORS_ADM1021_REMOTE_TEMP, 
     315                              SENSORS_ADM1021_REMOTE_TEMP, SENSORS_MODE_RW, 
     316                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(1), 0 }, 
     317    { SENSORS_ADM1021_STATUS, "status", SENSORS_NO_MAPPING, 
     318                              SENSORS_NO_MAPPING, SENSORS_MODE_R, 
     319                              ADM1021_SYSCTL_STATUS, VALUE(1), 0 }, 
    295320    { 0 } 
    296321  }; 
     
    642667    { 0 } 
    643668  }; 
     669   
     670static sensors_chip_feature adm9240_features[] = 
     671  {  
     672    { SENSORS_ADM9240_IN0, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,  
     673                        SENSORS_MODE_R, ADM9240_SYSCTL_IN0, VALUE(3), 2 }, 
     674    { SENSORS_ADM9240_IN1, "Vccp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     675                        SENSORS_MODE_R, ADM9240_SYSCTL_IN1, VALUE(3), 2 }, 
     676    { SENSORS_ADM9240_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     677                        SENSORS_MODE_R, ADM9240_SYSCTL_IN2, VALUE(3), 2 }, 
     678    { SENSORS_ADM9240_IN3, "5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     679                        SENSORS_MODE_R, ADM9240_SYSCTL_IN3, VALUE(3), 2 }, 
     680    { SENSORS_ADM9240_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     681                        SENSORS_MODE_R, ADM9240_SYSCTL_IN4, VALUE(3), 2 }, 
     682    { SENSORS_ADM9240_IN5, "Vccp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     683                        SENSORS_MODE_R, ADM9240_SYSCTL_IN5, VALUE(3), 2 }, 
     684    { SENSORS_ADM9240_IN0_MIN, "2.5V_min", SENSORS_ADM9240_IN0,  
     685                        SENSORS_ADM9240_IN0, SENSORS_MODE_RW,  
     686                        ADM9240_SYSCTL_IN0, VALUE(1), 2 }, 
     687    { SENSORS_ADM9240_IN1_MIN, "Vccp1_min", SENSORS_ADM9240_IN1,  
     688                        SENSORS_ADM9240_IN1, SENSORS_MODE_RW,  
     689                        ADM9240_SYSCTL_IN1, VALUE(1), 2 }, 
     690    { SENSORS_ADM9240_IN2_MIN, "3.3V_min", SENSORS_ADM9240_IN2,  
     691                        SENSORS_ADM9240_IN2, SENSORS_MODE_RW,  
     692                        ADM9240_SYSCTL_IN2, VALUE(1), 2 }, 
     693    { SENSORS_ADM9240_IN3_MIN, "5V_min", SENSORS_ADM9240_IN3,  
     694                        SENSORS_ADM9240_IN3, SENSORS_MODE_RW,  
     695                        ADM9240_SYSCTL_IN3, VALUE(1), 2 }, 
     696    { SENSORS_ADM9240_IN4_MIN, "12V_min", SENSORS_ADM9240_IN4,  
     697                        SENSORS_ADM9240_IN4, SENSORS_MODE_RW,  
     698                        ADM9240_SYSCTL_IN4, VALUE(1), 2 }, 
     699    { SENSORS_ADM9240_IN5_MIN, "Vccp2_min", SENSORS_ADM9240_IN5,  
     700                        SENSORS_ADM9240_IN5, SENSORS_MODE_RW,  
     701                        ADM9240_SYSCTL_IN5, VALUE(1), 2 }, 
     702    { SENSORS_ADM9240_IN0_MAX, "2.5V_max", SENSORS_ADM9240_IN0,  
     703                        SENSORS_ADM9240_IN0, SENSORS_MODE_RW, 
     704                        ADM9240_SYSCTL_IN0, VALUE(2), 2 }, 
     705    { SENSORS_ADM9240_IN1_MAX, "Vccp1_max", SENSORS_ADM9240_IN1,  
     706                        SENSORS_ADM9240_IN1, SENSORS_MODE_RW,  
     707                        ADM9240_SYSCTL_IN1, VALUE(2), 2 }, 
     708    { SENSORS_ADM9240_IN2_MAX, "3.3V_max", SENSORS_ADM9240_IN2,  
     709                        SENSORS_ADM9240_IN2, SENSORS_MODE_RW,  
     710                        ADM9240_SYSCTL_IN2, VALUE(2), 2 }, 
     711    { SENSORS_ADM9240_IN3_MAX, "5V_max", SENSORS_ADM9240_IN3,  
     712                        SENSORS_ADM9240_IN3, SENSORS_MODE_RW,  
     713                        ADM9240_SYSCTL_IN3, VALUE(2), 2 }, 
     714    { SENSORS_ADM9240_IN4_MAX, "12V_max", SENSORS_ADM9240_IN4,  
     715                        SENSORS_ADM9240_IN4, SENSORS_MODE_RW, 
     716                        ADM9240_SYSCTL_IN4, VALUE(2), 2 }, 
     717    { SENSORS_ADM9240_IN5_MAX, "Vccp2_max", SENSORS_ADM9240_IN5,  
     718                        SENSORS_ADM9240_IN5, SENSORS_MODE_RW,  
     719                        ADM9240_SYSCTL_IN5, VALUE(2), 2 }, 
     720    { SENSORS_ADM9240_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     721                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN1, VALUE(2), 0 }, 
     722    { SENSORS_ADM9240_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     723                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN2, VALUE(2), 0 }, 
     724    { SENSORS_ADM9240_FAN1_MIN, "fan1_min", SENSORS_ADM9240_FAN1, 
     725                        SENSORS_NO_MAPPING, SENSORS_MODE_RW,  
     726                        ADM9240_SYSCTL_FAN1, VALUE(1), 0 }, 
     727    { SENSORS_ADM9240_FAN2_MIN, "fan2_min", SENSORS_ADM9240_FAN2,  
     728                        SENSORS_NO_MAPPING, SENSORS_MODE_RW,  
     729                        ADM9240_SYSCTL_FAN2, VALUE(1), 0 }, 
     730    { SENSORS_ADM9240_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     731                         SENSORS_MODE_R, ADM9240_SYSCTL_TEMP, VALUE(3), 1 }, 
     732    { SENSORS_ADM9240_TEMP_HYST, "temp_hyst", SENSORS_ADM9240_TEMP, 
     733                         SENSORS_ADM9240_TEMP, SENSORS_MODE_RW,  
     734                         ADM9240_SYSCTL_TEMP, VALUE(2), 1 }, 
     735    { SENSORS_ADM9240_TEMP_OVER, "temp_over", SENSORS_ADM9240_TEMP, 
     736                         SENSORS_ADM9240_TEMP, SENSORS_MODE_RW,  
     737                         ADM9240_SYSCTL_TEMP, VALUE(1), 1 }, 
     738 
     739    { SENSORS_ADM9240_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     740                         SENSORS_MODE_R, ADM9240_SYSCTL_VID, VALUE(1), 2 }, 
     741    { SENSORS_ADM9240_FAN1_DIV, "fan1_div", SENSORS_ADM9240_FAN1,  
     742                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,  
     743                         ADM9240_SYSCTL_FAN_DIV, VALUE(1), 0 }, 
     744    { SENSORS_ADM9240_FAN2_DIV, "fan2_div", SENSORS_ADM9240_FAN2,  
     745                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,  
     746                         ADM9240_SYSCTL_FAN_DIV, VALUE(2), 0 }, 
     747    { SENSORS_ADM9240_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,  
     748                         SENSORS_MODE_R, ADM9240_SYSCTL_ALARMS, VALUE(1), 0 }, 
     749    { SENSORS_ADM9240_ANALOG_OUT, "analog_out", SENSORS_NO_MAPPING, 
     750                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
     751                         ADM9240_SYSCTL_ANALOG_OUT, VALUE(1), 0 }, 
     752    { 0 } 
     753  }; 
    644754 
    645755sensors_chip_features sensors_chip_features_list[] = 
     
    653763 { SENSORS_LM80_PREFIX, lm80_features }, 
    654764 { SENSORS_W83781D_PREFIX, w83781d_features }, 
     765 { SENSORS_ADM9240_PREFIX, adm9240_features }, 
     766 { SENSORS_ADM1021_PREFIX, adm1021_features }, 
    655767 { 0 } 
    656768}; 
  • lm-sensors/trunk/lib/chips.h

    r129 r173  
    167167#define SENSORS_LM75_TEMP_OVER 53 /* RW */ 
    168168 
     169/* ADM1021 chips. */ 
     170 
     171#define SENSORS_ADM1021_PREFIX "adm1021" 
     172 
     173#define SENSORS_ADM1021_TEMP 51 /* R */ 
     174#define SENSORS_ADM1021_TEMP_HYST 52 /* RW */ 
     175#define SENSORS_ADM1021_TEMP_OVER 53 /* RW */ 
     176#define SENSORS_ADM1021_REMOTE_TEMP 54 /* R */ 
     177#define SENSORS_ADM1021_REMOTE_TEMP_HYST 55 /* RW */ 
     178#define SENSORS_ADM1021_REMOTE_TEMP_OVER 56 /* RW */ 
     179#define SENSORS_ADM1021_STATUS 81 /* R */ 
    169180 
    170181/* GL518SM revision 0x00 chips. You may also use the revision 0x80 defines, 
     
    319330#define SENSORS_W83781D_BEEPS 83 /* RW */ 
    320331 
     332 
     333/* Analog Devices ADM9240 chips */ 
     334 
     335#define SENSORS_ADM9240_PREFIX "adm9240" 
     336 
     337#define SENSORS_ADM9240_IN0 1 /* R */ 
     338#define SENSORS_ADM9240_IN1 2 /* R */ 
     339#define SENSORS_ADM9240_IN2 3 /* R */ 
     340#define SENSORS_ADM9240_IN3 4 /* R */ 
     341#define SENSORS_ADM9240_IN4 5 /* R */ 
     342#define SENSORS_ADM9240_IN5 6 /* R */ 
     343#define SENSORS_ADM9240_IN0_MIN 11 /* RW */ 
     344#define SENSORS_ADM9240_IN1_MIN 12 /* RW */ 
     345#define SENSORS_ADM9240_IN2_MIN 13 /* RW */ 
     346#define SENSORS_ADM9240_IN3_MIN 14 /* RW */ 
     347#define SENSORS_ADM9240_IN4_MIN 15 /* RW */ 
     348#define SENSORS_ADM9240_IN5_MIN 16 /* RW */ 
     349#define SENSORS_ADM9240_IN0_MAX 21 /* RW */ 
     350#define SENSORS_ADM9240_IN1_MAX 22 /* RW */ 
     351#define SENSORS_ADM9240_IN2_MAX 23 /* RW */ 
     352#define SENSORS_ADM9240_IN3_MAX 24 /* RW */ 
     353#define SENSORS_ADM9240_IN4_MAX 25 /* RW */ 
     354#define SENSORS_ADM9240_IN5_MAX 26 /* RW */ 
     355#define SENSORS_ADM9240_FAN1 31 /* R */ 
     356#define SENSORS_ADM9240_FAN2 32 /* R */ 
     357#define SENSORS_ADM9240_FAN1_MIN 41 /* RW */ 
     358#define SENSORS_ADM9240_FAN2_MIN 42 /* RW */ 
     359#define SENSORS_ADM9240_TEMP 51 /* R */ 
     360#define SENSORS_ADM9240_TEMP_HYST 52 /* RW */ 
     361#define SENSORS_ADM9240_TEMP_OVER 53 /* RW */ 
     362#define SENSORS_ADM9240_VID 61 /* R */ 
     363#define SENSORS_ADM9240_FAN1_DIV 71 /* RW */ 
     364#define SENSORS_ADM9240_FAN2_DIV 72 /* RW */ 
     365#define SENSORS_ADM9240_ALARMS 81 /* R */ 
     366#define SENSORS_ADM9240_ANALOG_OUT 82 /* RW */ 
     367 
     368 
    321369#endif /* def LIB_SENSORS_CHIPS_H */ 
  • lm-sensors/trunk/src/adm9240.c

    r154 r173  
    133133#define DIV_TO_REG(val) (val==1?0:(val==2?1:(val==4?2:3))) 
    134134 
     135#define VID_FROM_REG(val) ((val)==0x1f?0:(val)>=0x10?510-(val)*10:\ 
     136                           (val)>=0x06?0:205-(val)*5) 
     137 
    135138/* Initial limits */ 
    136139#define ADM9240_INIT_IN_0 190 
     
    202205         u8 temp_os_hyst;            /* Register value */ 
    203206         u16 alarms;                 /* Register encoding, combined */ 
    204          u8 analog_out;            /* Register value */ 
     207         u8 analog_out;              /* Register value */ 
     208         u8 vid;                     /* Register value combined */ 
    205209}; 
    206210 
     
    238242                         int *nrels_mag, long *results); 
    239243static void adm9240_analog_out(struct i2c_client *client, int operation, int ctl_name, 
     244                         int *nrels_mag, long *results); 
     245static void adm9240_vid(struct i2c_client *client, int operation, int ctl_name, 
    240246                         int *nrels_mag, long *results); 
    241247 
     
    293299  { ADM9240_SYSCTL_ANALOG_OUT, "analog_out", NULL, 0, 0644, NULL, &sensors_proc_real, 
    294300    &sensors_sysctl_real, NULL, &adm9240_analog_out }, 
     301  { ADM9240_SYSCTL_VID, "vid", NULL, 0, 0644, NULL, &sensors_proc_real, 
     302    &sensors_sysctl_real, NULL, &adm9240_vid }, 
    295303  { 0 } 
    296304}; 
     
    524532    data->fan_div[0] = (i >> 4) & 0x03; 
    525533    data->fan_div[1] = (i >> 6) & 0x03; 
     534    data->vid = i & 0x0f; 
     535    data->vid |= (adm9240_read_value(client,ADM9240_REG_VID4) & 0x01) << 4; 
     536 
    526537    data->alarms = adm9240_read_value(client,ADM9240_REG_INT1_STAT) + 
    527538                   (adm9240_read_value(client,ADM9240_REG_INT2_STAT) << 8); 
     
    683694} 
    684695 
     696void adm9240_vid(struct i2c_client *client, int operation, int ctl_name, 
     697              int *nrels_mag, long *results) 
     698{ 
     699  struct adm9240_data *data = client->data; 
     700   
     701  if (operation == SENSORS_PROC_REAL_INFO) 
     702    *nrels_mag = 2; 
     703  else if (operation == SENSORS_PROC_REAL_READ) { 
     704    adm9240_update_client(client); 
     705    results[0] = VID_FROM_REG(data->vid); 
     706    *nrels_mag = 1; 
     707  } 
     708} 
     709 
    685710int adm9240_init(void) 
    686711{ 
  • lm-sensors/trunk/src/sensors.h

    r158 r173  
    232232#define ADM9240_SYSCTL_ALARMS 2001 /* bitvector */ 
    233233#define ADM9240_SYSCTL_ANALOG_OUT 2002 
     234#define ADM9240_SYSCTL_VID 2003 
    234235 
    235236#define LTC1710_SYSCTL_SWITCH_1 1000