Changeset 2573

Show
Ignore:
Timestamp:
06/03/04 23:32:19 (4 years ago)
Author:
khali
Message:

Initial ADM1030 and ADM1031 support. Contributed by Alexandre

d'Alton.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • lm-sensors/trunk/etc/sensors.conf.eg

    r2567 r2573  
    21512151   set fan2_min 2000 
    21522152   set fan3_min 2000 
     2153 
     2154 
     2155chip "adm1030-*" 
     2156 
     2157   label temp1 "SYS Temp" 
     2158   label temp2 "CPU Temp" 
     2159   label temp1_crit "SYS Crit" 
     2160   label temp2_crit "CPU Crit" 
     2161 
     2162   set temp1_max 50000 
     2163   set temp2_max 65000 
     2164 
     2165   label fan1 "CPU Fan" 
     2166 
     2167   set fan1_min 2000 
     2168 
     2169 
     2170chip "adm1031-*" 
     2171 
     2172   label temp1 "SYS Temp" 
     2173   label temp2 "CPU Temp" 
     2174   label temp3 "AUX Temp" 
     2175   label temp1_crit "SYS Crit" 
     2176   label temp2_crit "CPU Crit" 
     2177   label temp3_crit "AUX Crit" 
     2178 
     2179   set temp1_max 50000 
     2180   set temp2_max 65000 
     2181   set temp3_max 65000 
     2182 
     2183   label fan1 "CPU Fan" 
     2184   label fan2 "Case Fan" 
     2185 
     2186   set fan1_min 2000 
     2187   set fan2_min 2000 
  • lm-sensors/trunk/kernel/chips/Module.mk

    r2564 r2573  
    2626# These targets are NOT included in 'mkpatch' ... 
    2727KERNELCHIPSTARGETS := 
     28KERNELCHIPSTARGETS += $(MODULE_DIR)/adm1031.o 
    2829ifeq ($(shell if grep -q '^CONFIG_IPMI_HANDLER=' $(LINUX)/.config; then echo 1; fi),1) 
    2930KERNELCHIPSTARGETS += $(MODULE_DIR)/bmcsensors.o 
  • lm-sensors/trunk/lib/chips.c

    r2568 r2573  
    358358                              NOMAP, R, 
    359359                              ADM1021_SYSCTL_ALARMS, VALUE(1), 0 }, 
     360    { 0 } 
     361  }; 
     362 
     363 
     364static sensors_chip_feature adm1030_features[] = 
     365  { 
     366    { SENSORS_ADM1031_TEMP1, "temp1", 
     367                              NOMAP, NOMAP, 
     368                              R, ADM1031_SYSCTL_TEMP1, VALUE(4), 3 }, 
     369    { SENSORS_ADM1031_TEMP1_MAX, "temp1_max", 
     370                              SENSORS_ADM1031_TEMP1, SENSORS_ADM1031_TEMP1, 
     371                              RW, ADM1031_SYSCTL_TEMP1, VALUE(1), 3 }, 
     372    { SENSORS_ADM1031_TEMP1_MIN, "temp1_min", 
     373                              SENSORS_ADM1031_TEMP1, SENSORS_ADM1031_TEMP1, 
     374                              RW, ADM1031_SYSCTL_TEMP1, VALUE(2), 3 }, 
     375    { SENSORS_ADM1031_TEMP1_CRIT, "temp1_crit", SENSORS_ADM1031_TEMP1, 
     376                              SENSORS_ADM1031_TEMP1, 
     377                              RW, ADM1031_SYSCTL_TEMP1, VALUE(3), 3 }, 
     378 
     379    { SENSORS_ADM1031_TEMP2, "temp2", 
     380                              NOMAP, NOMAP, 
     381                              R, ADM1031_SYSCTL_TEMP2, VALUE(4), 3 }, 
     382    { SENSORS_ADM1031_TEMP2_MAX, "temp2_max", 
     383                              SENSORS_ADM1031_TEMP2, SENSORS_ADM1031_TEMP2, 
     384                              RW, ADM1031_SYSCTL_TEMP2, VALUE(1), 3 }, 
     385    { SENSORS_ADM1031_TEMP2_MIN, "temp2_min", 
     386                              SENSORS_ADM1031_TEMP2, SENSORS_ADM1031_TEMP2, 
     387                              RW, ADM1031_SYSCTL_TEMP2, VALUE(2), 3 }, 
     388    { SENSORS_ADM1031_TEMP2_CRIT, "temp2_crit", 
     389                              SENSORS_ADM1031_TEMP2, SENSORS_ADM1031_TEMP2, 
     390                              RW, ADM1031_SYSCTL_TEMP2, VALUE(3), 3 }, 
     391 
     392    { SENSORS_ADM1031_FAN1, "fan1", 
     393                              NOMAP, NOMAP, 
     394                              R, ADM1031_SYSCTL_FAN1, VALUE(2), 0 }, 
     395    { SENSORS_ADM1031_FAN1_MIN, "fan1_min", 
     396                              SENSORS_ADM1031_FAN1, SENSORS_ADM1031_FAN1, RW,  
     397                              ADM1031_SYSCTL_FAN1, VALUE(1), 0 }, 
     398    { SENSORS_ADM1031_FAN1_DIV, "fan1_div", 
     399                              SENSORS_ADM1031_FAN1, NOMAP, 
     400                              RW, ADM1031_SYSCTL_FAN_DIV, VALUE(1), 0 }, 
     401 
     402    { SENSORS_ADM1031_ALARMS, "alarms", 
     403                              NOMAP, NOMAP, 
     404                              R, ADM1031_SYSCTL_ALARMS, VALUE(1), 0 }, 
     405    { 0 } 
     406  }; 
     407 
     408 
     409static sensors_chip_feature adm1031_features[] = 
     410  { 
     411    { SENSORS_ADM1031_TEMP1, "temp1", 
     412                              NOMAP, NOMAP, 
     413                              R, ADM1031_SYSCTL_TEMP1, VALUE(4), 3 }, 
     414    { SENSORS_ADM1031_TEMP1_MAX, "temp1_max", 
     415                              SENSORS_ADM1031_TEMP1, SENSORS_ADM1031_TEMP1, 
     416                              RW, ADM1031_SYSCTL_TEMP1, VALUE(1), 3 }, 
     417    { SENSORS_ADM1031_TEMP1_MIN, "temp1_min", 
     418                              SENSORS_ADM1031_TEMP1, SENSORS_ADM1031_TEMP1, 
     419                              RW, ADM1031_SYSCTL_TEMP1, VALUE(2), 3 }, 
     420    { SENSORS_ADM1031_TEMP1_CRIT, "temp1_crit", 
     421                              SENSORS_ADM1031_TEMP1, SENSORS_ADM1031_TEMP1, 
     422                              RW, ADM1031_SYSCTL_TEMP1, VALUE(3), 3 }, 
     423 
     424    { SENSORS_ADM1031_TEMP2, "temp2", 
     425                              NOMAP, NOMAP, 
     426                              R, ADM1031_SYSCTL_TEMP2, VALUE(4), 3 }, 
     427    { SENSORS_ADM1031_TEMP2_MAX, "temp2_max", 
     428                              SENSORS_ADM1031_TEMP2, SENSORS_ADM1031_TEMP2, 
     429                              RW, ADM1031_SYSCTL_TEMP2, VALUE(1), 3 }, 
     430    { SENSORS_ADM1031_TEMP2_MIN, "temp2_min", 
     431                              SENSORS_ADM1031_TEMP2, SENSORS_ADM1031_TEMP2, 
     432                              RW, ADM1031_SYSCTL_TEMP2, VALUE(2), 3 }, 
     433    { SENSORS_ADM1031_TEMP2_CRIT, "temp2_crit", 
     434                              SENSORS_ADM1031_TEMP2, SENSORS_ADM1031_TEMP2, 
     435                              RW, ADM1031_SYSCTL_TEMP2, VALUE(3), 3 }, 
     436 
     437    { SENSORS_ADM1031_TEMP3, "temp3", 
     438                              NOMAP, NOMAP, 
     439                              R, ADM1031_SYSCTL_TEMP3, VALUE(4), 3 }, 
     440    { SENSORS_ADM1031_TEMP3_MAX, "temp3_max", 
     441                              SENSORS_ADM1031_TEMP3, SENSORS_ADM1031_TEMP3, 
     442                              RW, ADM1031_SYSCTL_TEMP3, VALUE(1), 3 }, 
     443    { SENSORS_ADM1031_TEMP3_MIN, "temp3_min", 
     444                              SENSORS_ADM1031_TEMP3, SENSORS_ADM1031_TEMP3, 
     445                              RW, ADM1031_SYSCTL_TEMP3, VALUE(2), 3 }, 
     446    { SENSORS_ADM1031_TEMP3_CRIT, "temp3_crit", 
     447                              SENSORS_ADM1031_TEMP3, SENSORS_ADM1031_TEMP3, 
     448                              RW, ADM1031_SYSCTL_TEMP3, VALUE(3), 3 }, 
     449 
     450    { SENSORS_ADM1031_FAN1, "fan1", 
     451                              NOMAP, NOMAP, 
     452                              R, ADM1031_SYSCTL_FAN1, VALUE(2), 0 }, 
     453    { SENSORS_ADM1031_FAN1_MIN, "fan1_min", 
     454                              SENSORS_ADM1031_FAN1, SENSORS_ADM1031_FAN1, 
     455                              RW, ADM1031_SYSCTL_FAN1, VALUE(1), 0 }, 
     456    { SENSORS_ADM1031_FAN1_DIV, "fan1_div", 
     457                              SENSORS_ADM1031_FAN1, NOMAP, 
     458                              RW, ADM1031_SYSCTL_FAN_DIV, VALUE(1), 0 }, 
     459 
     460    { SENSORS_ADM1031_FAN2, "fan2", 
     461                              NOMAP, NOMAP, 
     462                              R, ADM1031_SYSCTL_FAN2, VALUE(2), 0 }, 
     463    { SENSORS_ADM1031_FAN2_MIN, "fan2_min", 
     464                              SENSORS_ADM1031_FAN2, SENSORS_ADM1031_FAN2, 
     465                              RW, ADM1031_SYSCTL_FAN2, VALUE(1), 0 }, 
     466    { SENSORS_ADM1031_FAN2_DIV, "fan2_div", 
     467                              SENSORS_ADM1031_FAN2, NOMAP, 
     468                              RW, ADM1031_SYSCTL_FAN_DIV, VALUE(2), 0 }, 
     469 
     470    { SENSORS_ADM1031_ALARMS, "alarms", 
     471                              NOMAP, NOMAP, 
     472                              R, ADM1031_SYSCTL_ALARMS, VALUE(1), 0 }, 
    360473    { 0 } 
    361474  }; 
     
    51015214 { SENSORS_XEONTEMP_PREFIX, xeontemp_features }, 
    51025215 { SENSORS_MAX6650_PREFIX, max6650_features }, 
     5216 { SENSORS_ADM1030_PREFIX, adm1030_features }, 
     5217 { SENSORS_ADM1031_PREFIX, adm1031_features }, 
    51035218 { 0 } 
    51045219}; 
  • lm-sensors/trunk/lib/chips.h

    r2564 r2573  
    184184#define SENSORS_ADM1021_ALARMS 81 /* R */ 
    185185#define SENSORS_ADM1021_DIE_CODE 90 /* R */ 
     186 
     187 
     188/* ADM1030 and ADM1031 chips */ 
     189 
     190#define SENSORS_ADM1030_PREFIX "adm1030" 
     191#define SENSORS_ADM1031_PREFIX "adm1031" 
     192 
     193#define SENSORS_ADM1031_TEMP1      51 /* R */ 
     194#define SENSORS_ADM1031_TEMP1_MIN  52 /* RW */ 
     195#define SENSORS_ADM1031_TEMP1_MAX  53 /* RW */ 
     196#define SENSORS_ADM1031_TEMP1_CRIT 54 /* RW */ 
     197 
     198#define SENSORS_ADM1031_TEMP2      61 /* R */ 
     199#define SENSORS_ADM1031_TEMP2_MIN  62 /* RW */ 
     200#define SENSORS_ADM1031_TEMP2_MAX  63 /* RW */ 
     201#define SENSORS_ADM1031_TEMP2_CRIT 64 /* RW */ 
     202 
     203#define SENSORS_ADM1031_TEMP3      71 /* R */ 
     204#define SENSORS_ADM1031_TEMP3_MIN  72 /* RW */ 
     205#define SENSORS_ADM1031_TEMP3_MAX  73 /* RW */ 
     206#define SENSORS_ADM1031_TEMP3_CRIT 74 /* RW */ 
     207 
     208 
     209#define SENSORS_ADM1031_FAN1       80 /* R */ 
     210#define SENSORS_ADM1031_FAN1_MIN   81 /* RW */ 
     211#define SENSORS_ADM1031_FAN1_DIV   82 /* RW */ 
     212#define SENSORS_ADM1031_FAN2       90 /* R */ 
     213#define SENSORS_ADM1031_FAN2_MIN   91 /* RW */ 
     214#define SENSORS_ADM1031_FAN2_DIV   92 /* RW */ 
     215 
     216#define SENSORS_ADM1031_ALARMS    100 /* R */ 
     217 
    186218 
    187219/* MAX1617 chips. */ 
  • lm-sensors/trunk/prog/sensors/chips.c

    r2564 r2573  
    47274727} 
    47284728 
     4729 
     4730void print_adm1031(const sensors_chip_name *name) 
     4731{ 
     4732  char *label; 
     4733  double cur, high, low, crit, div; 
     4734  int valid, alarms, i; 
     4735  int is_1031 = !strncmp("adm1031", name->prefix, 7); 
     4736 
     4737  if (!sensors_get_feature(*name, SENSORS_ADM1031_ALARMS, &cur)) 
     4738      alarms = cur; 
     4739  else { 
     4740      printf("ERROR: Can't get alarm data!\n"); 
     4741      alarms = 0; 
     4742  } 
     4743   
     4744  for(i=0; i<(is_1031?2:1);i++) { 
     4745      if (!sensors_get_label_and_valid(*name, SENSORS_ADM1031_FAN1+i*10, 
     4746                                       &label, &valid) 
     4747          && !sensors_get_feature(*name, SENSORS_ADM1031_FAN1+i*10, &cur) 
     4748          && !sensors_get_feature(*name, SENSORS_ADM1031_FAN1_MIN+i*10, &low) 
     4749          && !sensors_get_feature(*name, SENSORS_ADM1031_FAN1_DIV+i*10, &div)) { 
     4750          if (valid) { 
     4751              print_label(label, 10); 
     4752              printf("%4.0f RPM  (min = %4.0f RPM, div = %1.0f)", cur, low, div); 
     4753              printf(" %s\n", 
     4754                     alarms&(ADM1031_ALARM_FAN1_FLT<<(i*8))?"FAN_FAULT": 
     4755                     alarms&((ADM1031_ALARM_FAN1_MIN<<(i*8)))?"ALARM":""); 
     4756          } 
     4757      } else 
     4758          printf("ERROR: Can't get fan%d data!\n", i+1); 
     4759      free_the_label(&label); 
     4760  } 
     4761 
     4762  if (!sensors_get_label_and_valid(*name, SENSORS_ADM1031_TEMP1, 
     4763                                   &label, &valid) 
     4764      && !sensors_get_feature(*name, SENSORS_ADM1031_TEMP1, &cur) 
     4765      && !sensors_get_feature(*name, SENSORS_ADM1031_TEMP1_MIN, &low) 
     4766      && !sensors_get_feature(*name, SENSORS_ADM1031_TEMP1_MAX, &high) 
     4767      && !sensors_get_feature(*name, SENSORS_ADM1031_TEMP1_CRIT, &crit)) { 
     4768      if (valid) { 
     4769          print_label(label, 10); 
     4770          print_temp_info(cur, high, low, MINMAX, 1, 0); 
     4771          printf(" %s\n", 
     4772                 alarms&(ADM1031_ALARM_TEMP1_HIGH|ADM1031_ALARM_TEMP1_LOW)?"ALARM":""); 
     4773      } 
     4774  } else 
     4775      printf("ERROR: Can't get temp1 temperature data!\n"); 
     4776  free_the_label(&label); 
     4777  if (!sensors_get_label_and_valid(*name, SENSORS_ADM1031_TEMP1_CRIT, 
     4778                                   &label, &valid) 
     4779      && !sensors_get_feature(*name, SENSORS_ADM1031_TEMP1_CRIT, &cur)) { 
     4780      if (valid) { 
     4781          print_label(label, 10); 
     4782          print_temp_info(cur, 0, 0, SINGLE, 0, 0); 
     4783          printf(" %s\n", 
     4784                 alarms&ADM1031_ALARM_TEMP1_CRIT?"CRITICAL":""); 
     4785      } 
     4786  } else 
     4787      printf("ERROR: Can't get temp1 temperature data!\n"); 
     4788  free_the_label(&label); 
     4789   
     4790  for (i=0; i < (is_1031 ? 2 : 1); i++) { 
     4791      if (!sensors_get_label_and_valid(*name, SENSORS_ADM1031_TEMP2+i*10, 
     4792                                       &label, &valid) 
     4793          && !sensors_get_feature(*name, SENSORS_ADM1031_TEMP2+i*10, &cur) 
     4794          && !sensors_get_feature(*name, SENSORS_ADM1031_TEMP2_MIN+i*10, &low) 
     4795          && !sensors_get_feature(*name, SENSORS_ADM1031_TEMP2_MAX+i*10, &high)) { 
     4796          if (valid) { 
     4797              print_label(label, 10); 
     4798              print_temp_info(cur, high, low, MINMAX, 1, 0); 
     4799              printf(" %s\n", 
     4800                     alarms&((ADM1031_ALARM_TEMP2_DIODE<<(i*8)))?"DISCONNECT": 
     4801                     alarms&((ADM1031_ALARM_TEMP2_HIGH<<(i*8))| 
     4802                             (ADM1031_ALARM_TEMP2_LOW<<(i*8)))?"ALARM":""); 
     4803          } 
     4804      } else 
     4805          printf("ERROR: Can't get temp%d temperature data!\n", i+2); 
     4806      free_the_label(&label); 
     4807      if (!sensors_get_label_and_valid(*name, SENSORS_ADM1031_TEMP2_CRIT+i*10, 
     4808                                       &label, &valid) 
     4809          && !sensors_get_feature(*name, SENSORS_ADM1031_TEMP2_CRIT+i*10, &cur)) { 
     4810          if (valid) { 
     4811              print_label(label, 10); 
     4812              print_temp_info(cur, 0, 0, SINGLE, 0, 0); 
     4813              printf(" %s\n", 
     4814                     alarms&((ADM1031_ALARM_TEMP2_CRIT<<(i*8)))?"CRITICAL":""); 
     4815          } 
     4816      } else 
     4817          printf("ERROR: Can't get temp%d crit temperature data!\n", i+2); 
     4818      free_the_label(&label); 
     4819  } 
     4820} 
     4821 
    47294822void print_xeontemp(const sensors_chip_name *name) 
    47304823{ 
  • lm-sensors/trunk/prog/sensors/chips.h

    r2564 r2573  
    6464extern void print_xeontemp(const sensors_chip_name *name); 
    6565extern void print_max6650(const sensors_chip_name *name); 
     66extern void print_adm1031(const sensors_chip_name *name); 
    6667 
    6768#endif /* def PROG_SENSORS_CHIPS_H */ 
  • lm-sensors/trunk/prog/sensors/main.c

    r2538 r2573  
    428428        { "max6650", print_max6650 }, 
    429429        { "asb100", print_asb100 }, 
     430        { "adm1030", print_adm1031 }, 
     431        { "adm1031", print_adm1031 }, 
    430432        { NULL, NULL } 
    431433};