Changeset 3277

Show
Ignore:
Timestamp:
03/28/06 23:31:16 (3 years ago)
Author:
khali
Message:

Add userspace support for the smsc47m192 driver. Patch from
Hartmut Rick.

Files:

Legend:

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

    r3273 r3277  
    21422142#    set fan2_min 3000 
    21432143 
     2144chip "smsc47m192-*" 
     2145 
     2146# Temperature and voltage input from SMSC LPC47M192 and LPC47M997 chips 
     2147# This example works on a Gigabyte K8U motherboard 
     2148# Voltages are scaled internally, no computations needed 
     2149 
     2150    label in0 "+2.5V" 
     2151    set in0_min  2.5 * 0.95 
     2152    set in0_max  2.5 * 1.05 
     2153 
     2154    label in1 "VCore" 
     2155    set in1_min  vid * 0.95 
     2156    set in1_max  vid * 1.05 
     2157 
     2158    label in2 "+3.3V" 
     2159    set in2_min  3.3 * 0.95 
     2160    set in2_max  3.3 * 1.05 
     2161 
     2162    label in3 "+5V" 
     2163    set in3_min  5.0 * 0.95 
     2164    set in3_max  5.0 * 1.05 
     2165 
     2166    label in4 "+12V" 
     2167    set in4_min  12.0 * 0.95 
     2168    set in4_max  12.0 * 1.05 
     2169 
     2170    label in5 "VCC" 
     2171    set in5_min  3.3 * 0.95 
     2172    set in5_max  3.3 * 1.05 
     2173 
     2174    label in6 "+1.5V" 
     2175    set in6_min  1.5 * 0.95 
     2176    set in6_max  1.5 * 1.05 
     2177#   ignore in6 
     2178 
     2179    label in7 "+1.8V" 
     2180    set in7_min  1.8 * 0.95 
     2181    set in7_max  1.8 * 1.05 
     2182#   Haven't yet heard from any board that has 1.8V connected, so 
     2183#   this might be more appropriate: 
     2184#   ignore in7 
     2185     
     2186    label temp1 "Chip Temp" 
     2187#    set temp1_min   0 
     2188#    set temp1_max   60 
     2189 
     2190    label temp2 "CPU Temp" 
     2191#    set temp2_min   0 
     2192#    set temp2_max   60 
     2193 
     2194    label temp3 "Sys Temp" 
     2195#    set temp3_min   0 
     2196#    set temp3_max   60 
    21442197 
    21452198# 
  • lm-sensors/trunk/lib/chips.c

    r3272 r3277  
    47534753  }; 
    47544754 
     4755static sensors_chip_feature smsc47m192_features[] = 
     4756  {  
     4757    { SENSORS_SMSC47M192_IN(0), "in0", NOMAP, NOMAP,  
     4758                        R, NOSYSCTL, VALUE(3), 3 }, 
     4759    { SENSORS_SMSC47M192_IN(1), "in1", NOMAP, NOMAP, 
     4760                        R, NOSYSCTL, VALUE(3), 3 }, 
     4761    { SENSORS_SMSC47M192_IN(2), "in2", NOMAP, NOMAP, 
     4762                        R, NOSYSCTL, VALUE(3), 3 }, 
     4763    { SENSORS_SMSC47M192_IN(3), "in3", NOMAP, NOMAP, 
     4764                        R, NOSYSCTL, VALUE(3), 3 }, 
     4765    { SENSORS_SMSC47M192_IN(4), "in4", NOMAP, NOMAP, 
     4766                        R, NOSYSCTL, VALUE(3), 3 }, 
     4767    { SENSORS_SMSC47M192_IN(5), "in5", NOMAP, NOMAP, 
     4768                        R, NOSYSCTL, VALUE(3), 3 }, 
     4769    { SENSORS_SMSC47M192_IN(6), "in6", NOMAP, NOMAP, 
     4770                        R, NOSYSCTL, VALUE(3), 3 }, 
     4771    { SENSORS_SMSC47M192_IN(7), "in7", NOMAP, NOMAP, 
     4772                        R, NOSYSCTL, VALUE(3), 3 }, 
     4773    { SENSORS_SMSC47M192_IN_MIN(0), "in0_min", SENSORS_SMSC47M192_IN(0), 
     4774                SENSORS_SMSC47M192_IN(0), RW, NOSYSCTL, VALUE(1), 3 }, 
     4775    { SENSORS_SMSC47M192_IN_MIN(1), "in1_min", SENSORS_SMSC47M192_IN(1), 
     4776                SENSORS_SMSC47M192_IN(1), RW, NOSYSCTL, VALUE(1), 3 }, 
     4777    { SENSORS_SMSC47M192_IN_MIN(2), "in2_min", SENSORS_SMSC47M192_IN(2), 
     4778                SENSORS_SMSC47M192_IN(2), RW, NOSYSCTL, VALUE(1), 3 }, 
     4779    { SENSORS_SMSC47M192_IN_MIN(3), "in3_min", SENSORS_SMSC47M192_IN(3), 
     4780                SENSORS_SMSC47M192_IN(3), RW, NOSYSCTL, VALUE(1), 3 }, 
     4781    { SENSORS_SMSC47M192_IN_MIN(4), "in4_min", SENSORS_SMSC47M192_IN(4), 
     4782                SENSORS_SMSC47M192_IN(4), RW, NOSYSCTL, VALUE(1), 3 }, 
     4783    { SENSORS_SMSC47M192_IN_MIN(5), "in5_min", SENSORS_SMSC47M192_IN(5), 
     4784                SENSORS_SMSC47M192_IN(5), RW, NOSYSCTL, VALUE(1), 3 }, 
     4785    { SENSORS_SMSC47M192_IN_MIN(6), "in6_min", SENSORS_SMSC47M192_IN(6), 
     4786                SENSORS_SMSC47M192_IN(6), RW, NOSYSCTL, VALUE(1), 3 }, 
     4787    { SENSORS_SMSC47M192_IN_MIN(7), "in7_min", SENSORS_SMSC47M192_IN(7), 
     4788                SENSORS_SMSC47M192_IN(7), RW, NOSYSCTL, VALUE(1), 3 }, 
     4789    { SENSORS_SMSC47M192_IN_MAX(0), "in0_max", SENSORS_SMSC47M192_IN(0), 
     4790                SENSORS_SMSC47M192_IN(0), RW, NOSYSCTL, VALUE(2), 3 }, 
     4791    { SENSORS_SMSC47M192_IN_MAX(1), "in1_max", SENSORS_SMSC47M192_IN(1), 
     4792                SENSORS_SMSC47M192_IN(1), RW, NOSYSCTL, VALUE(2), 3 }, 
     4793    { SENSORS_SMSC47M192_IN_MAX(2), "in2_max", SENSORS_SMSC47M192_IN(2), 
     4794                SENSORS_SMSC47M192_IN(2), RW, NOSYSCTL, VALUE(2), 3 }, 
     4795    { SENSORS_SMSC47M192_IN_MAX(3), "in3_max", SENSORS_SMSC47M192_IN(3), 
     4796                SENSORS_SMSC47M192_IN(3), RW, NOSYSCTL, VALUE(2), 3 }, 
     4797    { SENSORS_SMSC47M192_IN_MAX(4), "in4_max", SENSORS_SMSC47M192_IN(4), 
     4798                SENSORS_SMSC47M192_IN(4), RW, NOSYSCTL, VALUE(2), 3 }, 
     4799    { SENSORS_SMSC47M192_IN_MAX(5), "in5_max", SENSORS_SMSC47M192_IN(5), 
     4800                SENSORS_SMSC47M192_IN(5), RW, NOSYSCTL, VALUE(2), 3 }, 
     4801    { SENSORS_SMSC47M192_IN_MAX(6), "in6_max", SENSORS_SMSC47M192_IN(6), 
     4802                SENSORS_SMSC47M192_IN(6), RW, NOSYSCTL, VALUE(2), 3 }, 
     4803    { SENSORS_SMSC47M192_IN_MAX(7), "in7_max", SENSORS_SMSC47M192_IN(7), 
     4804                SENSORS_SMSC47M192_IN(7), RW, NOSYSCTL, VALUE(2), 3 }, 
     4805    { SENSORS_SMSC47M192_IN_ALARM(0), "in0_alarm", SENSORS_SMSC47M192_IN(0), 
     4806                        NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4807    { SENSORS_SMSC47M192_IN_ALARM(1), "in1_alarm", SENSORS_SMSC47M192_IN(1), 
     4808                        NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4809    { SENSORS_SMSC47M192_IN_ALARM(2), "in2_alarm", SENSORS_SMSC47M192_IN(2), 
     4810                        NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4811    { SENSORS_SMSC47M192_IN_ALARM(3), "in3_alarm", SENSORS_SMSC47M192_IN(3), 
     4812                        NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4813    { SENSORS_SMSC47M192_IN_ALARM(4), "in4_alarm", SENSORS_SMSC47M192_IN(4), 
     4814                        NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4815    { SENSORS_SMSC47M192_IN_ALARM(5), "in5_alarm", SENSORS_SMSC47M192_IN(5), 
     4816                        NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4817    { SENSORS_SMSC47M192_IN_ALARM(6), "in6_alarm", SENSORS_SMSC47M192_IN(6), 
     4818                        NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4819    { SENSORS_SMSC47M192_IN_ALARM(7), "in7_alarm", SENSORS_SMSC47M192_IN(7), 
     4820                        NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4821    { SENSORS_SMSC47M192_TEMP(1), "temp1", NOMAP, NOMAP, 
     4822                        R, NOSYSCTL, VALUE(3), 0 }, 
     4823    { SENSORS_SMSC47M192_TEMP(2), "temp2", NOMAP, NOMAP, 
     4824                        R, NOSYSCTL, VALUE(3), 0 }, 
     4825    { SENSORS_SMSC47M192_TEMP(3), "temp3", NOMAP, NOMAP, 
     4826                        R, NOSYSCTL, VALUE(3), 0 }, 
     4827    { SENSORS_SMSC47M192_TEMP_MIN(1), "temp1_min", SENSORS_SMSC47M192_TEMP(1), 
     4828                SENSORS_SMSC47M192_TEMP(1), RW, NOSYSCTL, VALUE(2), 0 }, 
     4829    { SENSORS_SMSC47M192_TEMP_MIN(2), "temp2_min", SENSORS_SMSC47M192_TEMP(2), 
     4830                SENSORS_SMSC47M192_TEMP(2), RW, NOSYSCTL, VALUE(2), 0 }, 
     4831    { SENSORS_SMSC47M192_TEMP_MIN(3), "temp3_min", SENSORS_SMSC47M192_TEMP(3), 
     4832                SENSORS_SMSC47M192_TEMP(3), RW, NOSYSCTL, VALUE(2), 0 }, 
     4833    { SENSORS_SMSC47M192_TEMP_MAX(1), "temp1_max", SENSORS_SMSC47M192_TEMP(1), 
     4834                SENSORS_SMSC47M192_TEMP(1), RW, NOSYSCTL, VALUE(1), 0 }, 
     4835    { SENSORS_SMSC47M192_TEMP_MAX(2), "temp2_max", SENSORS_SMSC47M192_TEMP(2), 
     4836                SENSORS_SMSC47M192_TEMP(2), RW, NOSYSCTL, VALUE(1), 0 }, 
     4837    { SENSORS_SMSC47M192_TEMP_MAX(3), "temp3_max", SENSORS_SMSC47M192_TEMP(3), 
     4838                SENSORS_SMSC47M192_TEMP(3), RW, NOSYSCTL, VALUE(1), 0 }, 
     4839    { SENSORS_SMSC47M192_TEMP_ALARM(1), "temp1_alarm", 
     4840                SENSORS_SMSC47M192_TEMP(1), NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4841    { SENSORS_SMSC47M192_TEMP_ALARM(2), "temp2_alarm", 
     4842                SENSORS_SMSC47M192_TEMP(2), NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4843    { SENSORS_SMSC47M192_TEMP_ALARM(3), "temp3_alarm", 
     4844                SENSORS_SMSC47M192_TEMP(3), NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4845    { SENSORS_SMSC47M192_TEMP_FAULT(2), "temp2_input_fault", 
     4846                SENSORS_SMSC47M192_TEMP(2), NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4847    { SENSORS_SMSC47M192_TEMP_FAULT(3), "temp3_input_fault", 
     4848                SENSORS_SMSC47M192_TEMP(3), NOMAP, R, NOSYSCTL, VALUE(1), 0 }, 
     4849    { SENSORS_SMSC47M192_VID, "vid", NOMAP, NOMAP, R, NOSYSCTL, VALUE(1), 3 }, 
     4850    { SENSORS_SMSC47M192_VRM, "vrm", NOMAP, NOMAP, RW, NOSYSCTL, VALUE(1), 1 }, 
     4851    { 0 } 
     4852  }; 
     4853 
     4854 
    47554855static sensors_chip_feature pc87360_features[] = 
    47564856  {  
     
    57415841 { SENSORS_PCF8591_PREFIX, pcf8591_features },  
    57425842 { SENSORS_VT1211_PREFIX, vt1211_features },  
     5843 { SENSORS_SMSC47M192_PREFIX, smsc47m192_features },  
    57435844 { SENSORS_SMSC47M1_PREFIX, smsc47m1_features },  
    57445845 { SENSORS_PC87360_PREFIX, pc87360_features },  
  • lm-sensors/trunk/lib/chips.h

    r3272 r3277  
    17961796#define SENSORS_SMSC47M1_ALARMS 81 /* R */ 
    17971797 
     1798#define SENSORS_SMSC47M192_PREFIX "smsc47m192" 
     1799 
     1800#define SENSORS_SMSC47M192_IN(n)                (1 + (n))       /* R */ 
     1801#define SENSORS_SMSC47M192_IN_MIN(n)            (21 + (n))      /* RW */ 
     1802#define SENSORS_SMSC47M192_IN_MAX(n)            (41 + (n))      /* RW */ 
     1803#define SENSORS_SMSC47M192_IN_ALARM(n)          (61 + (n))      /* R */ 
     1804#define SENSORS_SMSC47M192_TEMP(n)              (100 + (n))     /* R */ 
     1805#define SENSORS_SMSC47M192_TEMP_MAX(n)          (120 + (n))     /* RW */ 
     1806#define SENSORS_SMSC47M192_TEMP_MIN(n)          (140 + (n))     /* RW */ 
     1807#define SENSORS_SMSC47M192_TEMP_OFFSET(n)       (160 + (n))     /* RW */ 
     1808#define SENSORS_SMSC47M192_TEMP_ALARM(n)        (180 + (n))     /* R */ 
     1809#define SENSORS_SMSC47M192_TEMP_FAULT(n)        (200 + (n))     /* R */ 
     1810#define SENSORS_SMSC47M192_VID                  301             /* R */ 
     1811#define SENSORS_SMSC47M192_VRM                  302             /* RW */ 
     1812 
    17981813#define SENSORS_PC87360_PREFIX "pc87360" 
    17991814#define SENSORS_PC87363_PREFIX "pc87363" 
  • lm-sensors/trunk/prog/detect/sensors-detect

    r3274 r3277  
    14901490     { 
    14911491       name => "SMSC LPC47M15x, LPC47M192 or LPC47M997", 
    1492        driver => "to-be-written", 
     1492       driver => "smsc47m192", 
    14931493       i2c_addrs => [0x2c..0x2d], 
    14941494       i2c_detect => sub { smsc47m192_detect @_ }, 
  • lm-sensors/trunk/prog/sensors/chips.c

    r3272 r3277  
    44614461} 
    44624462 
     4463void print_smsc47m192(const sensors_chip_name *name) 
     4464{ 
     4465  char *label; 
     4466  double cur, min, max; 
     4467  int valid, i; 
     4468 
     4469  for (i=0; i<8; i++) { 
     4470    if (!sensors_get_label_and_valid(*name, SENSORS_SMSC47M192_IN(i), 
     4471                                     &label, &valid) && 
     4472        !sensors_get_feature(*name, SENSORS_SMSC47M192_IN(i), &cur) && 
     4473        !sensors_get_feature(*name, SENSORS_SMSC47M192_IN_MIN(i), &min) && 
     4474        !sensors_get_feature(*name, SENSORS_SMSC47M192_IN_MAX(i), &max)) { 
     4475      if (valid) { 
     4476        print_label(label,10); 
     4477        printf("%+6.2f V  (min = %+6.2f V, max = %+6.2f V)   ", cur, min, max); 
     4478        if (!sensors_get_feature(*name, SENSORS_SMSC47M192_IN_ALARM(i), &cur)) 
     4479          if (cur > 0.5) 
     4480            printf("ALARM"); 
     4481        printf("\n"); 
     4482      } 
     4483    } else 
     4484      if (i!=4) /* Chip may have +12V input used for VID instead */ 
     4485        printf("ERROR: Can't get IN%d data!\n", i); 
     4486    free(label); 
     4487  } 
     4488  for (i=1; i<=3; i++) { 
     4489    if (!sensors_get_label_and_valid(*name, SENSORS_SMSC47M192_TEMP(i), 
     4490                                     &label, &valid) && 
     4491        !sensors_get_feature(*name, SENSORS_SMSC47M192_TEMP(i), &cur) && 
     4492        !sensors_get_feature(*name, SENSORS_SMSC47M192_TEMP_MIN(i), &min) && 
     4493        !sensors_get_feature(*name, SENSORS_SMSC47M192_TEMP_MAX(i), &max)) { 
     4494      if (valid) { 
     4495        print_label(label,10); 
     4496        print_temp_info( cur, max, min, MINMAX, 1, 0); 
     4497        if (i > 1 && !sensors_get_feature(*name, 
     4498                                SENSORS_SMSC47M192_TEMP_FAULT(i), &cur)) { 
     4499           if (cur > 0.5) 
     4500             printf("FAULT"); 
     4501        } else 
     4502        if (!sensors_get_feature(*name, SENSORS_SMSC47M192_TEMP_ALARM(i), &cur)) 
     4503          if (cur > 0.5) 
     4504            printf("ALARM"); 
     4505        printf("\n"); 
     4506      } 
     4507    } else 
     4508      printf("ERROR: Can't get TEMP%d data!\n", i); 
     4509    free(label); 
     4510  } 
     4511  print_vid_info(name, SENSORS_SMSC47M192_VID, SENSORS_SMSC47M192_VRM); 
     4512} 
     4513 
    44634514void print_pc87360(const sensors_chip_name *name) 
    44644515{ 
  • lm-sensors/trunk/prog/sensors/chips.h

    r3169 r3277  
    5656extern void print_vt1211(const sensors_chip_name *name); 
    5757extern void print_smsc47m1(const sensors_chip_name *name); 
     58extern void print_smsc47m192(const sensors_chip_name *name); 
    5859extern void print_pc87360(const sensors_chip_name *name); 
    5960extern void print_pc87364(const sensors_chip_name *name); 
  • lm-sensors/trunk/prog/sensors/main.c

    r3226 r3277  
    389389        { "pcf8591", print_pcf8591 }, 
    390390        { "vt1211", print_vt1211 }, 
     391        { "smsc47m192", print_smsc47m192 }, 
    391392        { "smsc47m1", print_smsc47m1 }, 
    392393        { "pc87360", print_pc87360 },