Changeset 403

Show
Ignore:
Timestamp:
04/20/99 18:16:25 (10 years ago)
Author:
frodo
Message:

GL518SM documentation and library support update

* The library can now read GL518SM revision 0x00 voltages (in the worst case,

it will read zeros if the module was not inserted with readall=1)

* The readall parameter is now documented through MODULE_PARM_DESC
* Note my remarks in the TODO file

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • lm-sensors/trunk/TODO

    r393 r403  
    4141* lm80: Check how OS alarms work. At page 17 of the sheet, it tells 
    4242  something completely different from the description at page 25. 
     43* gl518sm: Update binary search to 'trinary' search: because we have 
     44  both upper and lower limits, you can see the difference between three 
     45  pieces of the current range. 
     46  Also, you can assume that new values are close to old values, so start 
     47  with trying to use a small range near the old values (already partially 
     48  done?) 
    4349 
    4450LIBRARY 
  • lm-sensors/trunk/doc/chips/gl518sm

    r288 r403  
    1 This file documents the gl518sm directories. 
    2  
    3 There will be one directory created for each detected GL518SM chip. Chips 
    4 can only be connected to the SMBus. Directories are called  
    5 gl518sm-r??-i2c-?-??, where the first two question marks are the revision 
    6 number, the question mark after i2c equals the I2C bus number, and the I2C 
    7 address is at the end. 
    8 At this moment, revisions 0x00 and 0x80 are known and supported. Revision 
    9 0x00 chips can only display the VIN3 value; revision 0x80 can also  
    10 display the VIN1, VIN2 and VDD values. 
    11  
    12 Experimental: 
    13 You can insert the module with parameter 'readall=1' to use an iteration 
    14 code to show all the voltages for rev 00 chip, too. This will cause a delay 
    15 of about 10 seconds, and is currently only available through /proc system. 
    16  
    17 /proc/sys/dev/sensors/chips contains the SYSCTL values for all chip 
    18 directories. 
    19  
    20 Within each GL518 directory, you can find the following files: 
    21 * alarms (GL518_SYSCTL_ALARMS) 
    22   A number which indicates which alarms are on. An alarm gets triggered when 
    23   some limit has been crossed. Even if the cause of the alarm is over, it 
    24   stays triggered until it has been read at least once. Because the LM78 
    25   values are updated at most once every 1.5 seconds, this means the alarm 
    26   can be read several times before it is erased. 
    27   This file can not be written to. 
    28   The number is the logical OR of the following components: 
    29   - GL518_ALARM_VDD 
    30     Gets triggered when the VDD value is higher or lower than its limits 
    31   - GL518_ALARM_VIN[1-3] 
    32     Gets triggered when the corresponding VIN value is higher or lower than 
    33     its limits. 
    34   - GL518_ALARM_TEMP 
    35     Gets triggered when the temp value has crossed its limits. See the  
    36     description under temp. 
    37   - GAL518_ALARM_FAN[1-2] 
    38     Gets triggered when the corresponding FAN value drops below its limit. 
    39   If accessed through sysctl, this value is a long. 
    40 * beep (GL518_SYSCTL_BEEP) 
    41   Two numbers. The first is 0 if all sound signals are disabled; it is 1 if 
    42   they are enabled. The second number determines which alarms will cause 
    43   a sound signal, if the first number is set to 1. The encoding of the 
    44   second number is the same as that in alarms. 
    45 * fan[1-2] (GL518_SYSCTL_FAN[1-2]) 
    46   A list of two numbers. The first is the minimum fan rotation limit; the 
    47   second is the current fan rotation speed. Both are in RPM (rotation per 
    48   minute). An alarm is triggered if the rotation speed drops below the 
    49   limit. The first value can be changed. Not all RPM values can accurately 
    50   be represented, so some rounding is done. 
    51   If accessed through sysctl, this is a list of longs. 
    52 * fan_div (GL518_SYSCTL_FAN_DIV) 
    53   A list of two numbers, one for each fan. Each number can be either 1, 2, 
    54   4 or 8. It is the internal scaling factor used for the FAN rotations. If 
    55   you change this number, the FAN readings get more or less detailed, but 
    56   the range in which they can be read too. Higher numbers give better  
    57   resolution, but less range. The first two numbers can be changed, the 
    58   third not. 
    59   If accessed through sysctl, this is a list of longs. 
    60 * vin[1-3] and vdd (GL518_SYSCTL_VIN[1-3] and GL518_SYSCTL_VDD) 
    61   A list of three numbers. The first is the minimum limit, the second is the 
    62   maximum limit, and the third is the current value. If you have a weird 
    63   mainboard, all values may be off because some other scaling factor has 
    64   to be used; user-space programs should compensate for this. Note that 
    65   minimum means 'closest to zero'; so if the normal value equals -10, a 
    66   minimum could equal -9, and a maximum -11. 
    67   On GL518SM revision 0 chips, only VIN3 is readable; for the others, 
    68   you can set limits, but you can not read the current values. 
    69   The first two numbers can be changed, the third not. 
    70   If accessed through sysctl, this is a list of longs, each being the voltage 
    71   times 100. 
    72 * temp 
    73   A list of three numbers. The first number is the Overtemperature Shutdown 
    74   value; the second is the Hysteris value and the third number is the 
    75   current value. The first two values can be modified. All values are in 
    76   degrees Celcius. 
    77   An alarm is issued when the temperature gets higher then the 
    78   Overtemperature Shutdown value; it stays on until the temperature falls 
    79   below the Hysteris value. 
    80   The first two numbers can be changed, the third not. 
    81   If accessed through sysctl, this is a list of longs, each being the 
    82   temperature times 10. 
    83  
    84 The data for each GL518SM is updated each 1.5 seconds, but only if it is 
    85 actually read. 
     1Kernel driver `gl518sm.o' 
     2========================= 
     3 
     4Status: Complete and well-tested 
     5 
     6Supported chips: 
     7  * Genesys Logic GL518SM release 0x00 
     8    Prefix `gl518sm-r00' 
     9    Addresses scanned: I2C 0x2c and 0x2d 
     10    Datasheet: Not openly available 
     11  * Genesys Logic GL518SM release 0x80 
     12    Prefix `gl518sm-r80' 
     13    Addresses scanned: I2C 0x2c and 0x2d 
     14    Datasheet: Not available at all, as far as we know 
     15 
     16Author: Frodo Looijaard <frodol@dds.nl> 
     17 
     18 
     19Module Parameters 
     20----------------- 
     21 
     22* force: short array (min = 1, max = 48) 
     23  List of adapter,address pairs to boldly assume to be present 
     24* force_gl518sm_r00: short array (min = 1, max = 48) 
     25  List of adapter,address pairs which are unquestionably assumed to contain 
     26  a `gl518sm_r00' chip 
     27* force_gl518sm_r80: short array (min = 1, max = 48) 
     28  List of adapter,address pairs which are unquestionably assumed to contain 
     29  a `gl518sm_r80' chip 
     30* ignore: short array (min = 1, max = 48) 
     31  List of adapter,address pairs not to scan 
     32* ignore_range: short array (min = 1, max = 48) 
     33  List of adapter,start-addr,end-addr triples not to scan 
     34* probe: short array (min = 1, max = 48) 
     35  List of adapter,address pairs to scan additionally 
     36* probe_range: short array (min = 1, max = 48) 
     37  List of adapter,start-addr,end-addr triples to scan additionally 
     38* readall: int 
     39  Enable the experimental code, which tries to find the voltages of 
     40  revision zero chips by slow (10 seconds) interpolation 
     41 
     42 
     43Description 
     44----------- 
     45 
     46This driver supports the Genesys Logic GL518SM chip. There are at least 
     47two revision of this chip, which we call revision 0x00 and 0x80. Revision 
     480x80 chips support the reading of voltages directly, 0x00 only for VIN3. 
     49 
     50The GL518SM implements one temperature sensor, two FAN rotation speed 
     51sensors, and four voltage sensors. It can report alarms through the 
     52computer speakers. 
     53 
     54Temperatures are measured in degrees Celcius. An alarm goes off while the 
     55temperature is above the over temperature limit, and has not yet dropped 
     56below the hysteris limit. The alarm always reflects the current situation. 
     57Measurements are guaranteed between -40 degrees and +125 degrees, with 
     58a resolution of 1 degree. 
     59 
     60FAN rotation speeds are reported in RPM (rotations per minute). An alarm is 
     61triggered if the rotation speed has dropped below a programmable limit. FAN  
     62readings can be divided by a programmable divider (1, 2, 4 or 8) to give 
     63the readings more range or accuracy. This is important because some FANs 
     64report only one 'tick' each rotation, while others report two - making 
     65all readings twice as high. Not all RPM values can accurately be represented, 
     66so some rounding is done. With a divider of 2, the lowest representable 
     67value is around 1900 RPM. 
     68 
     69Voltage sensors (also known as VIN sensors) report their values in volts. 
     70An alarm is triggered if the voltage has crossed a programmable minimum  
     71or maximum limit. Note that minimum in this case always means 'closest to 
     72zero'; this is important for negative voltage measurements. The VDD input 
     73measures voltages between 0.000 and 5.865 volt, with a resolution of 0.023 
     74volt. The other inputs measure voltages between 0.000 and 4.845 volt, with 
     75a resolution of 0.019 volt. Note that revision 0x00 chips do not support 
     76reading the current voltage of any input except for VIN3; limit setting 
     77and alarms work fine, though. Yes, this is weird. There is experimental 
     78code to compute them by interpolation; see the 'readall' module parameter. 
     79 
     80When an alarm goes off, you can be warned by a beeping signal through 
     81your computer speaker. It is possible to enable all beeping globally, 
     82or only the beeping for some alarms. 
     83 
     84If an alarm triggers, it will remain triggered until the hardware register 
     85is read at least once (except for temperature alarms). This means that the  
     86cause for the alarm may already have disappeared!  Note that in the current  
     87implementation, all hardware registers are read whenever any data is read  
     88(unless it is less than 1.5 seconds since the last update). This means that  
     89you can easily miss once-only alarms. 
     90 
     91The GL518SM only updates its values each 1.5 seconds; reading it more often 
     92will do no harm, but will return 'old' values. 
     93 
     94Not supported is the option to use only one fan, and to enable/disable the  
     95speed of that fan automatically as function of the current temperature. 
     96 
     97 
     98Chip Features 
     99------------- 
     100 
     101Chip `gl518sm-r00' 
     102             LABEL        LABEL CLASS      COMPUTE CLASS ACCESS MAGNITUDE 
     103               vdd               NONE               NONE     R     2 
     104              vin1               NONE               NONE     R     2 
     105              vin2               NONE               NONE     R     2 
     106              vin3               NONE               NONE     R     2 
     107           vdd_min                vdd                vdd     RW    2 
     108          vin1_min               vin1               vin1     RW    2 
     109          vin2_min               vin2               vin2     RW    2 
     110          vin3_min               vin3               vin3     RW    2 
     111           vdd_max                vdd                vdd     RW    2 
     112          vin1_max               vin1               vin1     RW    2 
     113          vin2_max               vin2               vin2     RW    2 
     114          vin3_max               vin3               vin3     RW    2 
     115              fan1               NONE               NONE     R     0 
     116              fan2               NONE               NONE     R     0 
     117          fan1_min               fan1               fan1     RW    0 
     118          fan2_min               fan2               fan2     RW    0 
     119              temp               NONE               NONE     R     1 
     120         temp_hyst               temp               temp     RW    1 
     121         temp_over               temp               temp     RW    1 
     122          fan1_div               fan1               NONE     RW    0 
     123          fan2_div               fan2               NONE     RW    0 
     124            alarms               NONE               NONE     R     0 
     125       beep_enable             alarms               NONE     RW    0 
     126             beeps             alarms             alarms     RW    0 
     127 
     128             LABEL                          FEATURE SYMBOL        SYSCTL FILE:NR 
     129               vdd                    SENSORS_GL518R00_VDD                vdd:3 
     130              vin1                   SENSORS_GL518R00_VIN1               vin1:3 
     131              vin2                   SENSORS_GL518R00_VIN2               vin2:3 
     132              vin3                   SENSORS_GL518R00_VIN3               vin3:3 
     133           vdd_min                SENSORS_GL518R00_VDD_MIN                vdd:1 
     134          vin1_min               SENSORS_GL518R00_VIN1_MIN               vin1:1 
     135          vin2_min               SENSORS_GL518R00_VIN2_MIN               vin2:1 
     136          vin3_min               SENSORS_GL518R00_VIN3_MIN               vin3:1 
     137           vdd_max                SENSORS_GL518R00_VDD_MAX                vdd:2 
     138          vin1_max               SENSORS_GL518R00_VIN1_MAX               vin1:2 
     139          vin2_max               SENSORS_GL518R00_VIN2_MAX               vin2:2 
     140          vin3_max               SENSORS_GL518R00_VIN3_MAX               vin3:2 
     141              fan1                   SENSORS_GL518R00_FAN1               fan1:2 
     142              fan2                   SENSORS_GL518R00_FAN2               fan2:2 
     143          fan1_min               SENSORS_GL518R00_FAN1_MIN               fan1:1 
     144          fan2_min               SENSORS_GL518R00_FAN2_MIN               fan2:1 
     145              temp                   SENSORS_GL518R00_TEMP               temp:3 
     146         temp_hyst              SENSORS_GL518R00_TEMP_HYST               temp:2 
     147         temp_over              SENSORS_GL518R00_TEMP_OVER               temp:1 
     148          fan1_div               SENSORS_GL518R00_FAN1_DIV            fan_div:1 
     149          fan2_div               SENSORS_GL518R00_FAN2_DIV            fan_div:2 
     150            alarms                 SENSORS_GL518R00_ALARMS             alarms:1 
     151       beep_enable            SENSORS_GL518R00_BEEP_ENABLE               beep:1 
     152             beeps                  SENSORS_GL518R00_BEEPS               beep:2 
     153 
     154 
     155Chip `gl518sm-r80' 
     156             LABEL        LABEL CLASS      COMPUTE CLASS ACCESS MAGNITUDE 
     157               vdd               NONE               NONE     R     2 
     158              vin1               NONE               NONE     R     2 
     159              vin2               NONE               NONE     R     2 
     160              vin3               NONE               NONE     R     2 
     161           vdd_min                vdd                vdd     RW    2 
     162          vin1_min               vin1               vin1     RW    2 
     163          vin2_min               vin2               vin2     RW    2 
     164          vin3_min               vin3               vin3     RW    2 
     165           vdd_max                vdd                vdd     RW    2 
     166          vin1_max               vin1               vin1     RW    2 
     167          vin2_max               vin2               vin2     RW    2 
     168          vin3_max               vin3               vin3     RW    2 
     169              fan1               NONE               NONE     R     0 
     170              fan2               NONE               NONE     R     0 
     171          fan1_min               fan1               fan1     RW    0 
     172          fan2_min               fan2               fan2     RW    0 
     173              temp               NONE               NONE     R     1 
     174         temp_hyst               temp               temp     RW    1 
     175         temp_over               temp               temp     RW    1 
     176          fan1_div               fan1               NONE     RW    0 
     177          fan2_div               fan2               NONE     RW    0 
     178            alarms               NONE               NONE     R     0 
     179       beep_enable             alarms               NONE     RW    0 
     180             beeps             alarms             alarms     RW    0 
     181 
     182             LABEL                          FEATURE SYMBOL        SYSCTL FILE:NR 
     183               vdd                    SENSORS_GL518R80_VDD                vdd:3 
     184              vin1                   SENSORS_GL518R80_VIN1               vin1:3 
     185              vin2                   SENSORS_GL518R80_VIN2               vin2:3 
     186              vin3                   SENSORS_GL518R80_VIN3               vin3:3 
     187           vdd_min                SENSORS_GL518R80_VDD_MIN                vdd:1 
     188          vin1_min               SENSORS_GL518R80_VIN1_MIN               vin1:1 
     189          vin2_min               SENSORS_GL518R80_VIN2_MIN               vin2:1 
     190          vin3_min               SENSORS_GL518R80_VIN3_MIN               vin3:1 
     191           vdd_max                SENSORS_GL518R80_VDD_MAX                vdd:2 
     192          vin1_max               SENSORS_GL518R80_VIN1_MAX               vin1:2 
     193          vin2_max               SENSORS_GL518R80_VIN2_MAX               vin2:2 
     194          vin3_max               SENSORS_GL518R80_VIN3_MAX               vin3:2 
     195              fan1                   SENSORS_GL518R80_FAN1               fan1:2 
     196              fan2                   SENSORS_GL518R80_FAN2               fan2:2 
     197          fan1_min               SENSORS_GL518R80_FAN1_MIN               fan1:1 
     198          fan2_min               SENSORS_GL518R80_FAN2_MIN               fan2:1 
     199              temp                   SENSORS_GL518R80_TEMP               temp:3 
     200         temp_hyst              SENSORS_GL518R80_TEMP_HYST               temp:2 
     201         temp_over              SENSORS_GL518R80_TEMP_OVER               temp:1 
     202          fan1_div               SENSORS_GL518R80_FAN1_DIV            fan_div:1 
     203          fan2_div               SENSORS_GL518R80_FAN2_DIV            fan_div:2 
     204            alarms                 SENSORS_GL518R80_ALARMS             alarms:1 
     205       beep_enable            SENSORS_GL518R80_BEEP_ENABLE               beep:1 
     206             beeps                  SENSORS_GL518R80_BEEPS               beep:2 
     207 
     208 
  • lm-sensors/trunk/kernel/chips/gl518sm.c

    r382 r403  
    169169extern int cleanup_module(void); 
    170170MODULE_PARM(readall,"i"); 
     171MODULE_PARM_DESC(readall,"Enable the experimental code, which tries to find " 
     172                         "the voltages of revision zero chips by " 
     173                         "slow (10 seconds) interpolation"); 
    171174#endif /* MODULE */ 
    172175 
  • lm-sensors/trunk/lib/chips.c

    r401 r403  
    386386  { 
    387387    { SENSORS_GL518R00_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, 
    388                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 }, 
     388                            SENSORS_MODE_R, GL518_SYSCTL_VDD, VALUE(3), 2 }, 
    389389    { SENSORS_GL518R00_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, 
    390                              SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN1, VALUE(3),  
     390                             SENSORS_MODE_R, GL518_SYSCTL_VIN1, VALUE(3),  
    391391                             2 }, 
    392392    { SENSORS_GL518R00_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, 
    393                              SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN2, VALUE(3),  
     393                             SENSORS_MODE_R, GL518_SYSCTL_VIN2, VALUE(3),  
    394394                             2 }, 
    395395    { SENSORS_GL518R00_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, 
     
    437437                                  SENSORS_GL518R00_TEMP, SENSORS_MODE_RW, 
    438438                                  GL518_SYSCTL_TEMP, VALUE(1), 1 }, 
    439     { SENSORS_GL518R00_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
    440                             SENSORS_MODE_R, GL518_SYSCTL_VID, VALUE(1), 0 }, 
    441439    { SENSORS_GL518R00_FAN1_DIV, "fan1_div", SENSORS_GL518R00_FAN1,  
    442440                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
     
    510508                                  SENSORS_GL518R80_TEMP, SENSORS_MODE_RW, 
    511509                                  GL518_SYSCTL_TEMP, VALUE(1), 1 }, 
    512     { SENSORS_GL518R80_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
    513                             SENSORS_MODE_R, GL518_SYSCTL_VID, VALUE(1), 0 }, 
    514510    { SENSORS_GL518R80_FAN1_DIV, "fan1_div", SENSORS_GL518R80_FAN1,  
    515511                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
  • lm-sensors/trunk/lib/chips.h

    r401 r403  
    229229#define SENSORS_GL518R00_TEMP_HYST 52 /* RW */ 
    230230#define SENSORS_GL518R00_TEMP_OVER 53 /* RW */ 
    231 #define SENSORS_GL518R00_VID 61 /* R */ 
    232231#define SENSORS_GL518R00_FAN1_DIV 71 /* RW */ 
    233232#define SENSORS_GL518R00_FAN2_DIV 72 /* RW */ 
     
    260259#define SENSORS_GL518R80_TEMP_HYST 52 /* RW */ 
    261260#define SENSORS_GL518R80_TEMP_OVER 53 /* RW */ 
    262 #define SENSORS_GL518R80_VID 61 /* R */ 
    263261#define SENSORS_GL518R80_FAN1_DIV 71 /* RW */ 
    264262#define SENSORS_GL518R80_FAN2_DIV 72 /* RW */