Changeset 2403

Show
Ignore:
Timestamp:
03/31/04 20:58:05 (9 years ago)
Author:
khali
Message:

Preleminary (read-only) National Semiconductor PC87360, PC87363

and PC87364 fan monitor and controller support.

Location:
lm-sensors/trunk
Files:
8 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/doc/chips/SUMMARY

    r2370 r2403  
    146146        mtp008          3       7       3       3 pwm   yes     no 
    147147 
     148pc87360 
     149        pc87360         -       -       2       2 pwm   no      yes (LPC) 
     150        pc87363         -       -       2       2 pwm   no      yes (LPC) 
     151        pc87364         -       -       3       3 pwm   no      yes (LPC) 
     152 
    148153sis5595 
    149154        sis5595         0-1     4-5     2       -       no      yes 
  • lm-sensors/trunk/kernel/chips/Module.mk

    r2370 r2403  
    137137KERNELCHIPSTARGETS += $(MODULE_DIR)/smsc47m1.o 
    138138endif 
     139ifneq ($(shell if grep -q '^CONFIG_SENSORS_PC87360=y' $(LINUX)/.config; then echo 1; fi),1) 
     140KERNELCHIPSTARGETS += $(MODULE_DIR)/pc87360-fan.o 
     141endif 
    139142ifneq ($(shell if grep -q '^CONFIG_SENSORS_THMC50=y' $(LINUX)/.config; then echo 1; fi),1) 
    140143KERNELCHIPSTARGETS += $(MODULE_DIR)/thmc50.o 
  • lm-sensors/trunk/lib/chips.c

    r2398 r2403  
    42524252  }; 
    42534253 
     4254static sensors_chip_feature pc87360_features[] = 
     4255  {  
     4256    { SENSORS_PC87360_FAN1, "fan1", NOMAP, NOMAP, R, 
     4257                PC87360_SYSCTL_FAN1, VALUE(2), 0 }, 
     4258    { SENSORS_PC87360_FAN2, "fan2", NOMAP, NOMAP, R, 
     4259                PC87360_SYSCTL_FAN2, VALUE(2), 0 }, 
     4260    { SENSORS_PC87360_FAN1_MIN, "fan1_min", SENSORS_PC87360_FAN1, 
     4261                SENSORS_PC87360_FAN1, R, PC87360_SYSCTL_FAN1, 
     4262                VALUE(1), 0 }, 
     4263    { SENSORS_PC87360_FAN2_MIN, "fan2_min", SENSORS_PC87360_FAN2, 
     4264                SENSORS_PC87360_FAN2, R, PC87360_SYSCTL_FAN2, 
     4265                VALUE(1), 0 }, 
     4266    { SENSORS_PC87360_FAN1_DIV, "fan1_div", SENSORS_PC87360_FAN1, 
     4267                NOMAP, R, PC87360_SYSCTL_FAN_DIV, VALUE(1), 0 }, 
     4268    { SENSORS_PC87360_FAN2_DIV, "fan2_div", SENSORS_PC87360_FAN2, 
     4269                NOMAP, R, PC87360_SYSCTL_FAN_DIV, VALUE(2), 0 }, 
     4270    { SENSORS_PC87360_FAN1_STATUS, "fan1_status", SENSORS_PC87360_FAN1, 
     4271                NOMAP, R, PC87360_SYSCTL_FAN1_STATUS, VALUE(1), 0 }, 
     4272    { SENSORS_PC87360_FAN2_STATUS, "fan2_status", SENSORS_PC87360_FAN2, 
     4273                NOMAP, R, PC87360_SYSCTL_FAN2_STATUS, VALUE(1), 0 }, 
     4274    { 0 } 
     4275  }; 
     4276 
     4277static sensors_chip_feature pc87364_features[] = 
     4278  {  
     4279    { SENSORS_PC87360_FAN1, "fan1", NOMAP, NOMAP, R, 
     4280                PC87360_SYSCTL_FAN1, VALUE(2), 0 }, 
     4281    { SENSORS_PC87360_FAN2, "fan2", NOMAP, NOMAP, R, 
     4282                PC87360_SYSCTL_FAN2, VALUE(2), 0 }, 
     4283    { SENSORS_PC87360_FAN3, "fan3", NOMAP, NOMAP, R, 
     4284                PC87360_SYSCTL_FAN3, VALUE(2), 0 }, 
     4285    { SENSORS_PC87360_FAN1_MIN, "fan1_min", SENSORS_PC87360_FAN1, 
     4286                SENSORS_PC87360_FAN1, R, PC87360_SYSCTL_FAN1, 
     4287                VALUE(1), 0 }, 
     4288    { SENSORS_PC87360_FAN2_MIN, "fan2_min", SENSORS_PC87360_FAN2, 
     4289                SENSORS_PC87360_FAN2, R, PC87360_SYSCTL_FAN2, 
     4290                VALUE(1), 0 }, 
     4291    { SENSORS_PC87360_FAN3_MIN, "fan3_min", SENSORS_PC87360_FAN3, 
     4292                SENSORS_PC87360_FAN3, R, PC87360_SYSCTL_FAN3, 
     4293                VALUE(1), 0 }, 
     4294    { SENSORS_PC87360_FAN1_DIV, "fan1_div", SENSORS_PC87360_FAN1, 
     4295                NOMAP, R, PC87360_SYSCTL_FAN_DIV, VALUE(1), 0 }, 
     4296    { SENSORS_PC87360_FAN2_DIV, "fan2_div", SENSORS_PC87360_FAN2, 
     4297                NOMAP, R, PC87360_SYSCTL_FAN_DIV, VALUE(2), 0 }, 
     4298    { SENSORS_PC87360_FAN3_DIV, "fan3_div", SENSORS_PC87360_FAN3, 
     4299                NOMAP, R, PC87360_SYSCTL_FAN_DIV, VALUE(2), 0 }, 
     4300    { SENSORS_PC87360_FAN1_STATUS, "fan1_status", SENSORS_PC87360_FAN1, 
     4301                NOMAP, R, PC87360_SYSCTL_FAN1_STATUS, VALUE(1), 0 }, 
     4302    { SENSORS_PC87360_FAN2_STATUS, "fan2_status", SENSORS_PC87360_FAN2, 
     4303                NOMAP, R, PC87360_SYSCTL_FAN2_STATUS, VALUE(1), 0 }, 
     4304    { SENSORS_PC87360_FAN3_STATUS, "fan3_status", SENSORS_PC87360_FAN3, 
     4305                NOMAP, R, PC87360_SYSCTL_FAN3_STATUS, VALUE(1), 0 }, 
     4306    { 0 } 
     4307  }; 
     4308 
    42544309static sensors_chip_feature lm92_features[] = 
    42554310  { 
     
    47984853 { SENSORS_VT1211_PREFIX, vt1211_features },  
    47994854 { SENSORS_SMSC47M1_PREFIX, smsc47m1_features },  
     4855 { SENSORS_PC87360_PREFIX, pc87360_features },  
     4856 { SENSORS_PC87363_PREFIX, pc87360_features },  
     4857 { SENSORS_PC87364_PREFIX, pc87364_features },  
    48004858 { SENSORS_LM92_PREFIX, lm92_features },  
    48014859 { SENSORS_VT8231_PREFIX, vt8231_features },  
  • lm-sensors/trunk/lib/chips.h

    r2321 r2403  
    16191619#define SENSORS_SMSC47M1_ALARMS 81 /* R */ 
    16201620 
     1621#define SENSORS_PC87360_PREFIX "pc87360" 
     1622#define SENSORS_PC87363_PREFIX "pc87363" 
     1623#define SENSORS_PC87364_PREFIX "pc87364" 
     1624 
     1625#define SENSORS_PC87360_FAN1 31 /* R */ 
     1626#define SENSORS_PC87360_FAN2 32 /* R */ 
     1627#define SENSORS_PC87360_FAN3 33 /* R */ 
     1628#define SENSORS_PC87360_FAN1_MIN 41 /* R */ 
     1629#define SENSORS_PC87360_FAN2_MIN 42 /* R */ 
     1630#define SENSORS_PC87360_FAN3_MIN 43 /* R */ 
     1631#define SENSORS_PC87360_FAN1_DIV 71 /* R */ 
     1632#define SENSORS_PC87360_FAN2_DIV 72 /* R */ 
     1633#define SENSORS_PC87360_FAN3_DIV 73 /* R */ 
     1634#define SENSORS_PC87360_FAN1_STATUS 81 /* R */ 
     1635#define SENSORS_PC87360_FAN2_STATUS 82 /* R */ 
     1636#define SENSORS_PC87360_FAN3_STATUS 83 /* R */ 
     1637 
    16211638#define SENSORS_LM92_PREFIX "lm92" 
    16221639 
  • lm-sensors/trunk/prog/detect/sensors-detect

    r2393 r2403  
    13811381     { 
    13821382        name => "Nat. Semi. PC87360 Super IO Fan Sensors", 
    1383         driver => "to-be-written", 
     1383        driver => "pc87360-fan", 
    13841384        addrreg => 0x2e, 
    13851385        datareg => 0x2f, 
     
    13951395     { 
    13961396        name => "Nat. Semi. PC87363 Super IO Fan Sensors", 
    1397         driver => "to-be-written", 
     1397        driver => "pc87360-fan", 
    13981398        addrreg => 0x2e, 
    13991399        datareg => 0x2f, 
     
    14091409     { 
    14101410        name => "Nat. Semi. PC87364 Super IO Fan Sensors", 
    1411         driver => "to-be-written", 
     1411        driver => "pc87360-fan", 
    14121412        addrreg => 0x2e, 
    14131413        datareg => 0x2f, 
  • lm-sensors/trunk/prog/sensors/chips.c

    r2400 r2403  
    39893989} 
    39903990 
     3991void print_pc87360(const sensors_chip_name *name) 
     3992{ 
     3993  char *label = NULL; 
     3994  double cur, min, fdiv; 
     3995  int status, valid; 
     3996 
     3997  if (!sensors_get_feature(*name, SENSORS_PC87360_FAN1_STATUS, &cur))  
     3998    status = cur + 0.5; 
     3999  else { 
     4000    printf("ERROR: Can't get FAN1 status data!\n"); 
     4001    status = 0; 
     4002  } 
     4003 
     4004  if (!sensors_get_label_and_valid(*name, SENSORS_PC87360_FAN1, &label, &valid) 
     4005   && !sensors_get_feature(*name, SENSORS_PC87360_FAN1, &cur) 
     4006   && !sensors_get_feature(*name, SENSORS_PC87360_FAN1_DIV, &fdiv) 
     4007   && !sensors_get_feature(*name, SENSORS_PC87360_FAN1_MIN, &min)) { 
     4008    if (valid) { 
     4009      print_label(label, 10); 
     4010      printf("%4.0f RPM  (min = %4.0f RPM, div = %1.0f)          %s\n", 
     4011             cur, min, fdiv, 
     4012             status&PC87360_ALARM_FAN_OVERFLOW?"OVERFLOW": 
     4013             status&PC87360_ALARM_FAN_LOW?"ALARM":""); 
     4014    } 
     4015  } else 
     4016    printf("ERROR: Can't get FAN1 data!\n"); 
     4017  free_the_label(&label); 
     4018 
     4019  if (!sensors_get_feature(*name, SENSORS_PC87360_FAN2_STATUS, &cur))  
     4020    status = cur + 0.5; 
     4021  else { 
     4022    printf("ERROR: Can't get FAN2 status data!\n"); 
     4023    status = 0; 
     4024  } 
     4025 
     4026  if (!sensors_get_label_and_valid(*name, SENSORS_PC87360_FAN2, &label, &valid) 
     4027   && !sensors_get_feature(*name, SENSORS_PC87360_FAN2, &cur) 
     4028   && !sensors_get_feature(*name, SENSORS_PC87360_FAN2_DIV, &fdiv) 
     4029   && !sensors_get_feature(*name, SENSORS_PC87360_FAN2_MIN, &min)) { 
     4030    if (valid) { 
     4031      print_label(label, 10); 
     4032      printf("%4.0f RPM  (min = %4.0f RPM, div = %1.0f)          %s\n", 
     4033             cur, min, fdiv, 
     4034             status&PC87360_ALARM_FAN_OVERFLOW?"OVERFLOW": 
     4035             status&PC87360_ALARM_FAN_LOW?"ALARM":""); 
     4036    } 
     4037  } else 
     4038    printf("ERROR: Can't get FAN2 data!\n"); 
     4039  free_the_label(&label); 
     4040} 
     4041 
     4042void print_pc87364(const sensors_chip_name *name) 
     4043{ 
     4044  char *label = NULL; 
     4045  double cur, min, fdiv; 
     4046  int status, valid; 
     4047 
     4048  print_pc87360(name); 
     4049 
     4050  if (!sensors_get_feature(*name, SENSORS_PC87360_FAN3_STATUS, &cur))  
     4051    status = cur + 0.5; 
     4052  else { 
     4053    printf("ERROR: Can't get FAN3 status data!\n"); 
     4054    status = 0; 
     4055  } 
     4056 
     4057  if (!sensors_get_label_and_valid(*name, SENSORS_PC87360_FAN3, &label, &valid) 
     4058   && !sensors_get_feature(*name, SENSORS_PC87360_FAN3, &cur) 
     4059   && !sensors_get_feature(*name, SENSORS_PC87360_FAN3_DIV, &fdiv) 
     4060   && !sensors_get_feature(*name, SENSORS_PC87360_FAN3_MIN, &min)) { 
     4061    if (valid) { 
     4062      print_label(label, 10); 
     4063      printf("%4.0f RPM  (min = %4.0f RPM, div = %1.0f)          %s\n", 
     4064             cur, min, fdiv, 
     4065             status&PC87360_ALARM_FAN_OVERFLOW?"OVERFLOW": 
     4066             status&PC87360_ALARM_FAN_LOW?"ALARM":""); 
     4067    } 
     4068  } else 
     4069    printf("ERROR: Can't get FAN3 data!\n"); 
     4070  free_the_label(&label); 
     4071} 
     4072 
    39914073static void lm92_print_temp (float n_cur,float n_high,float n_low,float n_crit,float n_hyst) 
    39924074{ 
  • lm-sensors/trunk/prog/sensors/chips.h

    r2216 r2403  
    5353extern void print_vt1211(const sensors_chip_name *name); 
    5454extern void print_smsc47m1(const sensors_chip_name *name); 
     55extern void print_pc87360(const sensors_chip_name *name); 
     56extern void print_pc87364(const sensors_chip_name *name); 
    5557extern void print_lm92(const sensors_chip_name *name); 
    5658extern void print_vt8231(const sensors_chip_name *name); 
  • lm-sensors/trunk/prog/sensors/main.c

    r2387 r2403  
    411411        { "vt1211", print_vt1211 }, 
    412412        { "smsc47m1", print_smsc47m1 }, 
     413        { "pc87360", print_pc87360 }, 
     414        { "pc87363", print_pc87360 }, 
     415        { "pc87364", print_pc87364 }, 
    413416        { "lm92", print_lm92 }, 
    414417        { "vt8231", print_vt8231 },