| [403] | 1 | Kernel driver `gl518sm.o' |
|---|
| 2 | ========================= |
|---|
| [108] | 3 | |
|---|
| [403] | 4 | Status: Complete and well-tested |
|---|
| [288] | 5 | |
|---|
| [403] | 6 | Supported chips: |
|---|
| 7 | * Genesys Logic GL518SM release 0x00 |
|---|
| [511] | 8 | Prefix `gl518sm' |
|---|
| [403] | 9 | Addresses scanned: I2C 0x2c and 0x2d |
|---|
| [741] | 10 | Datasheet: http://www.genesyslogic.com/pdf |
|---|
| [403] | 11 | * Genesys Logic GL518SM release 0x80 |
|---|
| [511] | 12 | Prefix `gl518sm' |
|---|
| [403] | 13 | Addresses scanned: I2C 0x2c and 0x2d |
|---|
| [741] | 14 | Datasheet: http://www.genesyslogic.com/pdf |
|---|
| [288] | 15 | |
|---|
| [511] | 16 | Author: Frodo Looijaard <frodol@dds.nl>, |
|---|
| 17 | Kyösti Mälkki <kmalkki@cc.hut.fi> |
|---|
| [108] | 18 | |
|---|
| 19 | |
|---|
| [403] | 20 | Module Parameters |
|---|
| 21 | ----------------- |
|---|
| 22 | |
|---|
| 23 | * force: short array (min = 1, max = 48) |
|---|
| 24 | List of adapter,address pairs to boldly assume to be present |
|---|
| 25 | * force_gl518sm_r00: short array (min = 1, max = 48) |
|---|
| 26 | List of adapter,address pairs which are unquestionably assumed to contain |
|---|
| 27 | a `gl518sm_r00' chip |
|---|
| 28 | * force_gl518sm_r80: short array (min = 1, max = 48) |
|---|
| 29 | List of adapter,address pairs which are unquestionably assumed to contain |
|---|
| 30 | a `gl518sm_r80' chip |
|---|
| 31 | * ignore: short array (min = 1, max = 48) |
|---|
| 32 | List of adapter,address pairs not to scan |
|---|
| 33 | * ignore_range: short array (min = 1, max = 48) |
|---|
| 34 | List of adapter,start-addr,end-addr triples not to scan |
|---|
| 35 | * probe: short array (min = 1, max = 48) |
|---|
| 36 | List of adapter,address pairs to scan additionally |
|---|
| 37 | * probe_range: short array (min = 1, max = 48) |
|---|
| 38 | List of adapter,start-addr,end-addr triples to scan additionally |
|---|
| 39 | |
|---|
| 40 | Description |
|---|
| 41 | ----------- |
|---|
| 42 | |
|---|
| [1568] | 43 | IMPORTANT: For the revision 0x00 chip, the |
|---|
| 44 | in0, in1, and in2 values (+5, +3, and +12) CANNOT be read |
|---|
| [1297] | 45 | unless you use the slow 'iterate' method. Limits will still |
|---|
| 46 | work even when iterate=0. See below. This is a limitation |
|---|
| 47 | of the chip, not the driver. |
|---|
| [2681] | 48 | Note that the 'iterate' method was trimmed while porting the |
|---|
| 49 | driver to Linux 2.6 as we considered it too ugly for the thin |
|---|
| 50 | benefit. |
|---|
| 51 | |
|---|
| [1297] | 52 | |
|---|
| [403] | 53 | This driver supports the Genesys Logic GL518SM chip. There are at least |
|---|
| 54 | two revision of this chip, which we call revision 0x00 and 0x80. Revision |
|---|
| 55 | 0x80 chips support the reading of voltages directly, 0x00 only for VIN3. |
|---|
| 56 | |
|---|
| 57 | The GL518SM implements one temperature sensor, two FAN rotation speed |
|---|
| 58 | sensors, and four voltage sensors. It can report alarms through the |
|---|
| 59 | computer speakers. |
|---|
| 60 | |
|---|
| [3000] | 61 | Temperatures are measured in degrees Celsius. An alarm goes off while the |
|---|
| [403] | 62 | temperature is above the over temperature limit, and has not yet dropped |
|---|
| [746] | 63 | below the hysteresis limit. The alarm always reflects the current situation. |
|---|
| [521] | 64 | Measurements are guaranteed between -10 degrees and +110 degrees, with |
|---|
| 65 | a resolution of +-3 degrees. |
|---|
| [403] | 66 | |
|---|
| 67 | FAN rotation speeds are reported in RPM (rotations per minute). An alarm is |
|---|
| [484] | 68 | triggered if the rotation speed has dropped below a programmable limit. |
|---|
| [521] | 69 | In case when you have selected to turn Fan1 off, no Fan1 alarm is triggered. |
|---|
| [484] | 70 | |
|---|
| 71 | FAN readings can be divided by a programmable divider (1, 2, 4 or 8) to give |
|---|
| [403] | 72 | the readings more range or accuracy. This is important because some FANs |
|---|
| [484] | 73 | report only one 'tick' each rotation, while others report two. |
|---|
| 74 | Not all RPM values can accurately be represented, so some rounding is done. |
|---|
| 75 | With a divider of 2, the lowest representable value is around 1900 RPM. |
|---|
| [403] | 76 | |
|---|
| [484] | 77 | Voltage sensors (also known as VIN sensors) report their values in volts. An |
|---|
| 78 | alarm is triggered if the voltage has crossed a programmable minimum or |
|---|
| 79 | maximum limit. Note that minimum in this case always means 'closest to |
|---|
| [403] | 80 | zero'; this is important for negative voltage measurements. The VDD input |
|---|
| 81 | measures voltages between 0.000 and 5.865 volt, with a resolution of 0.023 |
|---|
| [484] | 82 | volt. The other inputs measure voltages between 0.000 and 4.845 volt, with a |
|---|
| 83 | resolution of 0.019 volt. Note that revision 0x00 chips do not support |
|---|
| 84 | reading the current voltage of any input except for VIN3; limit setting and |
|---|
| 85 | alarms work fine, though. There is code to compute them by iterating. |
|---|
| [403] | 86 | |
|---|
| 87 | When an alarm goes off, you can be warned by a beeping signal through |
|---|
| 88 | your computer speaker. It is possible to enable all beeping globally, |
|---|
| 89 | or only the beeping for some alarms. |
|---|
| 90 | |
|---|
| 91 | If an alarm triggers, it will remain triggered until the hardware register |
|---|
| 92 | is read at least once (except for temperature alarms). This means that the |
|---|
| 93 | cause for the alarm may already have disappeared! Note that in the current |
|---|
| 94 | implementation, all hardware registers are read whenever any data is read |
|---|
| 95 | (unless it is less than 1.5 seconds since the last update). This means that |
|---|
| 96 | you can easily miss once-only alarms. |
|---|
| 97 | |
|---|
| 98 | The GL518SM only updates its values each 1.5 seconds; reading it more often |
|---|
| 99 | will do no harm, but will return 'old' values. |
|---|
| 100 | |
|---|
| [521] | 101 | Iteration Code |
|---|
| 102 | -------------- |
|---|
| 103 | |
|---|
| [1568] | 104 | IMPORTANT: For the revision 0x00 chip only, |
|---|
| 105 | you may select between three modes to read the vin0-2 inputs with |
|---|
| [521] | 106 | the following lines in /etc/sensors.conf: |
|---|
| 107 | |
|---|
| [1568] | 108 | set iterate 0 Don't read in0-in2 inputs. |
|---|
| [521] | 109 | set iterate 1 Run the iteration loop, this takes up to 10 seconds. |
|---|
| 110 | set iterate 2 Show the results of the last iteration loop, |
|---|
| 111 | and start a new loop to run in the background. |
|---|
| 112 | |
|---|
| [1568] | 113 | You may also set the iteration type with |
|---|
| 114 | 'echo n > /proc/sys/dev/sensors/gl518sm-i2c-x-y/iterate'. |
|---|
| 115 | |
|---|
| 116 | If you have a rev 0x80 chip, the in0-in2 inputs are readable. |
|---|
| 117 | In this case, 'iterate' will be read-only and the read value is 3. |
|---|
| 118 | |
|---|
| [2681] | 119 | This does NOT apply to the Linux 2.6 kernel driver, where the 'iteration' |
|---|
| 120 | code was dropped for being too ugly. |
|---|
| [1568] | 121 | |
|---|
| [2681] | 122 | |
|---|
| [403] | 123 | Chip Features |
|---|
| 124 | ------------- |
|---|
| 125 | |
|---|
| [511] | 126 | Chip `gl518sm' |
|---|
| [403] | 127 | LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE |
|---|
| 128 | vdd NONE NONE R 2 |
|---|
| 129 | vin1 NONE NONE R 2 |
|---|
| 130 | vin2 NONE NONE R 2 |
|---|
| 131 | vin3 NONE NONE R 2 |
|---|
| 132 | vdd_min vdd vdd RW 2 |
|---|
| 133 | vin1_min vin1 vin1 RW 2 |
|---|
| 134 | vin2_min vin2 vin2 RW 2 |
|---|
| 135 | vin3_min vin3 vin3 RW 2 |
|---|
| 136 | vdd_max vdd vdd RW 2 |
|---|
| 137 | vin1_max vin1 vin1 RW 2 |
|---|
| 138 | vin2_max vin2 vin2 RW 2 |
|---|
| 139 | vin3_max vin3 vin3 RW 2 |
|---|
| 140 | fan1 NONE NONE R 0 |
|---|
| 141 | fan2 NONE NONE R 0 |
|---|
| 142 | fan1_min fan1 fan1 RW 0 |
|---|
| 143 | fan2_min fan2 fan2 RW 0 |
|---|
| 144 | temp NONE NONE R 1 |
|---|
| 145 | temp_hyst temp temp RW 1 |
|---|
| 146 | temp_over temp temp RW 1 |
|---|
| 147 | fan1_div fan1 NONE RW 0 |
|---|
| 148 | fan2_div fan2 NONE RW 0 |
|---|
| 149 | alarms NONE NONE R 0 |
|---|
| 150 | beep_enable alarms NONE RW 0 |
|---|
| 151 | beeps alarms alarms RW 0 |
|---|
| [521] | 152 | fan1_off NONE NONE RW 0 |
|---|
| 153 | fan1_off_pin NONE NONE RW 0 |
|---|
| 154 | iterate NONE NONE RW 0 |
|---|
| [403] | 155 | |
|---|
| [521] | 156 | |
|---|
| [511] | 157 | LABEL FEATURE SYMBOL SYSCTL FILE:NR |
|---|
| 158 | vdd SENSORS_GL518_VDD vdd:3 |
|---|
| 159 | vin1 SENSORS_GL518_VIN1 vin1:3 |
|---|
| 160 | vin2 SENSORS_GL518_VIN2 vin2:3 |
|---|
| 161 | vin3 SENSORS_GL518_VIN3 vin3:3 |
|---|
| 162 | vdd_min SENSORS_GL518_VDD_MIN vdd:1 |
|---|
| 163 | vin1_min SENSORS_GL518_VIN1_MIN vin1:1 |
|---|
| 164 | vin2_min SENSORS_GL518_VIN2_MIN vin2:1 |
|---|
| 165 | vin3_min SENSORS_GL518_VIN3_MIN vin3:1 |
|---|
| 166 | vdd_max SENSORS_GL518_VDD_MAX vdd:2 |
|---|
| 167 | vin1_max SENSORS_GL518_VIN1_MAX vin1:2 |
|---|
| 168 | vin2_max SENSORS_GL518_VIN2_MAX vin2:2 |
|---|
| 169 | vin3_max SENSORS_GL518_VIN3_MAX vin3:2 |
|---|
| 170 | fan1 SENSORS_GL518_FAN1 fan1:2 |
|---|
| 171 | fan2 SENSORS_GL518_FAN2 fan2:2 |
|---|
| 172 | fan1_min SENSORS_GL518_FAN1_MIN fan1:1 |
|---|
| 173 | fan2_min SENSORS_GL518_FAN2_MIN fan2:1 |
|---|
| 174 | temp SENSORS_GL518_TEMP temp:3 |
|---|
| 175 | temp_hyst SENSORS_GL518_TEMP_HYST temp:2 |
|---|
| 176 | temp_over SENSORS_GL518_TEMP_OVER temp:1 |
|---|
| 177 | fan1_div SENSORS_GL518_FAN1_DIV fan_div:1 |
|---|
| 178 | fan2_div SENSORS_GL518_FAN2_DIV fan_div:2 |
|---|
| 179 | alarms SENSORS_GL518_ALARMS alarms:1 |
|---|
| 180 | beep_enable SENSORS_GL518_BEEP_ENABLE beep:1 |
|---|
| 181 | beeps SENSORS_GL518_BEEPS beep:2 |
|---|
| [521] | 182 | fan1_off SENSORS_GL518_FAN1OFF fan1off:1 |
|---|
| 183 | fan1_off_pin SENSORS_GL518_FAN1PIN fan1off:2 |
|---|
| 184 | iterate SENSORS_GL518_ITERATE iterate:1 |
|---|
| [403] | 185 | |
|---|