Changeset 4939

Show
Ignore:
Timestamp:
10/12/07 10:16:23 (1 year ago)
Author:
jwrdegoede
Message:

This patchset adds support for the new fschmd driver, while keeping
compatibility with the old:
-The feature lists for the fscpos, fscscy and fscher have been extended to

include the new features exported by the fschmd driver

-Feature lists for the fschmd and fschrc have been added
-The print functions in "sensors" for the fscpos, fscscy and fscher have

been modified to detect on which driver they run, on the old driver
behaviour is unmodified, on the new driver the non sysfs-interface
compliant attributes are not used and the extra features exported by the
new driver are shown.

-print functions for the fschmd and fschrc have been added to "sensors"
-mapping from the non standard sysfs attr name fan#_ripple used by the old

fscpos, fscscy and fscher drivers to the standard fan#_div used by the
fschmd driver has been added to getsysname() using altsysname.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • lm-sensors/trunk/lib/chips.c

    r4933 r4939  
    43024302                                     SENSORS_FSCPOS_WDOG_PRESET, RW },  
    43034303                                     FSCPOS_SYSCTL_WDOG, VALUE(3), 0 }, 
     4304    /* below this line are features only exported with the new fschmd drv */ 
     4305    { { SENSORS_FSCHMD_TEMP_ALARM(1), "temp1_alarm", SENSORS_FSCPOS_TEMP1,  
     4306                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4307    { { SENSORS_FSCHMD_TEMP_ALARM(2), "temp2_alarm", SENSORS_FSCPOS_TEMP2,  
     4308                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4309    { { SENSORS_FSCHMD_TEMP_ALARM(3), "temp3_alarm", SENSORS_FSCPOS_TEMP3,  
     4310                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4311    { { SENSORS_FSCHMD_TEMP_FAULT(1), "temp1_fault", SENSORS_FSCPOS_TEMP1,  
     4312                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4313    { { SENSORS_FSCHMD_TEMP_FAULT(2), "temp2_fault", SENSORS_FSCPOS_TEMP2,  
     4314                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4315    { { SENSORS_FSCHMD_TEMP_FAULT(3), "temp3_fault", SENSORS_FSCPOS_TEMP3,  
     4316                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4317    { { SENSORS_FSCHMD_FAN_ALARM(1), "fan1_alarm", SENSORS_FSCPOS_FAN1,  
     4318                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4319    { { SENSORS_FSCHMD_FAN_ALARM(2), "fan2_alarm", SENSORS_FSCPOS_FAN2,  
     4320                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4321    { { SENSORS_FSCHMD_FAN_ALARM(3), "fan3_alarm", SENSORS_FSCPOS_FAN3,  
     4322                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4323    { { SENSORS_FSCHMD_FAN_FAULT(1), "fan1_fault", SENSORS_FSCPOS_FAN1,  
     4324                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4325    { { SENSORS_FSCHMD_FAN_FAULT(2), "fan2_fault", SENSORS_FSCPOS_FAN2,  
     4326                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4327    { { SENSORS_FSCHMD_FAN_FAULT(3), "fan3_fault", SENSORS_FSCPOS_FAN3,  
     4328                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
    43044329    { { 0 }, 0 } 
    43054330  }; 
     
    44494474                                     SENSORS_FSCSCY_WDOG_PRESET, RW },  
    44504475                                     FSCSCY_SYSCTL_WDOG, VALUE(3), 0 }, 
     4476    /* below this line are features only exported with the new fschmd drv */ 
     4477    { { SENSORS_FSCHMD_TEMP_ALARM(1), "temp1_alarm", SENSORS_FSCSCY_TEMP1,  
     4478                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4479    { { SENSORS_FSCHMD_TEMP_ALARM(2), "temp2_alarm", SENSORS_FSCSCY_TEMP2,  
     4480                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4481    { { SENSORS_FSCHMD_TEMP_ALARM(3), "temp3_alarm", SENSORS_FSCSCY_TEMP3,  
     4482                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4483    { { SENSORS_FSCHMD_TEMP_ALARM(4), "temp4_alarm", SENSORS_FSCSCY_TEMP4, 
     4484                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4485    { { SENSORS_FSCHMD_TEMP_FAULT(1), "temp1_fault", SENSORS_FSCSCY_TEMP1,  
     4486                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4487    { { SENSORS_FSCHMD_TEMP_FAULT(2), "temp2_fault", SENSORS_FSCSCY_TEMP2,  
     4488                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4489    { { SENSORS_FSCHMD_TEMP_FAULT(3), "temp3_fault", SENSORS_FSCSCY_TEMP3,  
     4490                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4491    { { SENSORS_FSCHMD_TEMP_FAULT(4), "temp4_fault", SENSORS_FSCSCY_TEMP4, 
     4492                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4493    { { SENSORS_FSCHMD_FAN_ALARM(1), "fan1_alarm", SENSORS_FSCSCY_FAN1,  
     4494                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4495    { { SENSORS_FSCHMD_FAN_ALARM(2), "fan2_alarm", SENSORS_FSCSCY_FAN2,  
     4496                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4497    { { SENSORS_FSCHMD_FAN_ALARM(3), "fan3_alarm", SENSORS_FSCSCY_FAN3,  
     4498                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4499    { { SENSORS_FSCHMD_FAN_ALARM(4), "fan4_alarm", SENSORS_FSCSCY_FAN4,  
     4500                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4501    { { SENSORS_FSCHMD_FAN_ALARM(5), "fan5_alarm", SENSORS_FSCSCY_FAN5,  
     4502                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4503    { { SENSORS_FSCHMD_FAN_ALARM(6), "fan6_alarm", SENSORS_FSCSCY_FAN6,  
     4504                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4505    { { SENSORS_FSCHMD_FAN_FAULT(1), "fan1_fault", SENSORS_FSCSCY_FAN1,  
     4506                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4507    { { SENSORS_FSCHMD_FAN_FAULT(2), "fan2_fault", SENSORS_FSCSCY_FAN2,  
     4508                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4509    { { SENSORS_FSCHMD_FAN_FAULT(3), "fan3_fault", SENSORS_FSCSCY_FAN3,  
     4510                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4511    { { SENSORS_FSCHMD_FAN_FAULT(4), "fan4_fault", SENSORS_FSCSCY_FAN4,  
     4512                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4513    { { SENSORS_FSCHMD_FAN_FAULT(5), "fan5_fault", SENSORS_FSCSCY_FAN5,  
     4514                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4515    { { SENSORS_FSCHMD_FAN_FAULT(6), "fan6_fault", SENSORS_FSCSCY_FAN6,  
     4516                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
    44514517    { { 0 }, 0 } 
    44524518  }; 
     
    45194585                                     SENSORS_FSCHER_WDOG_PRESET, RW },  
    45204586                                     FSCHER_SYSCTL_WDOG, VALUE(3), 0 }, 
     4587    /* below this line are features only exported with the new fschmd drv */ 
     4588    { { SENSORS_FSCHMD_TEMP_MAX(1), "temp1_max", SENSORS_FSCHER_TEMP1, 
     4589                                    SENSORS_FSCHER_TEMP1, RW }, 
     4590                                    NOSYSCTL, VALUE(1), 0 }, 
     4591    { { SENSORS_FSCHMD_TEMP_MAX(2), "temp2_max", SENSORS_FSCHER_TEMP2, 
     4592                                    SENSORS_FSCHER_TEMP2, RW }, 
     4593                                    NOSYSCTL, VALUE(1), 0 }, 
     4594    { { SENSORS_FSCHMD_TEMP_MAX(3), "temp3_max", SENSORS_FSCHER_TEMP3, 
     4595                                    SENSORS_FSCHER_TEMP3, RW }, 
     4596                                    NOSYSCTL, VALUE(1), 0 }, 
     4597    { { SENSORS_FSCHMD_TEMP_ALARM(1), "temp1_alarm", SENSORS_FSCHER_TEMP1, 
     4598                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4599    { { SENSORS_FSCHMD_TEMP_ALARM(2), "temp2_alarm", SENSORS_FSCHER_TEMP2, 
     4600                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4601    { { SENSORS_FSCHMD_TEMP_ALARM(3), "temp3_alarm", SENSORS_FSCHER_TEMP3,  
     4602                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4603    { { SENSORS_FSCHMD_TEMP_FAULT(1), "temp1_fault", SENSORS_FSCHER_TEMP1,  
     4604                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4605    { { SENSORS_FSCHMD_TEMP_FAULT(2), "temp2_fault", SENSORS_FSCHER_TEMP2,  
     4606                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4607    { { SENSORS_FSCHMD_TEMP_FAULT(3), "temp3_fault", SENSORS_FSCHER_TEMP3,  
     4608                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4609    { { SENSORS_FSCHMD_FAN_ALARM(1), "fan1_alarm", SENSORS_FSCHER_FAN1,  
     4610                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4611    { { SENSORS_FSCHMD_FAN_ALARM(2), "fan2_alarm", SENSORS_FSCHER_FAN2,  
     4612                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4613    { { SENSORS_FSCHMD_FAN_ALARM(3), "fan3_alarm", SENSORS_FSCHER_FAN3,  
     4614                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4615    { { SENSORS_FSCHMD_FAN_FAULT(1), "fan1_fault", SENSORS_FSCHER_FAN1,  
     4616                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4617    { { SENSORS_FSCHMD_FAN_FAULT(2), "fan2_fault", SENSORS_FSCHER_FAN2,  
     4618                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
     4619    { { SENSORS_FSCHMD_FAN_FAULT(3), "fan3_fault", SENSORS_FSCHER_FAN3,  
     4620                                    NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 
    45214621    { { 0 }, 0 } 
    45224622  }; 
     
    62196319}; 
    62206320 
     6321#define SENSORS_FSCHMD_IN_FEATURES(nr) \ 
     6322        { { SENSORS_FSCHMD_IN(nr), "in" #nr, \ 
     6323                NOMAP, NOMAP, R }, \ 
     6324                NOSYSCTL, VALUE(3), 3 } 
     6325 
     6326#define SENSORS_FSCHMD_TEMP_FEATURES(nr) \ 
     6327        { { SENSORS_FSCHMD_TEMP(nr), "temp" #nr, \ 
     6328                NOMAP, NOMAP, R }, \ 
     6329                NOSYSCTL, VALUE(3), 3 }, \ 
     6330        { { SENSORS_FSCHMD_TEMP_MAX(nr), "temp" #nr "_max", \ 
     6331                SENSORS_FSCHMD_TEMP(nr), SENSORS_FSCHMD_TEMP(nr), RW }, \ 
     6332                NOSYSCTL, VALUE(1), 3 }, \ 
     6333        { { SENSORS_FSCHMD_TEMP_ALARM(nr), "temp" #nr "_alarm", \ 
     6334                SENSORS_FSCHMD_TEMP(nr), NOMAP, R }, \ 
     6335                NOSYSCTL, VALUE(1), 0 }, \ 
     6336        { { SENSORS_FSCHMD_TEMP_FAULT(nr), "temp" #nr "_fault", \ 
     6337                SENSORS_FSCHMD_TEMP(nr), NOMAP, R }, \ 
     6338                NOSYSCTL, VALUE(2), 0 } 
     6339 
     6340#define SENSORS_FSCHMD_FAN_FEATURES(nr) \ 
     6341        { { SENSORS_FSCHMD_FAN(nr), "fan" #nr, \ 
     6342                NOMAP, NOMAP, R }, \ 
     6343                NOSYSCTL, VALUE(2), 0 }, \ 
     6344        { { SENSORS_FSCHMD_FAN_DIV(nr), "fan" #nr "_div", \ 
     6345                SENSORS_FSCHMD_FAN(nr), NOMAP, R }, \ 
     6346                NOSYSCTL, VALUE(1), 0 }, \ 
     6347        { { SENSORS_FSCHMD_FAN_ALARM(nr), "fan" #nr "_alarm", \ 
     6348                SENSORS_FSCHMD_FAN(nr), NOMAP, R }, \ 
     6349                NOSYSCTL, VALUE(1), 0 }, \ 
     6350        { { SENSORS_FSCHMD_FAN_FAULT(nr), "fan" #nr "_fault", \ 
     6351                SENSORS_FSCHMD_FAN(nr), NOMAP, R }, \ 
     6352                NOSYSCTL, VALUE(1), 0 } 
     6353 
     6354static sensors_chip_feature fschmd_features[] = 
     6355{ 
     6356        SENSORS_FSCHMD_IN_FEATURES(0), 
     6357        SENSORS_FSCHMD_IN_FEATURES(1), 
     6358        SENSORS_FSCHMD_IN_FEATURES(2), 
     6359        SENSORS_FSCHMD_TEMP_FEATURES(1), 
     6360        SENSORS_FSCHMD_TEMP_FEATURES(2), 
     6361        SENSORS_FSCHMD_TEMP_FEATURES(3), 
     6362        SENSORS_FSCHMD_TEMP_FEATURES(4), 
     6363        SENSORS_FSCHMD_TEMP_FEATURES(5), 
     6364        SENSORS_FSCHMD_FAN_FEATURES(1), 
     6365        SENSORS_FSCHMD_FAN_FEATURES(2), 
     6366        SENSORS_FSCHMD_FAN_FEATURES(3), 
     6367        SENSORS_FSCHMD_FAN_FEATURES(4), 
     6368        SENSORS_FSCHMD_FAN_FEATURES(5), 
     6369        { { 0 }, 0 } 
     6370}; 
     6371 
     6372static sensors_chip_feature fschrc_features[] = 
     6373{ 
     6374        SENSORS_FSCHMD_IN_FEATURES(0), 
     6375        SENSORS_FSCHMD_IN_FEATURES(1), 
     6376        SENSORS_FSCHMD_IN_FEATURES(2), 
     6377        SENSORS_FSCHMD_TEMP_FEATURES(1), 
     6378        SENSORS_FSCHMD_TEMP_FEATURES(2), 
     6379        SENSORS_FSCHMD_TEMP_FEATURES(3), 
     6380        SENSORS_FSCHMD_FAN_FEATURES(1), 
     6381        SENSORS_FSCHMD_FAN_FEATURES(2), 
     6382        SENSORS_FSCHMD_FAN_FEATURES(3), 
     6383        SENSORS_FSCHMD_FAN_FEATURES(4), 
     6384        { { 0 }, 0 } 
     6385}; 
     6386 
    62216387sensors_chip_features sensors_chip_features_list[] = 
    62226388{ 
     
    63376503 { SENSORS_APPLESMC_PREFIX, applesmc_features }, 
    63386504 { SENSORS_F71882FG_PREFIX, f71882fg_features }, 
     6505 { SENSORS_FSCHMD_PREFIX, fschmd_features }, 
     6506 { SENSORS_FSCHRC_PREFIX, fschrc_features }, 
    63396507 { 0 } 
    63406508}; 
  • lm-sensors/trunk/lib/chips.h

    r4799 r4939  
    23422342#define SENSORS_F71882FG_TEMP_TYPE(n)           (150 + (n)) 
    23432343 
     2344/* Fujitsu Siemens Computers Heimdal and Heracles */ 
     2345#define SENSORS_FSCHMD_PREFIX           "fscher" 
     2346#define SENSORS_FSCHRC_PREFIX           "fscher" 
     2347 
     2348/* Note, we start with feature numbers of 60+ to not have any overlapping 
     2349   features with the old FSCPOS, FSCSCY and FSCHER feature lists, as the 
     2350   FSCHMD feature defines for features only exported by the new FSCHMD driver 
     2351   are reused in the feature lists of the FSCPOS, FSCSCY and FSCHER */ 
     2352    
     2353/* in n from 0 to 3 */ 
     2354#define SENSORS_FSCHMD_IN(n)                    (60 + (n)) 
     2355/* fan n from 1 to 5 (4 for the hrc) */ 
     2356#define SENSORS_FSCHMD_FAN(n)                   (70 + (n)) 
     2357#define SENSORS_FSCHMD_FAN_DIV(n)               (80 + (n)) 
     2358#define SENSORS_FSCHMD_FAN_ALARM(n)             (90 + (n)) 
     2359#define SENSORS_FSCHMD_FAN_FAULT(n)             (100 + (n)) 
     2360/* temp n from 1 to 5 (3 for the hrc) */ 
     2361#define SENSORS_FSCHMD_TEMP(n)                  (110 + (n)) 
     2362#define SENSORS_FSCHMD_TEMP_MAX(n)              (120 + (n)) 
     2363#define SENSORS_FSCHMD_TEMP_ALARM(n)            (130 + (n)) 
     2364#define SENSORS_FSCHMD_TEMP_FAULT(n)            (140 + (n)) 
     2365 
    23442366#endif /* def LIB_SENSORS_CHIPS_H */ 
  • lm-sensors/trunk/lib/proc.c

    r4861 r4939  
    273273        Common conversions are as follows: 
    274274                fan%d_min -> fan%d_min (for magnitude) 
    275                 fan%d_state -> fan%d_status 
     275                fan%d_state -> fan%d_status (for old fscxxx drv) 
     276                fan%d_ripple -> fan%d_div (for old fscxxx drv, alt. name) 
    276277                fan%d -> fan%d_input 
    277278                pwm%d -> fan%d_pwm (alt. name) 
     
    290291                temp%d_low -> temp%d_min 
    291292                temp%d_crit -> temp%d_crit (for magnitude) 
    292                 temp%d_state -> temp%d_status 
     293                temp%d_state -> temp%d_status (for old fscxxx drv) 
    293294                temp%d_offset -> temp%d_offset (for magnitude) 
    294295                temp%d -> temp%d_input 
     
    347348                return 0; 
    348349        } 
     350        if(sscanf(name, "fan%d_rippl%c%c", &num, &last, &check) == 2 && last == 'e') { 
     351                strcpy(sysname, name); 
     352                sprintf(altsysname, "fan%d_div", num); 
     353                *sysmag = 0; 
     354                return 0; 
     355        } 
    349356        if(sscanf(name, "fan%d%c", &num, &check) == 1) { 
    350357                sprintf(sysname, "fan%d_input", num); 
     
    449456/* give up, use old name (probably won't work though...) */ 
    450457/* known to be the same: 
    451         "alarms", "beep_enable", "vrm", "fan%d_div" 
     458        "alarms", "beep_enable", "vrm", "fan%d_div" (except old fscxxx drivers 
     459        which use fan%d_ripple, fixed using altsysname for new drv. GRR) 
    452460*/ 
    453461        strcpy(sysname, name); 
  • lm-sensors/trunk/prog/sensors/chips.c

    r4938 r4939  
    35183518  int valid; 
    35193519 
     3520  /* Check for the non standard temp1_state sysfs attr the old driver uses 
     3521     if it isn't present we are talking to the new fschmd driver */ 
     3522  if (sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1_STATE,&state) != 0) { 
     3523    print_fscpos_fschmd(name); 
     3524    return; 
     3525  } 
     3526 
     3527  /* no need to read TEMP1_STATE, as we just successfully did that above */ 
    35203528  if (!sensors_get_label_and_valid(*name,SENSORS_FSCPOS_TEMP1,&label,&valid) && 
    3521       !sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1,&temp) && 
    3522       !sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1_STATE,&state)) {  
     3529      !sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1,&temp)) { 
    35233530    if (valid) { 
    35243531      print_label(label,10); 
     
    36383645  double voltage, temp, templim, state, fan; 
    36393646  int valid; 
    3640  
     3647   
     3648  /* Check for the non standard temp1_state sysfs attr the old driver uses 
     3649     if it isn't present we are talking to the new fschmd driver */ 
     3650  if (sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1_STATE,&state) != 0) { 
     3651    print_fscscy_fschmd(name); 
     3652    return; 
     3653  } 
     3654 
     3655  /* no need to read TEMP1_STATE, as we just successfully did that above */ 
    36413656  if (!sensors_get_label_and_valid(*name,SENSORS_FSCSCY_TEMP1,&label,&valid) && 
    36423657      !sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1,&temp) && 
    3643       !sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1_LIM,&templim) && 
    3644       !sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1_STATE,&state)) {  
     3658      !sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1_LIM,&templim)) { 
    36453659    if (valid) { 
    36463660      print_label(label,10); 
     
    38203834  int valid; 
    38213835   
     3836  /* Check for the non standard temp1_state sysfs attr the old driver uses 
     3837     if it isn't present we are talking to the new fschmd driver */ 
     3838  if (sensors_get_feature(*name,SENSORS_FSCHER_TEMP1_STATE,&state) != 0) { 
     3839    print_fscher_fschmd(name); 
     3840    return; 
     3841  } 
     3842 
     3843  /* no need to read TEMP1_STATE, as we just successfully did that above */ 
    38223844  if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_TEMP1,&label,&valid) 
    3823       && !sensors_get_feature(*name,SENSORS_FSCHER_TEMP1,&temp) 
    3824       && !sensors_get_feature(*name,SENSORS_FSCHER_TEMP1_STATE,&state)) {  
     3845      && !sensors_get_feature(*name,SENSORS_FSCHER_TEMP1,&temp)) { 
    38253846    if (valid) { 
    38263847      print_label(label,10); 
     
    62836304} 
    62846305 
     6306static void print_fschmd_in(const sensors_chip_name *name, int i, 
     6307  int in_feature) 
     6308{ 
     6309  char *label; 
     6310  double cur; 
     6311  int valid; 
     6312 
     6313  if (!sensors_get_label_and_valid(*name, in_feature, &label, &valid) && 
     6314      !sensors_get_feature(*name, in_feature, &cur)) { 
     6315    if (valid) { 
     6316      print_label(label, 10); 
     6317      printf("%+6.2f V\n", cur); 
     6318    } 
     6319  } else { 
     6320    printf("ERROR: Can't get in%d data!\n", i); 
     6321  } 
     6322  free(label); 
     6323} 
     6324 
     6325static void print_fschmd_fan(const sensors_chip_name *name, int i, 
     6326  int fan_feature, int fan_div_feature) 
     6327{ 
     6328  char *label; 
     6329  double cur, div, alarm, fault; 
     6330  int valid; 
     6331 
     6332  if (!sensors_get_label_and_valid(*name, fan_feature, &label, &valid) && 
     6333      !sensors_get_feature(*name, fan_feature, &cur) && 
     6334      !sensors_get_feature(*name, fan_div_feature, &div) && 
     6335      !sensors_get_feature(*name, SENSORS_FSCHMD_FAN_ALARM(i), &alarm) && 
     6336      !sensors_get_feature(*name, SENSORS_FSCHMD_FAN_FAULT(i), &fault)) { 
     6337    if (valid) { 
     6338      print_label(label, 10); 
     6339      if (fault) 
     6340        printf("   FAULT\n"); 
     6341      else 
     6342        printf("%4.0f RPM  (div = %1.0f)  %s\n", cur, div, 
     6343               alarm ? "ALARM" : ""); 
     6344    } 
     6345  }  
     6346  /* no error on failure as we get used for various FSC chips and not all 
     6347     have the same amount of fan sensors */ 
     6348   
     6349  free(label); 
     6350} 
     6351 
     6352static void print_fschmd_temp(const sensors_chip_name *name, int i, 
     6353  int temp_feature, int temp_max_feature) 
     6354{ 
     6355  char *label; 
     6356  double cur, max, alarm, fault; 
     6357  int valid; 
     6358 
     6359  if (!sensors_get_label_and_valid(*name, temp_feature, &label, &valid) && 
     6360      !sensors_get_feature(*name, temp_feature, &cur) && 
     6361      (!temp_max_feature || 
     6362       !sensors_get_feature(*name, temp_max_feature, &max)) && 
     6363      !sensors_get_feature(*name, SENSORS_FSCHMD_TEMP_ALARM(i), &alarm) && 
     6364      !sensors_get_feature(*name, SENSORS_FSCHMD_TEMP_FAULT(i), &fault)) { 
     6365    if (valid) { 
     6366      print_label(label, 10); 
     6367      if (fault) 
     6368        printf("   FAULT\n"); 
     6369      else { 
     6370        /* The fscpos doesn't have max temp limits */ 
     6371        if (temp_max_feature) 
     6372          print_temp_info(cur, max, 0, MAXONLY, 1, 1); 
     6373        else 
     6374          print_temp_info(cur, 0, 0, SINGLE, 1, 1); 
     6375        printf("%s\n", alarm ? "ALARM" : ""); 
     6376      } 
     6377    } 
     6378  } 
     6379  /* no error on failure as we get used for various FSC chips and not all 
     6380     have the same amount of temp sensors */ 
     6381 
     6382  free(label); 
     6383} 
     6384 
     6385void print_fschmd(const sensors_chip_name *name) 
     6386{ 
     6387  int i; 
     6388   
     6389  for (i = 0; i <= 2; i++) 
     6390    print_fschmd_in(name, i, SENSORS_FSCHMD_IN(i)); 
     6391 
     6392  for (i = 1; i <= 6; i++) 
     6393    print_fschmd_fan(name, i, SENSORS_FSCHMD_FAN(i), 
     6394                     SENSORS_FSCHMD_FAN_DIV(i)); 
     6395 
     6396  for (i = 1; i <= 5; i++) 
     6397    print_fschmd_temp(name, i, SENSORS_FSCHMD_TEMP(i), 
     6398                      SENSORS_FSCHMD_TEMP_MAX(i)); 
     6399} 
     6400 
     6401void print_fscpos_fschmd(const sensors_chip_name *name) 
     6402{ 
     6403  int i; 
     6404   
     6405  for (i = 0; i < 3; i++) 
     6406    print_fschmd_in(name, i, SENSORS_FSCPOS_VOLTAGE1 + i); 
     6407 
     6408  for (i = 0; i < 3; i++) 
     6409    print_fschmd_fan(name, i + 1, SENSORS_FSCPOS_FAN1 + i, 
     6410                     SENSORS_FSCPOS_FAN1_RIPPLE + i); 
     6411 
     6412  for (i = 0; i < 3; i++) 
     6413    print_fschmd_temp(name, i + 1, SENSORS_FSCPOS_TEMP1 + i, 0); 
     6414} 
     6415 
     6416void print_fscscy_fschmd(const sensors_chip_name *name) 
     6417{ 
     6418  int i; 
     6419   
     6420  for (i = 0; i < 3; i++) 
     6421    print_fschmd_in(name, i, SENSORS_FSCSCY_VOLTAGE1 + i); 
     6422 
     6423  for (i = 0; i < 6; i++) 
     6424    print_fschmd_fan(name, i + 1, SENSORS_FSCSCY_FAN1 + i, 
     6425                     SENSORS_FSCSCY_FAN1_RIPPLE + i); 
     6426 
     6427  for (i = 0; i < 4; i++) 
     6428    print_fschmd_temp(name, i + 1, SENSORS_FSCSCY_TEMP1 + i, 
     6429                      SENSORS_FSCSCY_TEMP1_MAX + i); 
     6430} 
     6431 
     6432void print_fscher_fschmd(const sensors_chip_name *name) 
     6433{ 
     6434  int i; 
     6435   
     6436  for (i = 0; i < 3; i++) 
     6437    print_fschmd_in(name, i, SENSORS_FSCHER_VOLTAGE1 + i); 
     6438 
     6439  for (i = 0; i < 3; i++) 
     6440    print_fschmd_fan(name, i + 1, SENSORS_FSCHER_FAN1 + i, 
     6441                     SENSORS_FSCHER_FAN1_RIPPLE + i); 
     6442 
     6443  for (i = 0; i < 3; i++) 
     6444    print_fschmd_temp(name, i + 1, SENSORS_FSCHER_TEMP1 + i, 
     6445                      SENSORS_FSCHMD_TEMP_MAX(i + 1)); 
     6446} 
     6447 
    62856448void print_unknown_chip(const sensors_chip_name *name) 
    62866449{ 
  • lm-sensors/trunk/prog/sensors/chips.h

    r4799 r4939  
    8282extern void print_f71882fg(const sensors_chip_name *name); 
    8383extern void print_thmc50(const sensors_chip_name *name); 
     84extern void print_fschmd(const sensors_chip_name *name); 
     85extern void print_fscpos_fschmd(const sensors_chip_name *name); 
     86extern void print_fscscy_fschmd(const sensors_chip_name *name); 
     87extern void print_fscher_fschmd(const sensors_chip_name *name); 
    8488 
    8589#endif /* def PROG_SENSORS_CHIPS_H */ 
  • lm-sensors/trunk/prog/sensors/main.c

    r4799 r4939  
    430430        { "thmc50", print_thmc50 }, 
    431431        { "adm1022", print_thmc50 }, 
     432        { "fschmd", print_fschmd }, 
     433        { "fschrc", print_fschmd }, 
    432434        { NULL, NULL } 
    433435};