Show
Ignore:
Timestamp:
03/27/07 17:46:14 (6 years ago)
Author:
khali
Message:

Add user-space support for the SMSC DME1737. Patch from Juerg Haefliger.

Files:
1 modified

Legend:

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

    r4352 r4355  
    59275927} 
    59285928 
     5929static void print_dme1737_in(const sensors_chip_name *name, int i) 
     5930{ 
     5931  char *label; 
     5932  double cur, min, max, alarm; 
     5933  int valid; 
     5934 
     5935  if (!sensors_get_label_and_valid(*name, SENSORS_DME1737_IN(i), &label, 
     5936                                   &valid) && 
     5937      !sensors_get_feature(*name, SENSORS_DME1737_IN(i), &cur) && 
     5938      !sensors_get_feature(*name, SENSORS_DME1737_IN_MIN(i), &min) && 
     5939      !sensors_get_feature(*name, SENSORS_DME1737_IN_MAX(i), &max) && 
     5940      !sensors_get_feature(*name, SENSORS_DME1737_IN_ALARM(i), &alarm)) { 
     5941    if (valid) { 
     5942      print_label(label, 10); 
     5943      printf("%+6.2f V  (min = %+6.2f V, max = %+6.2f V)  %s\n", 
     5944             cur, min, max, alarm ? "ALARM" : ""); 
     5945    } 
     5946  } else { 
     5947    printf("ERROR: Can't get in%d data!\n", i); 
     5948  } 
     5949  free(label); 
     5950} 
     5951 
     5952static void print_dme1737_temp(const sensors_chip_name *name, int i) 
     5953{ 
     5954  char *label; 
     5955  double cur, min, max, alarm, fault; 
     5956  int valid; 
     5957 
     5958  if (!sensors_get_label_and_valid(*name, SENSORS_DME1737_TEMP(i), &label, 
     5959                                   &valid) && 
     5960      !sensors_get_feature(*name, SENSORS_DME1737_TEMP(i), &cur) && 
     5961      !sensors_get_feature(*name, SENSORS_DME1737_TEMP_MIN(i), &min) && 
     5962      !sensors_get_feature(*name, SENSORS_DME1737_TEMP_MAX(i), &max) && 
     5963      !sensors_get_feature(*name, SENSORS_DME1737_TEMP_ALARM(i), &alarm) && 
     5964      !sensors_get_feature(*name, SENSORS_DME1737_TEMP_FAULT(i), &fault)) { 
     5965    if (valid) { 
     5966      print_label(label, 10); 
     5967      print_temp_info(cur, max, min, MINMAX, 0, 0); 
     5968      printf("%s  %s\n", fault ? "FAULT" : "", alarm ? "ALARM" : ""); 
     5969    } 
     5970  } else { 
     5971    printf("ERROR: Can't get temp%d data!\n", i); 
     5972  } 
     5973  free(label); 
     5974} 
     5975 
     5976static void print_dme1737_fan(const sensors_chip_name *name, int i) 
     5977{ 
     5978  char *label; 
     5979  double cur, min, alarm; 
     5980  int valid; 
     5981 
     5982  if (!sensors_get_label_and_valid(*name, SENSORS_DME1737_FAN(i), &label, 
     5983                                   &valid) && 
     5984      !sensors_get_feature(*name, SENSORS_DME1737_FAN(i), &cur) && 
     5985      !sensors_get_feature(*name, SENSORS_DME1737_FAN_MIN(i), &min) && 
     5986      !sensors_get_feature(*name, SENSORS_DME1737_FAN_ALARM(i), &alarm)) { 
     5987    if (valid) { 
     5988      print_label(label, 10); 
     5989      printf("%4.0f RPM  (min = %4.0f RPM)  %s\n",  
     5990             cur, min, alarm ? "ALARM" : ""); 
     5991    } 
     5992  } else { 
     5993    printf("ERROR: Can't get fan%d data!\n", i); 
     5994  } 
     5995  free(label); 
     5996} 
     5997 
     5998static void print_dme1737_pwm(const sensors_chip_name *name, int i) 
     5999{ 
     6000  char *label; 
     6001  double cur, enable, freq; 
     6002  int valid; 
     6003 
     6004  if (!sensors_get_label_and_valid(*name, SENSORS_DME1737_PWM(i), &label, 
     6005                                   &valid) && 
     6006      !sensors_get_feature(*name, SENSORS_DME1737_PWM(i), &cur) && 
     6007      !sensors_get_feature(*name, SENSORS_DME1737_PWM_ENABLE(i), &enable) && 
     6008      !sensors_get_feature(*name, SENSORS_DME1737_PWM_FREQ(i), &freq)) { 
     6009    if (valid) { 
     6010      print_label(label, 10); 
     6011      printf("%4.0f      (enable = %1.0f, freq = %6.0f Hz)\n", cur, enable, freq); 
     6012    } 
     6013  } else { 
     6014    printf("ERROR: Can't get pwm%d data!\n", i); 
     6015  } 
     6016  free(label); 
     6017} 
     6018 
     6019void print_dme1737(const sensors_chip_name *name) 
     6020{ 
     6021  int i; 
     6022 
     6023  for (i = 0; i < 7; i++) { 
     6024    print_dme1737_in(name, i); 
     6025  } 
     6026 
     6027  for (i = 1; i < 4; i++) { 
     6028    print_dme1737_temp(name, i); 
     6029  } 
     6030 
     6031  for (i = 1; i < 7; i++) { 
     6032    print_dme1737_fan(name, i); 
     6033  } 
     6034 
     6035  for (i = 1; i < 7; i++) { 
     6036    if (i == 4) 
     6037      continue; 
     6038    print_dme1737_pwm(name, i); 
     6039  } 
     6040 
     6041  print_vid_info(name, SENSORS_DME1737_VID, SENSORS_DME1737_VRM); 
     6042} 
     6043 
    59296044void print_unknown_chip(const sensors_chip_name *name) 
    59306045{