diff options
Diffstat (limited to 'Documentation/hwmon')
31 files changed, 3215 insertions, 0 deletions
diff --git a/Documentation/hwmon/adm1021 b/Documentation/hwmon/adm1021 new file mode 100644 index 000000000000..03d02bfb3df1 --- /dev/null +++ b/Documentation/hwmon/adm1021 | |||
| @@ -0,0 +1,111 @@ | |||
| 1 | Kernel driver adm1021 | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Analog Devices ADM1021 | ||
| 6 | Prefix: 'adm1021' | ||
| 7 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 8 | Datasheet: Publicly available at the Analog Devices website | ||
| 9 | * Analog Devices ADM1021A/ADM1023 | ||
| 10 | Prefix: 'adm1023' | ||
| 11 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 12 | Datasheet: Publicly available at the Analog Devices website | ||
| 13 | * Genesys Logic GL523SM | ||
| 14 | Prefix: 'gl523sm' | ||
| 15 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 16 | Datasheet: | ||
| 17 | * Intel Xeon Processor | ||
| 18 | Prefix: - any other - may require 'force_adm1021' parameter | ||
| 19 | Addresses scanned: none | ||
| 20 | Datasheet: Publicly available at Intel website | ||
| 21 | * Maxim MAX1617 | ||
| 22 | Prefix: 'max1617' | ||
| 23 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 24 | Datasheet: Publicly available at the Maxim website | ||
| 25 | * Maxim MAX1617A | ||
| 26 | Prefix: 'max1617a' | ||
| 27 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 28 | Datasheet: Publicly available at the Maxim website | ||
| 29 | * National Semiconductor LM84 | ||
| 30 | Prefix: 'lm84' | ||
| 31 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 32 | Datasheet: Publicly available at the National Semiconductor website | ||
| 33 | * Philips NE1617 | ||
| 34 | Prefix: 'max1617' (probably detected as a max1617) | ||
| 35 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 36 | Datasheet: Publicly available at the Philips website | ||
| 37 | * Philips NE1617A | ||
| 38 | Prefix: 'max1617' (probably detected as a max1617) | ||
| 39 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 40 | Datasheet: Publicly available at the Philips website | ||
| 41 | * TI THMC10 | ||
| 42 | Prefix: 'thmc10' | ||
| 43 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 44 | Datasheet: Publicly available at the TI website | ||
| 45 | * Onsemi MC1066 | ||
| 46 | Prefix: 'mc1066' | ||
| 47 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 48 | Datasheet: Publicly available at the Onsemi website | ||
| 49 | |||
| 50 | |||
| 51 | Authors: | ||
| 52 | Frodo Looijaard <frodol@dds.nl>, | ||
| 53 | Philip Edelbrock <phil@netroedge.com> | ||
| 54 | |||
| 55 | Module Parameters | ||
| 56 | ----------------- | ||
| 57 | |||
| 58 | * read_only: int | ||
| 59 | Don't set any values, read only mode | ||
| 60 | |||
| 61 | |||
| 62 | Description | ||
| 63 | ----------- | ||
| 64 | |||
| 65 | The chips supported by this driver are very similar. The Maxim MAX1617 is | ||
| 66 | the oldest; it has the problem that it is not very well detectable. The | ||
| 67 | MAX1617A solves that. The ADM1021 is a straight clone of the MAX1617A. | ||
| 68 | Ditto for the THMC10. From here on, we will refer to all these chips as | ||
| 69 | ADM1021-clones. | ||
| 70 | |||
| 71 | The ADM1021 and MAX1617A reports a die code, which is a sort of revision | ||
| 72 | code. This can help us pinpoint problems; it is not very useful | ||
| 73 | otherwise. | ||
| 74 | |||
| 75 | ADM1021-clones implement two temperature sensors. One of them is internal, | ||
| 76 | and measures the temperature of the chip itself; the other is external and | ||
| 77 | is realised in the form of a transistor-like device. A special alarm | ||
| 78 | indicates whether the remote sensor is connected. | ||
| 79 | |||
| 80 | Each sensor has its own low and high limits. When they are crossed, the | ||
| 81 | corresponding alarm is set and remains on as long as the temperature stays | ||
| 82 | out of range. Temperatures are measured in degrees Celsius. Measurements | ||
| 83 | are possible between -65 and +127 degrees, with a resolution of one degree. | ||
| 84 | |||
| 85 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 86 | is read at least once. This means that the cause for the alarm may already | ||
| 87 | have disappeared! | ||
| 88 | |||
| 89 | This driver only updates its values each 1.5 seconds; reading it more often | ||
| 90 | will do no harm, but will return 'old' values. It is possible to make | ||
| 91 | ADM1021-clones do faster measurements, but there is really no good reason | ||
| 92 | for that. | ||
| 93 | |||
| 94 | Xeon support | ||
| 95 | ------------ | ||
| 96 | |||
| 97 | Some Xeon processors have real max1617, adm1021, or compatible chips | ||
| 98 | within them, with two temperature sensors. | ||
| 99 | |||
| 100 | Other Xeons have chips with only one sensor. | ||
| 101 | |||
| 102 | If you have a Xeon, and the adm1021 module loads, and both temperatures | ||
| 103 | appear valid, then things are good. | ||
| 104 | |||
| 105 | If the adm1021 module doesn't load, you should try this: | ||
| 106 | modprobe adm1021 force_adm1021=BUS,ADDRESS | ||
| 107 | ADDRESS can only be 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. | ||
| 108 | |||
| 109 | If you have dual Xeons you may have appear to have two separate | ||
| 110 | adm1021-compatible chips, or two single-temperature sensors, at distinct | ||
| 111 | addresses. | ||
diff --git a/Documentation/hwmon/adm1025 b/Documentation/hwmon/adm1025 new file mode 100644 index 000000000000..39d2b781b5d6 --- /dev/null +++ b/Documentation/hwmon/adm1025 | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | Kernel driver adm1025 | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Analog Devices ADM1025, ADM1025A | ||
| 6 | Prefix: 'adm1025' | ||
| 7 | Addresses scanned: I2C 0x2c - 0x2e | ||
| 8 | Datasheet: Publicly available at the Analog Devices website | ||
| 9 | * Philips NE1619 | ||
| 10 | Prefix: 'ne1619' | ||
| 11 | Addresses scanned: I2C 0x2c - 0x2d | ||
| 12 | Datasheet: Publicly available at the Philips website | ||
| 13 | |||
| 14 | The NE1619 presents some differences with the original ADM1025: | ||
| 15 | * Only two possible addresses (0x2c - 0x2d). | ||
| 16 | * No temperature offset register, but we don't use it anyway. | ||
| 17 | * No INT mode for pin 16. We don't play with it anyway. | ||
| 18 | |||
| 19 | Authors: | ||
| 20 | Chen-Yuan Wu <gwu@esoft.com>, | ||
| 21 | Jean Delvare <khali@linux-fr.org> | ||
| 22 | |||
| 23 | Description | ||
| 24 | ----------- | ||
| 25 | |||
| 26 | (This is from Analog Devices.) The ADM1025 is a complete system hardware | ||
| 27 | monitor for microprocessor-based systems, providing measurement and limit | ||
| 28 | comparison of various system parameters. Five voltage measurement inputs | ||
| 29 | are provided, for monitoring +2.5V, +3.3V, +5V and +12V power supplies and | ||
| 30 | the processor core voltage. The ADM1025 can monitor a sixth power-supply | ||
| 31 | voltage by measuring its own VCC. One input (two pins) is dedicated to a | ||
| 32 | remote temperature-sensing diode and an on-chip temperature sensor allows | ||
| 33 | ambient temperature to be monitored. | ||
| 34 | |||
| 35 | One specificity of this chip is that the pin 11 can be hardwired in two | ||
| 36 | different manners. It can act as the +12V power-supply voltage analog | ||
| 37 | input, or as the a fifth digital entry for the VID reading (bit 4). It's | ||
| 38 | kind of strange since both are useful, and the reason for designing the | ||
| 39 | chip that way is obscure at least to me. The bit 5 of the configuration | ||
| 40 | register can be used to define how the chip is hardwired. Please note that | ||
| 41 | it is not a choice you have to make as the user. The choice was already | ||
| 42 | made by your motherboard's maker. If the configuration bit isn't set | ||
| 43 | properly, you'll have a wrong +12V reading or a wrong VID reading. The way | ||
| 44 | the driver handles that is to preserve this bit through the initialization | ||
| 45 | process, assuming that the BIOS set it up properly beforehand. If it turns | ||
| 46 | out not to be true in some cases, we'll provide a module parameter to force | ||
| 47 | modes. | ||
| 48 | |||
| 49 | This driver also supports the ADM1025A, which differs from the ADM1025 | ||
| 50 | only in that it has "open-drain VID inputs while the ADM1025 has on-chip | ||
| 51 | 100k pull-ups on the VID inputs". It doesn't make any difference for us. | ||
diff --git a/Documentation/hwmon/adm1026 b/Documentation/hwmon/adm1026 new file mode 100644 index 000000000000..473c689d7924 --- /dev/null +++ b/Documentation/hwmon/adm1026 | |||
| @@ -0,0 +1,93 @@ | |||
| 1 | Kernel driver adm1026 | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Analog Devices ADM1026 | ||
| 6 | Prefix: 'adm1026' | ||
| 7 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | ||
| 8 | Datasheet: Publicly available at the Analog Devices website | ||
| 9 | http://www.analog.com/en/prod/0,,766_825_ADM1026,00.html | ||
| 10 | |||
| 11 | Authors: | ||
| 12 | Philip Pokorny <ppokorny@penguincomputing.com> for Penguin Computing | ||
| 13 | Justin Thiessen <jthiessen@penguincomputing.com> | ||
| 14 | |||
| 15 | Module Parameters | ||
| 16 | ----------------- | ||
| 17 | |||
| 18 | * gpio_input: int array (min = 1, max = 17) | ||
| 19 | List of GPIO pins (0-16) to program as inputs | ||
| 20 | * gpio_output: int array (min = 1, max = 17) | ||
| 21 | List of GPIO pins (0-16) to program as outputs | ||
| 22 | * gpio_inverted: int array (min = 1, max = 17) | ||
| 23 | List of GPIO pins (0-16) to program as inverted | ||
| 24 | * gpio_normal: int array (min = 1, max = 17) | ||
| 25 | List of GPIO pins (0-16) to program as normal/non-inverted | ||
| 26 | * gpio_fan: int array (min = 1, max = 8) | ||
| 27 | List of GPIO pins (0-7) to program as fan tachs | ||
| 28 | |||
| 29 | |||
| 30 | Description | ||
| 31 | ----------- | ||
| 32 | |||
| 33 | This driver implements support for the Analog Devices ADM1026. Analog | ||
| 34 | Devices calls it a "complete thermal system management controller." | ||
| 35 | |||
| 36 | The ADM1026 implements three (3) temperature sensors, 17 voltage sensors, | ||
| 37 | 16 general purpose digital I/O lines, eight (8) fan speed sensors (8-bit), | ||
| 38 | an analog output and a PWM output along with limit, alarm and mask bits for | ||
| 39 | all of the above. There is even 8k bytes of EEPROM memory on chip. | ||
| 40 | |||
| 41 | Temperatures are measured in degrees Celsius. There are two external | ||
| 42 | sensor inputs and one internal sensor. Each sensor has a high and low | ||
| 43 | limit. If the limit is exceeded, an interrupt (#SMBALERT) can be | ||
| 44 | generated. The interrupts can be masked. In addition, there are over-temp | ||
| 45 | limits for each sensor. If this limit is exceeded, the #THERM output will | ||
| 46 | be asserted. The current temperature and limits have a resolution of 1 | ||
| 47 | degree. | ||
| 48 | |||
| 49 | Fan rotation speeds are reported in RPM (rotations per minute) but measured | ||
| 50 | in counts of a 22.5kHz internal clock. Each fan has a high limit which | ||
| 51 | corresponds to a minimum fan speed. If the limit is exceeded, an interrupt | ||
| 52 | can be generated. Each fan can be programmed to divide the reference clock | ||
| 53 | by 1, 2, 4 or 8. Not all RPM values can accurately be represented, so some | ||
| 54 | rounding is done. With a divider of 8, the slowest measurable speed of a | ||
| 55 | two pulse per revolution fan is 661 RPM. | ||
| 56 | |||
| 57 | There are 17 voltage sensors. An alarm is triggered if the voltage has | ||
| 58 | crossed a programmable minimum or maximum limit. Note that minimum in this | ||
| 59 | case always means 'closest to zero'; this is important for negative voltage | ||
| 60 | measurements. Several inputs have integrated attenuators so they can measure | ||
| 61 | higher voltages directly. 3.3V, 5V, 12V, -12V and battery voltage all have | ||
| 62 | dedicated inputs. There are several inputs scaled to 0-3V full-scale range | ||
| 63 | for SCSI terminator power. The remaining inputs are not scaled and have | ||
| 64 | a 0-2.5V full-scale range. A 2.5V or 1.82V reference voltage is provided | ||
| 65 | for negative voltage measurements. | ||
| 66 | |||
| 67 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 68 | is read at least once. This means that the cause for the alarm may already | ||
| 69 | have disappeared! Note that in the current implementation, all hardware | ||
| 70 | registers are read whenever any data is read (unless it is less than 2.0 | ||
| 71 | seconds since the last update). This means that you can easily miss | ||
| 72 | once-only alarms. | ||
| 73 | |||
| 74 | The ADM1026 measures continuously. Analog inputs are measured about 4 | ||
| 75 | times a second. Fan speed measurement time depends on fan speed and | ||
| 76 | divisor. It can take as long as 1.5 seconds to measure all fan speeds. | ||
| 77 | |||
| 78 | The ADM1026 has the ability to automatically control fan speed based on the | ||
| 79 | temperature sensor inputs. Both the PWM output and the DAC output can be | ||
| 80 | used to control fan speed. Usually only one of these two outputs will be | ||
| 81 | used. Write the minimum PWM or DAC value to the appropriate control | ||
| 82 | register. Then set the low temperature limit in the tmin values for each | ||
| 83 | temperature sensor. The range of control is fixed at 20 °C, and the | ||
| 84 | largest difference between current and tmin of the temperature sensors sets | ||
| 85 | the control output. See the datasheet for several example circuits for | ||
| 86 | controlling fan speed with the PWM and DAC outputs. The fan speed sensors | ||
| 87 | do not have PWM compensation, so it is probably best to control the fan | ||
| 88 | voltage from the power lead rather than on the ground lead. | ||
| 89 | |||
| 90 | The datasheet shows an example application with VID signals attached to | ||
| 91 | GPIO lines. Unfortunately, the chip may not be connected to the VID lines | ||
| 92 | in this way. The driver assumes that the chips *is* connected this way to | ||
| 93 | get a VID voltage. | ||
diff --git a/Documentation/hwmon/adm1031 b/Documentation/hwmon/adm1031 new file mode 100644 index 000000000000..130a38382b98 --- /dev/null +++ b/Documentation/hwmon/adm1031 | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | Kernel driver adm1031 | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Analog Devices ADM1030 | ||
| 6 | Prefix: 'adm1030' | ||
| 7 | Addresses scanned: I2C 0x2c to 0x2e | ||
| 8 | Datasheet: Publicly available at the Analog Devices website | ||
| 9 | http://products.analog.com/products/info.asp?product=ADM1030 | ||
| 10 | |||
| 11 | * Analog Devices ADM1031 | ||
| 12 | Prefix: 'adm1031' | ||
| 13 | Addresses scanned: I2C 0x2c to 0x2e | ||
| 14 | Datasheet: Publicly available at the Analog Devices website | ||
| 15 | http://products.analog.com/products/info.asp?product=ADM1031 | ||
| 16 | |||
| 17 | Authors: | ||
| 18 | Alexandre d'Alton <alex@alexdalton.org> | ||
| 19 | Jean Delvare <khali@linux-fr.org> | ||
| 20 | |||
| 21 | Description | ||
| 22 | ----------- | ||
| 23 | |||
| 24 | The ADM1030 and ADM1031 are digital temperature sensors and fan controllers. | ||
| 25 | They sense their own temperature as well as the temperature of up to one | ||
| 26 | (ADM1030) or two (ADM1031) external diodes. | ||
| 27 | |||
| 28 | All temperature values are given in degrees Celsius. Resolution is 0.5 | ||
| 29 | degree for the local temperature, 0.125 degree for the remote temperatures. | ||
| 30 | |||
| 31 | Each temperature channel has its own high and low limits, plus a critical | ||
| 32 | limit. | ||
| 33 | |||
| 34 | The ADM1030 monitors a single fan speed, while the ADM1031 monitors up to | ||
| 35 | two. Each fan channel has its own low speed limit. | ||
diff --git a/Documentation/hwmon/adm9240 b/Documentation/hwmon/adm9240 new file mode 100644 index 000000000000..35f618f32896 --- /dev/null +++ b/Documentation/hwmon/adm9240 | |||
| @@ -0,0 +1,177 @@ | |||
| 1 | Kernel driver adm9240 | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Analog Devices ADM9240 | ||
| 6 | Prefix: 'adm9240' | ||
| 7 | Addresses scanned: I2C 0x2c - 0x2f | ||
| 8 | Datasheet: Publicly available at the Analog Devices website | ||
| 9 | http://www.analog.com/UploadedFiles/Data_Sheets/79857778ADM9240_0.pdf | ||
| 10 | |||
| 11 | * Dallas Semiconductor DS1780 | ||
| 12 | Prefix: 'ds1780' | ||
| 13 | Addresses scanned: I2C 0x2c - 0x2f | ||
| 14 | Datasheet: Publicly available at the Dallas Semiconductor (Maxim) website | ||
| 15 | http://pdfserv.maxim-ic.com/en/ds/DS1780.pdf | ||
| 16 | |||
| 17 | * National Semiconductor LM81 | ||
| 18 | Prefix: 'lm81' | ||
| 19 | Addresses scanned: I2C 0x2c - 0x2f | ||
| 20 | Datasheet: Publicly available at the National Semiconductor website | ||
| 21 | http://www.national.com/ds.cgi/LM/LM81.pdf | ||
| 22 | |||
| 23 | Authors: | ||
| 24 | Frodo Looijaard <frodol@dds.nl>, | ||
| 25 | Philip Edelbrock <phil@netroedge.com>, | ||
| 26 | Michiel Rook <michiel@grendelproject.nl>, | ||
| 27 | Grant Coady <gcoady@gmail.com> with guidance | ||
| 28 | from Jean Delvare <khali@linux-fr.org> | ||
| 29 | |||
| 30 | Interface | ||
| 31 | --------- | ||
| 32 | The I2C addresses listed above assume BIOS has not changed the | ||
| 33 | chip MSB 5-bit address. Each chip reports a unique manufacturer | ||
| 34 | identification code as well as the chip revision/stepping level. | ||
| 35 | |||
| 36 | Description | ||
| 37 | ----------- | ||
| 38 | [From ADM9240] The ADM9240 is a complete system hardware monitor for | ||
| 39 | microprocessor-based systems, providing measurement and limit comparison | ||
| 40 | of up to four power supplies and two processor core voltages, plus | ||
| 41 | temperature, two fan speeds and chassis intrusion. Measured values can | ||
| 42 | be read out via an I2C-compatible serial System Management Bus, and values | ||
| 43 | for limit comparisons can be programmed in over the same serial bus. The | ||
| 44 | high speed successive approximation ADC allows frequent sampling of all | ||
| 45 | analog channels to ensure a fast interrupt response to any out-of-limit | ||
| 46 | measurement. | ||
| 47 | |||
| 48 | The ADM9240, DS1780 and LM81 are register compatible, the following | ||
| 49 | details are common to the three chips. Chip differences are described | ||
| 50 | after this section. | ||
| 51 | |||
| 52 | |||
| 53 | Measurements | ||
| 54 | ------------ | ||
| 55 | The measurement cycle | ||
| 56 | |||
| 57 | The adm9240 driver will take a measurement reading no faster than once | ||
| 58 | each two seconds. User-space may read sysfs interface faster than the | ||
| 59 | measurement update rate and will receive cached data from the most | ||
| 60 | recent measurement. | ||
| 61 | |||
| 62 | ADM9240 has a very fast 320us temperature and voltage measurement cycle | ||
| 63 | with independent fan speed measurement cycles counting alternating rising | ||
| 64 | edges of the fan tacho inputs. | ||
| 65 | |||
| 66 | DS1780 measurement cycle is about once per second including fan speed. | ||
| 67 | |||
| 68 | LM81 measurement cycle is about once per 400ms including fan speed. | ||
| 69 | The LM81 12-bit extended temperature measurement mode is not supported. | ||
| 70 | |||
| 71 | Temperature | ||
| 72 | ----------- | ||
| 73 | On chip temperature is reported as degrees Celsius as 9-bit signed data | ||
| 74 | with resolution of 0.5 degrees Celsius. High and low temperature limits | ||
| 75 | are 8-bit signed data with resolution of one degree Celsius. | ||
| 76 | |||
| 77 | Temperature alarm is asserted once the temperature exceeds the high limit, | ||
| 78 | and is cleared when the temperature falls below the temp1_max_hyst value. | ||
| 79 | |||
| 80 | Fan Speed | ||
| 81 | --------- | ||
| 82 | Two fan tacho inputs are provided, the ADM9240 gates an internal 22.5kHz | ||
| 83 | clock via a divider to an 8-bit counter. Fan speed (rpm) is calculated by: | ||
| 84 | |||
| 85 | rpm = (22500 * 60) / (count * divider) | ||
| 86 | |||
| 87 | Automatic fan clock divider | ||
| 88 | |||
| 89 | * User sets 0 to fan_min limit | ||
| 90 | - low speed alarm is disabled | ||
| 91 | - fan clock divider not changed | ||
| 92 | - auto fan clock adjuster enabled for valid fan speed reading | ||
| 93 | |||
| 94 | * User sets fan_min limit too low | ||
| 95 | - low speed alarm is enabled | ||
| 96 | - fan clock divider set to max | ||
| 97 | - fan_min set to register value 254 which corresponds | ||
| 98 | to 664 rpm on adm9240 | ||
| 99 | - low speed alarm will be asserted if fan speed is | ||
| 100 | less than minimum measurable speed | ||
| 101 | - auto fan clock adjuster disabled | ||
| 102 | |||
| 103 | * User sets reasonable fan speed | ||
| 104 | - low speed alarm is enabled | ||
| 105 | - fan clock divider set to suit fan_min | ||
| 106 | - auto fan clock adjuster enabled: adjusts fan_min | ||
| 107 | |||
| 108 | * User sets unreasonably high low fan speed limit | ||
| 109 | - resolution of the low speed limit may be reduced | ||
| 110 | - alarm will be asserted | ||
| 111 | - auto fan clock adjuster enabled: adjusts fan_min | ||
| 112 | |||
| 113 | * fan speed may be displayed as zero until the auto fan clock divider | ||
| 114 | adjuster brings fan speed clock divider back into chip measurement | ||
| 115 | range, this will occur within a few measurement cycles. | ||
| 116 | |||
| 117 | Analog Output | ||
| 118 | ------------- | ||
| 119 | An analog output provides a 0 to 1.25 volt signal intended for an external | ||
| 120 | fan speed amplifier circuit. The analog output is set to maximum value on | ||
| 121 | power up or reset. This doesn't do much on the test Intel SE440BX-2. | ||
| 122 | |||
| 123 | Voltage Monitor | ||
| 124 | |||
| 125 | Voltage (IN) measurement is internally scaled: | ||
| 126 | |||
| 127 | nr label nominal maximum resolution | ||
| 128 | mV mV mV | ||
| 129 | 0 +2.5V 2500 3320 13.0 | ||
| 130 | 1 Vccp1 2700 3600 14.1 | ||
| 131 | 2 +3.3V 3300 4380 17.2 | ||
| 132 | 3 +5V 5000 6640 26.0 | ||
| 133 | 4 +12V 12000 15940 62.5 | ||
| 134 | 5 Vccp2 2700 3600 14.1 | ||
| 135 | |||
| 136 | The reading is an unsigned 8-bit value, nominal voltage measurement is | ||
| 137 | represented by a reading of 192, being 3/4 of the measurement range. | ||
| 138 | |||
| 139 | An alarm is asserted for any voltage going below or above the set limits. | ||
| 140 | |||
| 141 | The driver reports and accepts voltage limits scaled to the above table. | ||
| 142 | |||
| 143 | VID Monitor | ||
| 144 | ----------- | ||
| 145 | The chip has five inputs to read the 5-bit VID and reports the mV value | ||
| 146 | based on detected CPU type. | ||
| 147 | |||
| 148 | Chassis Intrusion | ||
| 149 | ----------------- | ||
| 150 | An alarm is asserted when the CI pin goes active high. The ADM9240 | ||
| 151 | Datasheet has an example of an external temperature sensor driving | ||
| 152 | this pin. On an Intel SE440BX-2 the Chassis Intrusion header is | ||
| 153 | connected to a normally open switch. | ||
| 154 | |||
| 155 | The ADM9240 provides an internal open drain on this line, and may output | ||
| 156 | a 20 ms active low pulse to reset an external Chassis Intrusion latch. | ||
| 157 | |||
| 158 | Clear the CI latch by writing value 1 to the sysfs chassis_clear file. | ||
| 159 | |||
| 160 | Alarm flags reported as 16-bit word | ||
| 161 | |||
| 162 | bit label comment | ||
| 163 | --- ------------- -------------------------- | ||
| 164 | 0 +2.5 V_Error high or low limit exceeded | ||
| 165 | 1 VCCP_Error high or low limit exceeded | ||
| 166 | 2 +3.3 V_Error high or low limit exceeded | ||
| 167 | 3 +5 V_Error high or low limit exceeded | ||
| 168 | 4 Temp_Error temperature error | ||
| 169 | 6 FAN1_Error fan low limit exceeded | ||
| 170 | 7 FAN2_Error fan low limit exceeded | ||
| 171 | 8 +12 V_Error high or low limit exceeded | ||
| 172 | 9 VCCP2_Error high or low limit exceeded | ||
| 173 | 12 Chassis_Error CI pin went high | ||
| 174 | |||
| 175 | Remaining bits are reserved and thus undefined. It is important to note | ||
| 176 | that alarm bits may be cleared on read, user-space may latch alarms and | ||
| 177 | provide the end-user with a method to clear alarm memory. | ||
diff --git a/Documentation/hwmon/asb100 b/Documentation/hwmon/asb100 new file mode 100644 index 000000000000..ab7365e139be --- /dev/null +++ b/Documentation/hwmon/asb100 | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | Kernel driver asb100 | ||
| 2 | ==================== | ||
| 3 | |||
| 4 | Supported Chips: | ||
| 5 | * Asus ASB100 and ASB100-A "Bach" | ||
| 6 | Prefix: 'asb100' | ||
| 7 | Addresses scanned: I2C 0x2d | ||
| 8 | Datasheet: none released | ||
| 9 | |||
| 10 | Author: Mark M. Hoffman <mhoffman@lightlink.com> | ||
| 11 | |||
| 12 | Description | ||
| 13 | ----------- | ||
| 14 | |||
| 15 | This driver implements support for the Asus ASB100 and ASB100-A "Bach". | ||
| 16 | These are custom ASICs available only on Asus mainboards. Asus refuses to | ||
| 17 | supply a datasheet for these chips. Thanks go to many people who helped | ||
| 18 | investigate their hardware, including: | ||
| 19 | |||
| 20 | Vitaly V. Bursov | ||
| 21 | Alexander van Kaam (author of MBM for Windows) | ||
| 22 | Bertrik Sikken | ||
| 23 | |||
| 24 | The ASB100 implements seven voltage sensors, three fan rotation speed | ||
| 25 | sensors, four temperature sensors, VID lines and alarms. In addition to | ||
| 26 | these, the ASB100-A also implements a single PWM controller for fans 2 and | ||
| 27 | 3 (i.e. one setting controls both.) If you have a plain ASB100, the PWM | ||
| 28 | controller will simply not work (or maybe it will for you... it doesn't for | ||
| 29 | me). | ||
| 30 | |||
| 31 | Temperatures are measured and reported in degrees Celsius. | ||
| 32 | |||
| 33 | Fan speeds are reported in RPM (rotations per minute). An alarm is | ||
| 34 | triggered if the rotation speed has dropped below a programmable limit. | ||
| 35 | |||
| 36 | Voltage sensors (also known as IN sensors) report values in volts. | ||
| 37 | |||
| 38 | The VID lines encode the core voltage value: the voltage level your | ||
| 39 | processor should work with. This is hardcoded by the mainboard and/or | ||
| 40 | processor itself. It is a value in volts. | ||
| 41 | |||
| 42 | Alarms: (TODO question marks indicate may or may not work) | ||
| 43 | |||
| 44 | 0x0001 => in0 (?) | ||
| 45 | 0x0002 => in1 (?) | ||
| 46 | 0x0004 => in2 | ||
| 47 | 0x0008 => in3 | ||
| 48 | 0x0010 => temp1 (1) | ||
| 49 | 0x0020 => temp2 | ||
| 50 | 0x0040 => fan1 | ||
| 51 | 0x0080 => fan2 | ||
| 52 | 0x0100 => in4 | ||
| 53 | 0x0200 => in5 (?) (2) | ||
| 54 | 0x0400 => in6 (?) (2) | ||
| 55 | 0x0800 => fan3 | ||
| 56 | 0x1000 => chassis switch | ||
| 57 | 0x2000 => temp3 | ||
| 58 | |||
| 59 | Alarm Notes: | ||
| 60 | |||
| 61 | (1) This alarm will only trigger if the hysteresis value is 127C. | ||
| 62 | I.e. it behaves the same as w83781d. | ||
| 63 | |||
| 64 | (2) The min and max registers for these values appear to | ||
| 65 | be read-only or otherwise stuck at 0x00. | ||
| 66 | |||
| 67 | TODO: | ||
| 68 | * Experiment with fan divisors > 8. | ||
| 69 | * Experiment with temp. sensor types. | ||
| 70 | * Are there really 13 voltage inputs? Probably not... | ||
| 71 | * Cleanups, no doubt... | ||
| 72 | |||
diff --git a/Documentation/hwmon/ds1621 b/Documentation/hwmon/ds1621 new file mode 100644 index 000000000000..1fee6f1e6bc5 --- /dev/null +++ b/Documentation/hwmon/ds1621 | |||
| @@ -0,0 +1,108 @@ | |||
| 1 | Kernel driver ds1621 | ||
| 2 | ==================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Dallas Semiconductor DS1621 | ||
| 6 | Prefix: 'ds1621' | ||
| 7 | Addresses scanned: I2C 0x48 - 0x4f | ||
| 8 | Datasheet: Publicly available at the Dallas Semiconductor website | ||
| 9 | http://www.dalsemi.com/ | ||
| 10 | * Dallas Semiconductor DS1625 | ||
| 11 | Prefix: 'ds1621' | ||
| 12 | Addresses scanned: I2C 0x48 - 0x4f | ||
| 13 | Datasheet: Publicly available at the Dallas Semiconductor website | ||
| 14 | http://www.dalsemi.com/ | ||
| 15 | |||
| 16 | Authors: | ||
| 17 | Christian W. Zuckschwerdt <zany@triq.net> | ||
| 18 | valuable contributions by Jan M. Sendler <sendler@sendler.de> | ||
| 19 | ported to 2.6 by Aurelien Jarno <aurelien@aurel32.net> | ||
| 20 | with the help of Jean Delvare <khali@linux-fr.org> | ||
| 21 | |||
| 22 | Module Parameters | ||
| 23 | ------------------ | ||
| 24 | |||
| 25 | * polarity int | ||
| 26 | Output's polarity: 0 = active high, 1 = active low | ||
| 27 | |||
| 28 | Description | ||
| 29 | ----------- | ||
| 30 | |||
| 31 | The DS1621 is a (one instance) digital thermometer and thermostat. It has | ||
| 32 | both high and low temperature limits which can be user defined (i.e. | ||
| 33 | programmed into non-volatile on-chip registers). Temperature range is -55 | ||
| 34 | degree Celsius to +125 in 0.5 increments. You may convert this into a | ||
| 35 | Fahrenheit range of -67 to +257 degrees with 0.9 steps. If polarity | ||
| 36 | parameter is not provided, original value is used. | ||
| 37 | |||
| 38 | As for the thermostat, behavior can also be programmed using the polarity | ||
| 39 | toggle. On the one hand ("heater"), the thermostat output of the chip, | ||
| 40 | Tout, will trigger when the low limit temperature is met or underrun and | ||
| 41 | stays high until the high limit is met or exceeded. On the other hand | ||
| 42 | ("cooler"), vice versa. That way "heater" equals "active low", whereas | ||
| 43 | "conditioner" equals "active high". Please note that the DS1621 data sheet | ||
| 44 | is somewhat misleading in this point since setting the polarity bit does | ||
| 45 | not simply invert Tout. | ||
| 46 | |||
| 47 | A second thing is that, during extensive testing, Tout showed a tolerance | ||
| 48 | of up to +/- 0.5 degrees even when compared against precise temperature | ||
| 49 | readings. Be sure to have a high vs. low temperature limit gap of al least | ||
| 50 | 1.0 degree Celsius to avoid Tout "bouncing", though! | ||
| 51 | |||
| 52 | As for alarms, you can read the alarm status of the DS1621 via the 'alarms' | ||
| 53 | /sys file interface. The result consists mainly of bit 6 and 5 of the | ||
| 54 | configuration register of the chip; bit 6 (0x40 or 64) is the high alarm | ||
| 55 | bit and bit 5 (0x20 or 32) the low one. These bits are set when the high or | ||
| 56 | low limits are met or exceeded and are reset by the module as soon as the | ||
| 57 | respective temperature ranges are left. | ||
| 58 | |||
| 59 | The alarm registers are in no way suitable to find out about the actual | ||
| 60 | status of Tout. They will only tell you about its history, whether or not | ||
| 61 | any of the limits have ever been met or exceeded since last power-up or | ||
| 62 | reset. Be aware: When testing, it showed that the status of Tout can change | ||
| 63 | with neither of the alarms set. | ||
| 64 | |||
| 65 | Temperature conversion of the DS1621 takes up to 1000ms; internal access to | ||
| 66 | non-volatile registers may last for 10ms or below. | ||
| 67 | |||
| 68 | High Accuracy Temperature Reading | ||
| 69 | --------------------------------- | ||
| 70 | |||
| 71 | As said before, the temperature issued via the 9-bit i2c-bus data is | ||
| 72 | somewhat arbitrary. Internally, the temperature conversion is of a | ||
| 73 | different kind that is explained (not so...) well in the DS1621 data sheet. | ||
| 74 | To cut the long story short: Inside the DS1621 there are two oscillators, | ||
| 75 | both of them biassed by a temperature coefficient. | ||
| 76 | |||
| 77 | Higher resolution of the temperature reading can be achieved using the | ||
| 78 | internal projection, which means taking account of REG_COUNT and REG_SLOPE | ||
| 79 | (the driver manages them): | ||
| 80 | |||
| 81 | Taken from Dallas Semiconductors App Note 068: 'Increasing Temperature | ||
| 82 | Resolution on the DS1620' and App Note 105: 'High Resolution Temperature | ||
| 83 | Measurement with Dallas Direct-to-Digital Temperature Sensors' | ||
| 84 | |||
| 85 | - Read the 9-bit temperature and strip the LSB (Truncate the .5 degs) | ||
| 86 | - The resulting value is TEMP_READ. | ||
| 87 | - Then, read REG_COUNT. | ||
| 88 | - And then, REG_SLOPE. | ||
| 89 | |||
| 90 | TEMP = TEMP_READ - 0.25 + ((REG_SLOPE - REG_COUNT) / REG_SLOPE) | ||
| 91 | |||
| 92 | Note that this is what the DONE bit in the DS1621 configuration register is | ||
| 93 | good for: Internally, one temperature conversion takes up to 1000ms. Before | ||
| 94 | that conversion is complete you will not be able to read valid things out | ||
| 95 | of REG_COUNT and REG_SLOPE. The DONE bit, as you may have guessed by now, | ||
| 96 | tells you whether the conversion is complete ("done", in plain English) and | ||
| 97 | thus, whether the values you read are good or not. | ||
| 98 | |||
| 99 | The DS1621 has two modes of operation: "Continuous" conversion, which can | ||
| 100 | be understood as the default stand-alone mode where the chip gets the | ||
| 101 | temperature and controls external devices via its Tout pin or tells other | ||
| 102 | i2c's about it if they care. The other mode is called "1SHOT", that means | ||
| 103 | that it only figures out about the temperature when it is explicitly told | ||
| 104 | to do so; this can be seen as power saving mode. | ||
| 105 | |||
| 106 | Now if you want to read REG_COUNT and REG_SLOPE, you have to either stop | ||
| 107 | the continuous conversions until the contents of these registers are valid, | ||
| 108 | or, in 1SHOT mode, you have to have one conversion made. | ||
diff --git a/Documentation/hwmon/fscher b/Documentation/hwmon/fscher new file mode 100644 index 000000000000..64031659aff3 --- /dev/null +++ b/Documentation/hwmon/fscher | |||
| @@ -0,0 +1,169 @@ | |||
| 1 | Kernel driver fscher | ||
| 2 | ==================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Fujitsu-Siemens Hermes chip | ||
| 6 | Prefix: 'fscher' | ||
| 7 | Addresses scanned: I2C 0x73 | ||
| 8 | |||
| 9 | Authors: | ||
| 10 | Reinhard Nissl <rnissl@gmx.de> based on work | ||
| 11 | from Hermann Jung <hej@odn.de>, | ||
| 12 | Frodo Looijaard <frodol@dds.nl>, | ||
| 13 | Philip Edelbrock <phil@netroedge.com> | ||
| 14 | |||
| 15 | Description | ||
| 16 | ----------- | ||
| 17 | |||
| 18 | This driver implements support for the Fujitsu-Siemens Hermes chip. It is | ||
| 19 | described in the 'Register Set Specification BMC Hermes based Systemboard' | ||
| 20 | from Fujitsu-Siemens. | ||
| 21 | |||
| 22 | The Hermes chip implements a hardware-based system management, e.g. for | ||
| 23 | controlling fan speed and core voltage. There is also a watchdog counter on | ||
| 24 | the chip which can trigger an alarm and even shut the system down. | ||
| 25 | |||
| 26 | The chip provides three temperature values (CPU, motherboard and | ||
| 27 | auxiliary), three voltage values (+12V, +5V and battery) and three fans | ||
| 28 | (power supply, CPU and auxiliary). | ||
| 29 | |||
| 30 | Temperatures are measured in degrees Celsius. The resolution is 1 degree. | ||
| 31 | |||
| 32 | Fan rotation speeds are reported in RPM (rotations per minute). The value | ||
| 33 | can be divided by a programmable divider (1, 2 or 4) which is stored on | ||
| 34 | the chip. | ||
| 35 | |||
| 36 | Voltage sensors (also known as "in" sensors) report their values in volts. | ||
| 37 | |||
| 38 | All values are reported as final values from the driver. There is no need | ||
| 39 | for further calculations. | ||
| 40 | |||
| 41 | |||
| 42 | Detailed description | ||
| 43 | -------------------- | ||
| 44 | |||
| 45 | Below you'll find a single line description of all the bit values. With | ||
| 46 | this information, you're able to decode e. g. alarms, wdog, etc. To make | ||
| 47 | use of the watchdog, you'll need to set the watchdog time and enable the | ||
| 48 | watchdog. After that it is necessary to restart the watchdog time within | ||
| 49 | the specified period of time, or a system reset will occur. | ||
| 50 | |||
| 51 | * revision | ||
| 52 | READING & 0xff = 0x??: HERMES revision identification | ||
| 53 | |||
| 54 | * alarms | ||
| 55 | READING & 0x80 = 0x80: CPU throttling active | ||
| 56 | READING & 0x80 = 0x00: CPU running at full speed | ||
| 57 | |||
| 58 | READING & 0x10 = 0x10: software event (see control:1) | ||
| 59 | READING & 0x10 = 0x00: no software event | ||
| 60 | |||
| 61 | READING & 0x08 = 0x08: watchdog event (see wdog:2) | ||
| 62 | READING & 0x08 = 0x00: no watchdog event | ||
| 63 | |||
| 64 | READING & 0x02 = 0x02: thermal event (see temp*:1) | ||
| 65 | READING & 0x02 = 0x00: no thermal event | ||
| 66 | |||
| 67 | READING & 0x01 = 0x01: fan event (see fan*:1) | ||
| 68 | READING & 0x01 = 0x00: no fan event | ||
| 69 | |||
| 70 | READING & 0x13 ! 0x00: ALERT LED is flashing | ||
| 71 | |||
| 72 | * control | ||
| 73 | READING & 0x01 = 0x01: software event | ||
| 74 | READING & 0x01 = 0x00: no software event | ||
| 75 | |||
| 76 | WRITING & 0x01 = 0x01: set software event | ||
| 77 | WRITING & 0x01 = 0x00: clear software event | ||
| 78 | |||
| 79 | * watchdog_control | ||
| 80 | READING & 0x80 = 0x80: power off on watchdog event while thermal event | ||
| 81 | READING & 0x80 = 0x00: watchdog power off disabled (just system reset enabled) | ||
| 82 | |||
| 83 | READING & 0x40 = 0x40: watchdog timebase 60 seconds (see also wdog:1) | ||
| 84 | READING & 0x40 = 0x00: watchdog timebase 2 seconds | ||
| 85 | |||
| 86 | READING & 0x10 = 0x10: watchdog enabled | ||
| 87 | READING & 0x10 = 0x00: watchdog disabled | ||
| 88 | |||
| 89 | WRITING & 0x80 = 0x80: enable "power off on watchdog event while thermal event" | ||
| 90 | WRITING & 0x80 = 0x00: disable "power off on watchdog event while thermal event" | ||
| 91 | |||
| 92 | WRITING & 0x40 = 0x40: set watchdog timebase to 60 seconds | ||
| 93 | WRITING & 0x40 = 0x00: set watchdog timebase to 2 seconds | ||
| 94 | |||
| 95 | WRITING & 0x20 = 0x20: disable watchdog | ||
| 96 | |||
| 97 | WRITING & 0x10 = 0x10: enable watchdog / restart watchdog time | ||
| 98 | |||
| 99 | * watchdog_state | ||
| 100 | READING & 0x02 = 0x02: watchdog system reset occurred | ||
| 101 | READING & 0x02 = 0x00: no watchdog system reset occurred | ||
| 102 | |||
| 103 | WRITING & 0x02 = 0x02: clear watchdog event | ||
| 104 | |||
| 105 | * watchdog_preset | ||
| 106 | READING & 0xff = 0x??: configured watch dog time in units (see wdog:3 0x40) | ||
| 107 | |||
| 108 | WRITING & 0xff = 0x??: configure watch dog time in units | ||
| 109 | |||
| 110 | * in* (0: +5V, 1: +12V, 2: onboard 3V battery) | ||
| 111 | READING: actual voltage value | ||
| 112 | |||
| 113 | * temp*_status (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor) | ||
| 114 | READING & 0x02 = 0x02: thermal event (overtemperature) | ||
| 115 | READING & 0x02 = 0x00: no thermal event | ||
| 116 | |||
| 117 | READING & 0x01 = 0x01: sensor is working | ||
| 118 | READING & 0x01 = 0x00: sensor is faulty | ||
| 119 | |||
| 120 | WRITING & 0x02 = 0x02: clear thermal event | ||
| 121 | |||
| 122 | * temp*_input (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor) | ||
| 123 | READING: actual temperature value | ||
| 124 | |||
| 125 | * fan*_status (1: power supply fan, 2: CPU fan, 3: auxiliary fan) | ||
| 126 | READING & 0x04 = 0x04: fan event (fan fault) | ||
| 127 | READING & 0x04 = 0x00: no fan event | ||
| 128 | |||
| 129 | WRITING & 0x04 = 0x04: clear fan event | ||
| 130 | |||
| 131 | * fan*_div (1: power supply fan, 2: CPU fan, 3: auxiliary fan) | ||
| 132 | Divisors 2,4 and 8 are supported, both for reading and writing | ||
| 133 | |||
| 134 | * fan*_pwm (1: power supply fan, 2: CPU fan, 3: auxiliary fan) | ||
| 135 | READING & 0xff = 0x00: fan may be switched off | ||
| 136 | READING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V) | ||
| 137 | READING & 0xff = 0xff: fan must run at maximum speed (supply: 12V) | ||
| 138 | READING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V) | ||
| 139 | |||
| 140 | WRITING & 0xff = 0x00: fan may be switched off | ||
| 141 | WRITING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V) | ||
| 142 | WRITING & 0xff = 0xff: fan must run at maximum speed (supply: 12V) | ||
| 143 | WRITING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V) | ||
| 144 | |||
| 145 | * fan*_input (1: power supply fan, 2: CPU fan, 3: auxiliary fan) | ||
| 146 | READING: actual RPM value | ||
| 147 | |||
| 148 | |||
| 149 | Limitations | ||
| 150 | ----------- | ||
| 151 | |||
| 152 | * Measuring fan speed | ||
| 153 | It seems that the chip counts "ripples" (typical fans produce 2 ripples per | ||
| 154 | rotation while VERAX fans produce 18) in a 9-bit register. This register is | ||
| 155 | read out every second, then the ripple prescaler (2, 4 or 8) is applied and | ||
| 156 | the result is stored in the 8 bit output register. Due to the limitation of | ||
| 157 | the counting register to 9 bits, it is impossible to measure a VERAX fan | ||
| 158 | properly (even with a prescaler of 8). At its maximum speed of 3500 RPM the | ||
| 159 | fan produces 1080 ripples per second which causes the counting register to | ||
| 160 | overflow twice, leading to only 186 RPM. | ||
| 161 | |||
| 162 | * Measuring input voltages | ||
| 163 | in2 ("battery") reports the voltage of the onboard lithium battery and not | ||
| 164 | +3.3V from the power supply. | ||
| 165 | |||
| 166 | * Undocumented features | ||
| 167 | Fujitsu-Siemens Computers has not documented all features of the chip so | ||
| 168 | far. Their software, System Guard, shows that there are a still some | ||
| 169 | features which cannot be controlled by this implementation. | ||
diff --git a/Documentation/hwmon/gl518sm b/Documentation/hwmon/gl518sm new file mode 100644 index 000000000000..ce0881883bca --- /dev/null +++ b/Documentation/hwmon/gl518sm | |||
| @@ -0,0 +1,74 @@ | |||
| 1 | Kernel driver gl518sm | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Genesys Logic GL518SM release 0x00 | ||
| 6 | Prefix: 'gl518sm' | ||
| 7 | Addresses scanned: I2C 0x2c and 0x2d | ||
| 8 | Datasheet: http://www.genesyslogic.com/pdf | ||
| 9 | * Genesys Logic GL518SM release 0x80 | ||
| 10 | Prefix: 'gl518sm' | ||
| 11 | Addresses scanned: I2C 0x2c and 0x2d | ||
| 12 | Datasheet: http://www.genesyslogic.com/pdf | ||
| 13 | |||
| 14 | Authors: | ||
| 15 | Frodo Looijaard <frodol@dds.nl>, | ||
| 16 | Kyösti Mälkki <kmalkki@cc.hut.fi> | ||
| 17 | Hong-Gunn Chew <hglinux@gunnet.org> | ||
| 18 | Jean Delvare <khali@linux-fr.org> | ||
| 19 | |||
| 20 | Description | ||
| 21 | ----------- | ||
| 22 | |||
| 23 | IMPORTANT: | ||
| 24 | |||
| 25 | For the revision 0x00 chip, the in0, in1, and in2 values (+5V, +3V, | ||
| 26 | and +12V) CANNOT be read. This is a limitation of the chip, not the driver. | ||
| 27 | |||
| 28 | This driver supports the Genesys Logic GL518SM chip. There are at least | ||
| 29 | two revision of this chip, which we call revision 0x00 and 0x80. Revision | ||
| 30 | 0x80 chips support the reading of all voltages and revision 0x00 only | ||
| 31 | for VIN3. | ||
| 32 | |||
| 33 | The GL518SM implements one temperature sensor, two fan rotation speed | ||
| 34 | sensors, and four voltage sensors. It can report alarms through the | ||
| 35 | computer speakers. | ||
| 36 | |||
| 37 | Temperatures are measured in degrees Celsius. An alarm goes off while the | ||
| 38 | temperature is above the over temperature limit, and has not yet dropped | ||
| 39 | below the hysteresis limit. The alarm always reflects the current | ||
| 40 | situation. Measurements are guaranteed between -10 degrees and +110 | ||
| 41 | degrees, with a accuracy of +/-3 degrees. | ||
| 42 | |||
| 43 | Rotation speeds are reported in RPM (rotations per minute). An alarm is | ||
| 44 | triggered if the rotation speed has dropped below a programmable limit. In | ||
| 45 | case when you have selected to turn fan1 off, no fan1 alarm is triggered. | ||
| 46 | |||
| 47 | Fan readings can be divided by a programmable divider (1, 2, 4 or 8) to | ||
| 48 | give the readings more range or accuracy. Not all RPM values can | ||
| 49 | accurately be represented, so some rounding is done. With a divider | ||
| 50 | of 2, the lowest representable value is around 1900 RPM. | ||
| 51 | |||
| 52 | Voltage sensors (also known as VIN sensors) report their values in volts. | ||
| 53 | An alarm is triggered if the voltage has crossed a programmable minimum or | ||
| 54 | maximum limit. Note that minimum in this case always means 'closest to | ||
| 55 | zero'; this is important for negative voltage measurements. The VDD input | ||
| 56 | measures voltages between 0.000 and 5.865 volt, with a resolution of 0.023 | ||
| 57 | volt. The other inputs measure voltages between 0.000 and 4.845 volt, with | ||
| 58 | a resolution of 0.019 volt. Note that revision 0x00 chips do not support | ||
| 59 | reading the current voltage of any input except for VIN3; limit setting and | ||
| 60 | alarms work fine, though. | ||
| 61 | |||
| 62 | When an alarm is triggered, you can be warned by a beeping signal through your | ||
| 63 | computer speaker. It is possible to enable all beeping globally, or only the | ||
| 64 | beeping for some alarms. | ||
| 65 | |||
| 66 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 67 | is read at least once (except for temperature alarms). This means that the | ||
| 68 | cause for the alarm may already have disappeared! Note that in the current | ||
| 69 | implementation, all hardware registers are read whenever any data is read | ||
| 70 | (unless it is less than 1.5 seconds since the last update). This means that | ||
| 71 | you can easily miss once-only alarms. | ||
| 72 | |||
| 73 | The GL518SM only updates its values each 1.5 seconds; reading it more often | ||
| 74 | will do no harm, but will return 'old' values. | ||
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87 new file mode 100644 index 000000000000..0d0195040d88 --- /dev/null +++ b/Documentation/hwmon/it87 | |||
| @@ -0,0 +1,96 @@ | |||
| 1 | Kernel driver it87 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * IT8705F | ||
| 6 | Prefix: 'it87' | ||
| 7 | Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports) | ||
| 8 | Datasheet: Publicly available at the ITE website | ||
| 9 | http://www.ite.com.tw/ | ||
| 10 | * IT8712F | ||
| 11 | Prefix: 'it8712' | ||
| 12 | Addresses scanned: I2C 0x28 - 0x2f | ||
| 13 | from Super I/O config space, or default ISA 0x290 (8 I/O ports) | ||
| 14 | Datasheet: Publicly available at the ITE website | ||
| 15 | http://www.ite.com.tw/ | ||
| 16 | * SiS950 [clone of IT8705F] | ||
| 17 | Prefix: 'sis950' | ||
| 18 | Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports) | ||
| 19 | Datasheet: No longer be available | ||
| 20 | |||
| 21 | Author: Christophe Gauthron <chrisg@0-in.com> | ||
| 22 | |||
| 23 | |||
| 24 | Module Parameters | ||
| 25 | ----------------- | ||
| 26 | |||
| 27 | * update_vbat: int | ||
| 28 | |||
| 29 | 0 if vbat should report power on value, 1 if vbat should be updated after | ||
| 30 | each read. Default is 0. On some boards the battery voltage is provided | ||
| 31 | by either the battery or the onboard power supply. Only the first reading | ||
| 32 | at power on will be the actual battery voltage (which the chip does | ||
| 33 | automatically). On other boards the battery voltage is always fed to | ||
| 34 | the chip so can be read at any time. Excessive reading may decrease | ||
| 35 | battery life but no information is given in the datasheet. | ||
| 36 | |||
| 37 | * fix_pwm_polarity int | ||
| 38 | |||
| 39 | Force PWM polarity to active high (DANGEROUS). Some chips are | ||
| 40 | misconfigured by BIOS - PWM values would be inverted. This option tries | ||
| 41 | to fix this. Please contact your BIOS manufacturer and ask him for fix. | ||
| 42 | |||
| 43 | Description | ||
| 44 | ----------- | ||
| 45 | |||
| 46 | This driver implements support for the IT8705F, IT8712F and SiS950 chips. | ||
| 47 | |||
| 48 | This driver also supports IT8712F, which adds SMBus access, and a VID | ||
| 49 | input, used to report the Vcore voltage of the Pentium processor. | ||
| 50 | The IT8712F additionally features VID inputs. | ||
| 51 | |||
| 52 | These chips are 'Super I/O chips', supporting floppy disks, infrared ports, | ||
| 53 | joysticks and other miscellaneous stuff. For hardware monitoring, they | ||
| 54 | include an 'environment controller' with 3 temperature sensors, 3 fan | ||
| 55 | rotation speed sensors, 8 voltage sensors, and associated alarms. | ||
| 56 | |||
| 57 | Temperatures are measured in degrees Celsius. An alarm is triggered once | ||
| 58 | when the Overtemperature Shutdown limit is crossed. | ||
| 59 | |||
| 60 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | ||
| 61 | triggered if the rotation speed has dropped below a programmable limit. Fan | ||
| 62 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give the | ||
| 63 | readings more range or accuracy. Not all RPM values can accurately be | ||
| 64 | represented, so some rounding is done. With a divider of 2, the lowest | ||
| 65 | representable value is around 2600 RPM. | ||
| 66 | |||
| 67 | Voltage sensors (also known as IN sensors) report their values in volts. An | ||
| 68 | alarm is triggered if the voltage has crossed a programmable minimum or | ||
| 69 | maximum limit. Note that minimum in this case always means 'closest to | ||
| 70 | zero'; this is important for negative voltage measurements. All voltage | ||
| 71 | inputs can measure voltages between 0 and 4.08 volts, with a resolution of | ||
| 72 | 0.016 volt. The battery voltage in8 does not have limit registers. | ||
| 73 | |||
| 74 | The VID lines (IT8712F only) encode the core voltage value: the voltage | ||
| 75 | level your processor should work with. This is hardcoded by the mainboard | ||
| 76 | and/or processor itself. It is a value in volts. | ||
| 77 | |||
| 78 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 79 | is read at least once. This means that the cause for the alarm may already | ||
| 80 | have disappeared! Note that in the current implementation, all hardware | ||
| 81 | registers are read whenever any data is read (unless it is less than 1.5 | ||
| 82 | seconds since the last update). This means that you can easily miss | ||
| 83 | once-only alarms. | ||
| 84 | |||
| 85 | The IT87xx only updates its values each 1.5 seconds; reading it more often | ||
| 86 | will do no harm, but will return 'old' values. | ||
| 87 | |||
| 88 | To change sensor N to a thermistor, 'echo 2 > tempN_type' where N is 1, 2, | ||
| 89 | or 3. To change sensor N to a thermal diode, 'echo 3 > tempN_type'. | ||
| 90 | Give 0 for unused sensor. Any other value is invalid. To configure this at | ||
| 91 | startup, consult lm_sensors's /etc/sensors.conf. (2 = thermistor; | ||
| 92 | 3 = thermal diode) | ||
| 93 | |||
| 94 | The fan speed control features are limited to manual PWM mode. Automatic | ||
| 95 | "Smart Guardian" mode control handling is not implemented. However | ||
| 96 | if you want to go for "manual mode" just write 1 to pwmN_enable. | ||
diff --git a/Documentation/hwmon/lm63 b/Documentation/hwmon/lm63 new file mode 100644 index 000000000000..31660bf97979 --- /dev/null +++ b/Documentation/hwmon/lm63 | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | Kernel driver lm63 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM63 | ||
| 6 | Prefix: 'lm63' | ||
| 7 | Addresses scanned: I2C 0x4c | ||
| 8 | Datasheet: Publicly available at the National Semiconductor website | ||
| 9 | http://www.national.com/pf/LM/LM63.html | ||
| 10 | |||
| 11 | Author: Jean Delvare <khali@linux-fr.org> | ||
| 12 | |||
| 13 | Thanks go to Tyan and especially Alex Buckingham for setting up a remote | ||
| 14 | access to their S4882 test platform for this driver. | ||
| 15 | http://www.tyan.com/ | ||
| 16 | |||
| 17 | Description | ||
| 18 | ----------- | ||
| 19 | |||
| 20 | The LM63 is a digital temperature sensor with integrated fan monitoring | ||
| 21 | and control. | ||
| 22 | |||
| 23 | The LM63 is basically an LM86 with fan speed monitoring and control | ||
| 24 | capabilities added. It misses some of the LM86 features though: | ||
| 25 | - No low limit for local temperature. | ||
| 26 | - No critical limit for local temperature. | ||
| 27 | - Critical limit for remote temperature can be changed only once. We | ||
| 28 | will consider that the critical limit is read-only. | ||
| 29 | |||
| 30 | The datasheet isn't very clear about what the tachometer reading is. | ||
| 31 | |||
| 32 | An explanation from National Semiconductor: The two lower bits of the read | ||
| 33 | value have to be masked out. The value is still 16 bit in width. | ||
| 34 | |||
| 35 | All temperature values are given in degrees Celsius. Resolution is 1.0 | ||
| 36 | degree for the local temperature, 0.125 degree for the remote temperature. | ||
| 37 | |||
| 38 | The fan speed is measured using a tachometer. Contrary to most chips which | ||
| 39 | store the value in an 8-bit register and have a selectable clock divider | ||
| 40 | to make sure that the result will fit in the register, the LM63 uses 16-bit | ||
| 41 | value for measuring the speed of the fan. It can measure fan speeds down to | ||
| 42 | 83 RPM, at least in theory. | ||
| 43 | |||
| 44 | Note that the pin used for fan monitoring is shared with an alert out | ||
| 45 | function. Depending on how the board designer wanted to use the chip, fan | ||
| 46 | speed monitoring will or will not be possible. The proper chip configuration | ||
| 47 | is left to the BIOS, and the driver will blindly trust it. | ||
| 48 | |||
| 49 | A PWM output can be used to control the speed of the fan. The LM63 has two | ||
| 50 | PWM modes: manual and automatic. Automatic mode is not fully implemented yet | ||
| 51 | (you cannot define your custom PWM/temperature curve), and mode change isn't | ||
| 52 | supported either. | ||
| 53 | |||
| 54 | The lm63 driver will not update its values more frequently than every | ||
| 55 | second; reading them more often will do no harm, but will return 'old' | ||
| 56 | values. | ||
| 57 | |||
diff --git a/Documentation/hwmon/lm75 b/Documentation/hwmon/lm75 new file mode 100644 index 000000000000..8e6356fe05d7 --- /dev/null +++ b/Documentation/hwmon/lm75 | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | Kernel driver lm75 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM75 | ||
| 6 | Prefix: 'lm75' | ||
| 7 | Addresses scanned: I2C 0x48 - 0x4f | ||
| 8 | Datasheet: Publicly available at the National Semiconductor website | ||
| 9 | http://www.national.com/ | ||
| 10 | * Dallas Semiconductor DS75 | ||
| 11 | Prefix: 'lm75' | ||
| 12 | Addresses scanned: I2C 0x48 - 0x4f | ||
| 13 | Datasheet: Publicly available at the Dallas Semiconductor website | ||
| 14 | http://www.maxim-ic.com/ | ||
| 15 | * Dallas Semiconductor DS1775 | ||
| 16 | Prefix: 'lm75' | ||
| 17 | Addresses scanned: I2C 0x48 - 0x4f | ||
| 18 | Datasheet: Publicly available at the Dallas Semiconductor website | ||
| 19 | http://www.maxim-ic.com/ | ||
| 20 | * Maxim MAX6625, MAX6626 | ||
| 21 | Prefix: 'lm75' | ||
| 22 | Addresses scanned: I2C 0x48 - 0x4b | ||
| 23 | Datasheet: Publicly available at the Maxim website | ||
| 24 | http://www.maxim-ic.com/ | ||
| 25 | * Microchip (TelCom) TCN75 | ||
| 26 | Prefix: 'lm75' | ||
| 27 | Addresses scanned: I2C 0x48 - 0x4f | ||
| 28 | Datasheet: Publicly available at the Microchip website | ||
| 29 | http://www.microchip.com/ | ||
| 30 | |||
| 31 | Author: Frodo Looijaard <frodol@dds.nl> | ||
| 32 | |||
| 33 | Description | ||
| 34 | ----------- | ||
| 35 | |||
| 36 | The LM75 implements one temperature sensor. Limits can be set through the | ||
| 37 | Overtemperature Shutdown register and Hysteresis register. Each value can be | ||
| 38 | set and read to half-degree accuracy. | ||
| 39 | An alarm is issued (usually to a connected LM78) when the temperature | ||
| 40 | gets higher then the Overtemperature Shutdown value; it stays on until | ||
| 41 | the temperature falls below the Hysteresis value. | ||
| 42 | All temperatures are in degrees Celsius, and are guaranteed within a | ||
| 43 | range of -55 to +125 degrees. | ||
| 44 | |||
| 45 | The LM75 only updates its values each 1.5 seconds; reading it more often | ||
| 46 | will do no harm, but will return 'old' values. | ||
| 47 | |||
| 48 | The LM75 is usually used in combination with LM78-like chips, to measure | ||
| 49 | the temperature of the processor(s). | ||
| 50 | |||
| 51 | The DS75, DS1775, MAX6625, and MAX6626 are supported as well. | ||
| 52 | They are not distinguished from an LM75. While most of these chips | ||
| 53 | have three additional bits of accuracy (12 vs. 9 for the LM75), | ||
| 54 | the additional bits are not supported. Not only that, but these chips will | ||
| 55 | not be detected if not in 9-bit precision mode (use the force parameter if | ||
| 56 | needed). | ||
| 57 | |||
| 58 | The TCN75 is supported as well, and is not distinguished from an LM75. | ||
| 59 | |||
| 60 | The LM75 is essentially an industry standard; there may be other | ||
| 61 | LM75 clones not listed here, with or without various enhancements, | ||
| 62 | that are supported. | ||
| 63 | |||
| 64 | The LM77 is not supported, contrary to what we pretended for a long time. | ||
| 65 | Both chips are simply not compatible, value encoding differs. | ||
diff --git a/Documentation/hwmon/lm77 b/Documentation/hwmon/lm77 new file mode 100644 index 000000000000..57c3a46d6370 --- /dev/null +++ b/Documentation/hwmon/lm77 | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | Kernel driver lm77 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM77 | ||
| 6 | Prefix: 'lm77' | ||
| 7 | Addresses scanned: I2C 0x48 - 0x4b | ||
| 8 | Datasheet: Publicly available at the National Semiconductor website | ||
| 9 | http://www.national.com/ | ||
| 10 | |||
| 11 | Author: Andras BALI <drewie@freemail.hu> | ||
| 12 | |||
| 13 | Description | ||
| 14 | ----------- | ||
| 15 | |||
| 16 | The LM77 implements one temperature sensor. The temperature | ||
| 17 | sensor incorporates a band-gap type temperature sensor, | ||
| 18 | 10-bit ADC, and a digital comparator with user-programmable upper | ||
| 19 | and lower limit values. | ||
| 20 | |||
| 21 | Limits can be set through the Overtemperature Shutdown register and | ||
| 22 | Hysteresis register. | ||
diff --git a/Documentation/hwmon/lm78 b/Documentation/hwmon/lm78 new file mode 100644 index 000000000000..357086ed7f64 --- /dev/null +++ b/Documentation/hwmon/lm78 | |||
| @@ -0,0 +1,82 @@ | |||
| 1 | Kernel driver lm78 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM78 | ||
| 6 | Prefix: 'lm78' | ||
| 7 | Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports) | ||
| 8 | Datasheet: Publicly available at the National Semiconductor website | ||
| 9 | http://www.national.com/ | ||
| 10 | * National Semiconductor LM78-J | ||
| 11 | Prefix: 'lm78-j' | ||
| 12 | Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports) | ||
| 13 | Datasheet: Publicly available at the National Semiconductor website | ||
| 14 | http://www.national.com/ | ||
| 15 | * National Semiconductor LM79 | ||
| 16 | Prefix: 'lm79' | ||
| 17 | Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports) | ||
| 18 | Datasheet: Publicly available at the National Semiconductor website | ||
| 19 | http://www.national.com/ | ||
| 20 | |||
| 21 | Author: Frodo Looijaard <frodol@dds.nl> | ||
| 22 | |||
| 23 | Description | ||
| 24 | ----------- | ||
| 25 | |||
| 26 | This driver implements support for the National Semiconductor LM78, LM78-J | ||
| 27 | and LM79. They are described as 'Microprocessor System Hardware Monitors'. | ||
| 28 | |||
| 29 | There is almost no difference between the three supported chips. Functionally, | ||
| 30 | the LM78 and LM78-J are exactly identical. The LM79 has one more VID line, | ||
| 31 | which is used to report the lower voltages newer Pentium processors use. | ||
| 32 | From here on, LM7* means either of these three types. | ||
| 33 | |||
| 34 | The LM7* implements one temperature sensor, three fan rotation speed sensors, | ||
| 35 | seven voltage sensors, VID lines, alarms, and some miscellaneous stuff. | ||
| 36 | |||
| 37 | Temperatures are measured in degrees Celsius. An alarm is triggered once | ||
| 38 | when the Overtemperature Shutdown limit is crossed; it is triggered again | ||
| 39 | as soon as it drops below the Hysteresis value. A more useful behavior | ||
| 40 | can be found by setting the Hysteresis value to +127 degrees Celsius; in | ||
| 41 | this case, alarms are issued during all the time when the actual temperature | ||
| 42 | is above the Overtemperature Shutdown value. Measurements are guaranteed | ||
| 43 | between -55 and +125 degrees, with a resolution of 1 degree. | ||
| 44 | |||
| 45 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | ||
| 46 | triggered if the rotation speed has dropped below a programmable limit. Fan | ||
| 47 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give | ||
| 48 | the readings more range or accuracy. Not all RPM values can accurately be | ||
| 49 | represented, so some rounding is done. With a divider of 2, the lowest | ||
| 50 | representable value is around 2600 RPM. | ||
| 51 | |||
| 52 | Voltage sensors (also known as IN sensors) report their values in volts. | ||
| 53 | An alarm is triggered if the voltage has crossed a programmable minimum | ||
| 54 | or maximum limit. Note that minimum in this case always means 'closest to | ||
| 55 | zero'; this is important for negative voltage measurements. All voltage | ||
| 56 | inputs can measure voltages between 0 and 4.08 volts, with a resolution | ||
| 57 | of 0.016 volt. | ||
| 58 | |||
| 59 | The VID lines encode the core voltage value: the voltage level your processor | ||
| 60 | should work with. This is hardcoded by the mainboard and/or processor itself. | ||
| 61 | It is a value in volts. When it is unconnected, you will often find the | ||
| 62 | value 3.50 V here. | ||
| 63 | |||
| 64 | In addition to the alarms described above, there are a couple of additional | ||
| 65 | ones. There is a BTI alarm, which gets triggered when an external chip has | ||
| 66 | crossed its limits. Usually, this is connected to all LM75 chips; if at | ||
| 67 | least one crosses its limits, this bit gets set. The CHAS alarm triggers | ||
| 68 | if your computer case is open. The FIFO alarms should never trigger; it | ||
| 69 | indicates an internal error. The SMI_IN alarm indicates some other chip | ||
| 70 | has triggered an SMI interrupt. As we do not use SMI interrupts at all, | ||
| 71 | this condition usually indicates there is a problem with some other | ||
| 72 | device. | ||
| 73 | |||
| 74 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 75 | is read at least once. This means that the cause for the alarm may | ||
| 76 | already have disappeared! Note that in the current implementation, all | ||
| 77 | hardware registers are read whenever any data is read (unless it is less | ||
| 78 | than 1.5 seconds since the last update). This means that you can easily | ||
| 79 | miss once-only alarms. | ||
| 80 | |||
| 81 | The LM7* only updates its values each 1.5 seconds; reading it more often | ||
| 82 | will do no harm, but will return 'old' values. | ||
diff --git a/Documentation/hwmon/lm80 b/Documentation/hwmon/lm80 new file mode 100644 index 000000000000..cb5b407ba3e6 --- /dev/null +++ b/Documentation/hwmon/lm80 | |||
| @@ -0,0 +1,56 @@ | |||
| 1 | Kernel driver lm80 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM80 | ||
| 6 | Prefix: 'lm80' | ||
| 7 | Addresses scanned: I2C 0x28 - 0x2f | ||
| 8 | Datasheet: Publicly available at the National Semiconductor website | ||
| 9 | http://www.national.com/ | ||
| 10 | |||
| 11 | Authors: | ||
| 12 | Frodo Looijaard <frodol@dds.nl>, | ||
| 13 | Philip Edelbrock <phil@netroedge.com> | ||
| 14 | |||
| 15 | Description | ||
| 16 | ----------- | ||
| 17 | |||
| 18 | This driver implements support for the National Semiconductor LM80. | ||
| 19 | It is described as a 'Serial Interface ACPI-Compatible Microprocessor | ||
| 20 | System Hardware Monitor'. | ||
| 21 | |||
| 22 | The LM80 implements one temperature sensor, two fan rotation speed sensors, | ||
| 23 | seven voltage sensors, alarms, and some miscellaneous stuff. | ||
| 24 | |||
| 25 | Temperatures are measured in degrees Celsius. There are two sets of limits | ||
| 26 | which operate independently. When the HOT Temperature Limit is crossed, | ||
| 27 | this will cause an alarm that will be reasserted until the temperature | ||
| 28 | drops below the HOT Hysteresis. The Overtemperature Shutdown (OS) limits | ||
| 29 | should work in the same way (but this must be checked; the datasheet | ||
| 30 | is unclear about this). Measurements are guaranteed between -55 and | ||
| 31 | +125 degrees. The current temperature measurement has a resolution of | ||
| 32 | 0.0625 degrees; the limits have a resolution of 1 degree. | ||
| 33 | |||
| 34 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | ||
| 35 | triggered if the rotation speed has dropped below a programmable limit. Fan | ||
| 36 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give | ||
| 37 | the readings more range or accuracy. Not all RPM values can accurately be | ||
| 38 | represented, so some rounding is done. With a divider of 2, the lowest | ||
| 39 | representable value is around 2600 RPM. | ||
| 40 | |||
| 41 | Voltage sensors (also known as IN sensors) report their values in volts. | ||
| 42 | An alarm is triggered if the voltage has crossed a programmable minimum | ||
| 43 | or maximum limit. Note that minimum in this case always means 'closest to | ||
| 44 | zero'; this is important for negative voltage measurements. All voltage | ||
| 45 | inputs can measure voltages between 0 and 2.55 volts, with a resolution | ||
| 46 | of 0.01 volt. | ||
| 47 | |||
| 48 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 49 | is read at least once. This means that the cause for the alarm may | ||
| 50 | already have disappeared! Note that in the current implementation, all | ||
| 51 | hardware registers are read whenever any data is read (unless it is less | ||
| 52 | than 2.0 seconds since the last update). This means that you can easily | ||
| 53 | miss once-only alarms. | ||
| 54 | |||
| 55 | The LM80 only updates its values each 1.5 seconds; reading it more often | ||
| 56 | will do no harm, but will return 'old' values. | ||
diff --git a/Documentation/hwmon/lm83 b/Documentation/hwmon/lm83 new file mode 100644 index 000000000000..061d9ed8ff43 --- /dev/null +++ b/Documentation/hwmon/lm83 | |||
| @@ -0,0 +1,76 @@ | |||
| 1 | Kernel driver lm83 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM83 | ||
| 6 | Prefix: 'lm83' | ||
| 7 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | ||
| 8 | Datasheet: Publicly available at the National Semiconductor website | ||
| 9 | http://www.national.com/pf/LM/LM83.html | ||
| 10 | |||
| 11 | |||
| 12 | Author: Jean Delvare <khali@linux-fr.org> | ||
| 13 | |||
| 14 | Description | ||
| 15 | ----------- | ||
| 16 | |||
| 17 | The LM83 is a digital temperature sensor. It senses its own temperature as | ||
| 18 | well as the temperature of up to three external diodes. It is compatible | ||
| 19 | with many other devices such as the LM84 and all other ADM1021 clones. | ||
| 20 | The main difference between the LM83 and the LM84 in that the later can | ||
| 21 | only sense the temperature of one external diode. | ||
| 22 | |||
| 23 | Using the adm1021 driver for a LM83 should work, but only two temperatures | ||
| 24 | will be reported instead of four. | ||
| 25 | |||
| 26 | The LM83 is only found on a handful of motherboards. Both a confirmed | ||
| 27 | list and an unconfirmed list follow. If you can confirm or infirm the | ||
| 28 | fact that any of these motherboards do actually have an LM83, please | ||
| 29 | contact us. Note that the LM90 can easily be misdetected as a LM83. | ||
| 30 | |||
| 31 | Confirmed motherboards: | ||
| 32 | SBS P014 | ||
| 33 | |||
| 34 | Unconfirmed motherboards: | ||
| 35 | Gigabyte GA-8IK1100 | ||
| 36 | Iwill MPX2 | ||
| 37 | Soltek SL-75DRV5 | ||
| 38 | |||
| 39 | The driver has been successfully tested by Magnus Forsström, who I'd | ||
| 40 | like to thank here. More testers will be of course welcome. | ||
| 41 | |||
| 42 | The fact that the LM83 is only scarcely used can be easily explained. | ||
| 43 | Most motherboards come with more than just temperature sensors for | ||
| 44 | health monitoring. They also have voltage and fan rotation speed | ||
| 45 | sensors. This means that temperature-only chips are usually used as | ||
| 46 | secondary chips coupled with another chip such as an IT8705F or similar | ||
| 47 | chip, which provides more features. Since systems usually need three | ||
| 48 | temperature sensors (motherboard, processor, power supply) and primary | ||
| 49 | chips provide some temperature sensors, the secondary chip, if needed, | ||
| 50 | won't have to handle more than two temperatures. Thus, ADM1021 clones | ||
| 51 | are sufficient, and there is no need for a four temperatures sensor | ||
| 52 | chip such as the LM83. The only case where using an LM83 would make | ||
| 53 | sense is on SMP systems, such as the above-mentioned Iwill MPX2, | ||
| 54 | because you want an additional temperature sensor for each additional | ||
| 55 | CPU. | ||
| 56 | |||
| 57 | On the SBS P014, this is different, since the LM83 is the only hardware | ||
| 58 | monitoring chipset. One temperature sensor is used for the motherboard | ||
| 59 | (actually measuring the LM83's own temperature), one is used for the | ||
| 60 | CPU. The two other sensors must be used to measure the temperature of | ||
| 61 | two other points of the motherboard. We suspect these points to be the | ||
| 62 | north and south bridges, but this couldn't be confirmed. | ||
| 63 | |||
| 64 | All temperature values are given in degrees Celsius. Local temperature | ||
| 65 | is given within a range of 0 to +85 degrees. Remote temperatures are | ||
| 66 | given within a range of 0 to +125 degrees. Resolution is 1.0 degree, | ||
| 67 | accuracy is guaranteed to 3.0 degrees (see the datasheet for more | ||
| 68 | details). | ||
| 69 | |||
| 70 | Each sensor has its own high limit, but the critical limit is common to | ||
| 71 | all four sensors. There is no hysteresis mechanism as found on most | ||
| 72 | recent temperature sensors. | ||
| 73 | |||
| 74 | The lm83 driver will not update its values more frequently than every | ||
| 75 | other second; reading them more often will do no harm, but will return | ||
| 76 | 'old' values. | ||
diff --git a/Documentation/hwmon/lm85 b/Documentation/hwmon/lm85 new file mode 100644 index 000000000000..9549237530cf --- /dev/null +++ b/Documentation/hwmon/lm85 | |||
| @@ -0,0 +1,221 @@ | |||
| 1 | Kernel driver lm85 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM85 (B and C versions) | ||
| 6 | Prefix: 'lm85' | ||
| 7 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | ||
| 8 | Datasheet: http://www.national.com/pf/LM/LM85.html | ||
| 9 | * Analog Devices ADM1027 | ||
| 10 | Prefix: 'adm1027' | ||
| 11 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | ||
| 12 | Datasheet: http://www.analog.com/en/prod/0,,766_825_ADM1027,00.html | ||
| 13 | * Analog Devices ADT7463 | ||
| 14 | Prefix: 'adt7463' | ||
| 15 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | ||
| 16 | Datasheet: http://www.analog.com/en/prod/0,,766_825_ADT7463,00.html | ||
| 17 | * SMSC EMC6D100, SMSC EMC6D101 | ||
| 18 | Prefix: 'emc6d100' | ||
| 19 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | ||
| 20 | Datasheet: http://www.smsc.com/main/tools/discontinued/6d100.pdf | ||
| 21 | * SMSC EMC6D102 | ||
| 22 | Prefix: 'emc6d102' | ||
| 23 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | ||
| 24 | Datasheet: http://www.smsc.com/main/catalog/emc6d102.html | ||
| 25 | |||
| 26 | Authors: | ||
| 27 | Philip Pokorny <ppokorny@penguincomputing.com>, | ||
| 28 | Frodo Looijaard <frodol@dds.nl>, | ||
| 29 | Richard Barrington <rich_b_nz@clear.net.nz>, | ||
| 30 | Margit Schubert-While <margitsw@t-online.de>, | ||
| 31 | Justin Thiessen <jthiessen@penguincomputing.com> | ||
| 32 | |||
| 33 | Description | ||
| 34 | ----------- | ||
| 35 | |||
| 36 | This driver implements support for the National Semiconductor LM85 and | ||
| 37 | compatible chips including the Analog Devices ADM1027, ADT7463 and | ||
| 38 | SMSC EMC6D10x chips family. | ||
| 39 | |||
| 40 | The LM85 uses the 2-wire interface compatible with the SMBUS 2.0 | ||
| 41 | specification. Using an analog to digital converter it measures three (3) | ||
| 42 | temperatures and five (5) voltages. It has four (4) 16-bit counters for | ||
| 43 | measuring fan speed. Five (5) digital inputs are provided for sampling the | ||
| 44 | VID signals from the processor to the VRM. Lastly, there are three (3) PWM | ||
| 45 | outputs that can be used to control fan speed. | ||
| 46 | |||
| 47 | The voltage inputs have internal scaling resistors so that the following | ||
| 48 | voltage can be measured without external resistors: | ||
| 49 | |||
| 50 | 2.5V, 3.3V, 5V, 12V, and CPU core voltage (2.25V) | ||
| 51 | |||
| 52 | The temperatures measured are one internal diode, and two remote diodes. | ||
| 53 | Remote 1 is generally the CPU temperature. These inputs are designed to | ||
| 54 | measure a thermal diode like the one in a Pentium 4 processor in a socket | ||
| 55 | 423 or socket 478 package. They can also measure temperature using a | ||
| 56 | transistor like the 2N3904. | ||
| 57 | |||
| 58 | A sophisticated control system for the PWM outputs is designed into the | ||
| 59 | LM85 that allows fan speed to be adjusted automatically based on any of the | ||
| 60 | three temperature sensors. Each PWM output is individually adjustable and | ||
| 61 | programmable. Once configured, the LM85 will adjust the PWM outputs in | ||
| 62 | response to the measured temperatures without further host intervention. | ||
| 63 | This feature can also be disabled for manual control of the PWM's. | ||
| 64 | |||
| 65 | Each of the measured inputs (voltage, temperature, fan speed) has | ||
| 66 | corresponding high/low limit values. The LM85 will signal an ALARM if any | ||
| 67 | measured value exceeds either limit. | ||
| 68 | |||
| 69 | The LM85 samples all inputs continuously. The lm85 driver will not read | ||
| 70 | the registers more often than once a second. Further, configuration data is | ||
| 71 | only read once each 5 minutes. There is twice as much config data as | ||
| 72 | measurements, so this would seem to be a worthwhile optimization. | ||
| 73 | |||
| 74 | Special Features | ||
| 75 | ---------------- | ||
| 76 | |||
| 77 | The LM85 has four fan speed monitoring modes. The ADM1027 has only two. | ||
| 78 | Both have special circuitry to compensate for PWM interactions with the | ||
| 79 | TACH signal from the fans. The ADM1027 can be configured to measure the | ||
| 80 | speed of a two wire fan, but the input conditioning circuitry is different | ||
| 81 | for 3-wire and 2-wire mode. For this reason, the 2-wire fan modes are not | ||
| 82 | exposed to user control. The BIOS should initialize them to the correct | ||
| 83 | mode. If you've designed your own ADM1027, you'll have to modify the | ||
| 84 | init_client function and add an insmod parameter to set this up. | ||
| 85 | |||
| 86 | To smooth the response of fans to changes in temperature, the LM85 has an | ||
| 87 | optional filter for smoothing temperatures. The ADM1027 has the same | ||
| 88 | config option but uses it to rate limit the changes to fan speed instead. | ||
| 89 | |||
| 90 | The ADM1027 and ADT7463 have a 10-bit ADC and can therefore measure | ||
| 91 | temperatures with 0.25 degC resolution. They also provide an offset to the | ||
| 92 | temperature readings that is automatically applied during measurement. | ||
| 93 | This offset can be used to zero out any errors due to traces and placement. | ||
| 94 | The documentation says that the offset is in 0.25 degC steps, but in | ||
| 95 | initial testing of the ADM1027 it was 1.00 degC steps. Analog Devices has | ||
| 96 | confirmed this "bug". The ADT7463 is reported to work as described in the | ||
| 97 | documentation. The current lm85 driver does not show the offset register. | ||
| 98 | |||
| 99 | The ADT7463 has a THERM asserted counter. This counter has a 22.76ms | ||
| 100 | resolution and a range of 5.8 seconds. The driver implements a 32-bit | ||
| 101 | accumulator of the counter value to extend the range to over a year. The | ||
| 102 | counter will stay at it's max value until read. | ||
| 103 | |||
| 104 | See the vendor datasheets for more information. There is application note | ||
| 105 | from National (AN-1260) with some additional information about the LM85. | ||
| 106 | The Analog Devices datasheet is very detailed and describes a procedure for | ||
| 107 | determining an optimal configuration for the automatic PWM control. | ||
| 108 | |||
| 109 | The SMSC EMC6D100 & EMC6D101 monitor external voltages, temperatures, and | ||
| 110 | fan speeds. They use this monitoring capability to alert the system to out | ||
| 111 | of limit conditions and can automatically control the speeds of multiple | ||
| 112 | fans in a PC or embedded system. The EMC6D101, available in a 24-pin SSOP | ||
| 113 | package, and the EMC6D100, available in a 28-pin SSOP package, are designed | ||
| 114 | to be register compatible. The EMC6D100 offers all the features of the | ||
| 115 | EMC6D101 plus additional voltage monitoring and system control features. | ||
| 116 | Unfortunately it is not possible to distinguish between the package | ||
| 117 | versions on register level so these additional voltage inputs may read | ||
| 118 | zero. The EMC6D102 features addtional ADC bits thus extending precision | ||
| 119 | of voltage and temperature channels. | ||
| 120 | |||
| 121 | |||
| 122 | Hardware Configurations | ||
| 123 | ----------------------- | ||
| 124 | |||
| 125 | The LM85 can be jumpered for 3 different SMBus addresses. There are | ||
| 126 | no other hardware configuration options for the LM85. | ||
| 127 | |||
| 128 | The lm85 driver detects both LM85B and LM85C revisions of the chip. See the | ||
| 129 | datasheet for a complete description of the differences. Other than | ||
| 130 | identifying the chip, the driver behaves no differently with regard to | ||
| 131 | these two chips. The LM85B is recommended for new designs. | ||
| 132 | |||
| 133 | The ADM1027 and ADT7463 chips have an optional SMBALERT output that can be | ||
| 134 | used to signal the chipset in case a limit is exceeded or the temperature | ||
| 135 | sensors fail. Individual sensor interrupts can be masked so they won't | ||
| 136 | trigger SMBALERT. The SMBALERT output if configured replaces one of the other | ||
| 137 | functions (PWM2 or IN0). This functionality is not implemented in current | ||
| 138 | driver. | ||
| 139 | |||
| 140 | The ADT7463 also has an optional THERM output/input which can be connected | ||
| 141 | to the processor PROC_HOT output. If available, the autofan control | ||
| 142 | dynamic Tmin feature can be enabled to keep the system temperature within | ||
| 143 | spec (just?!) with the least possible fan noise. | ||
| 144 | |||
| 145 | Configuration Notes | ||
| 146 | ------------------- | ||
| 147 | |||
| 148 | Besides standard interfaces driver adds following: | ||
| 149 | |||
| 150 | * Temperatures and Zones | ||
| 151 | |||
| 152 | Each temperature sensor is associated with a Zone. There are three | ||
| 153 | sensors and therefore three zones (# 1, 2 and 3). Each zone has the following | ||
| 154 | temperature configuration points: | ||
| 155 | |||
| 156 | * temp#_auto_temp_off - temperature below which fans should be off or spinning very low. | ||
| 157 | * temp#_auto_temp_min - temperature over which fans start to spin. | ||
| 158 | * temp#_auto_temp_max - temperature when fans spin at full speed. | ||
| 159 | * temp#_auto_temp_crit - temperature when all fans will run full speed. | ||
| 160 | |||
| 161 | * PWM Control | ||
| 162 | |||
| 163 | There are three PWM outputs. The LM85 datasheet suggests that the | ||
| 164 | pwm3 output control both fan3 and fan4. Each PWM can be individually | ||
| 165 | configured and assigned to a zone for it's control value. Each PWM can be | ||
| 166 | configured individually according to the following options. | ||
| 167 | |||
| 168 | * pwm#_auto_pwm_min - this specifies the PWM value for temp#_auto_temp_off | ||
| 169 | temperature. (PWM value from 0 to 255) | ||
| 170 | |||
| 171 | * pwm#_auto_pwm_freq - select base frequency of PWM output. You can select | ||
| 172 | in range of 10.0 to 94.0 Hz in .1 Hz units. | ||
| 173 | (Values 100 to 940). | ||
| 174 | |||
| 175 | The pwm#_auto_pwm_freq can be set to one of the following 8 values. Setting the | ||
| 176 | frequency to a value not on this list, will result in the next higher frequency | ||
| 177 | being selected. The actual device frequency may vary slightly from this | ||
| 178 | specification as designed by the manufacturer. Consult the datasheet for more | ||
| 179 | details. (PWM Frequency values: 100, 150, 230, 300, 380, 470, 620, 940) | ||
| 180 | |||
| 181 | * pwm#_auto_pwm_minctl - this flags selects for temp#_auto_temp_off temperature | ||
| 182 | the bahaviour of fans. Write 1 to let fans spinning at | ||
| 183 | pwm#_auto_pwm_min or write 0 to let them off. | ||
| 184 | |||
| 185 | NOTE: It has been reported that there is a bug in the LM85 that causes the flag | ||
| 186 | to be associated with the zones not the PWMs. This contradicts all the | ||
| 187 | published documentation. Setting pwm#_min_ctl in this case actually affects all | ||
| 188 | PWMs controlled by zone '#'. | ||
| 189 | |||
| 190 | * PWM Controlling Zone selection | ||
| 191 | |||
| 192 | * pwm#_auto_channels - controls zone that is associated with PWM | ||
| 193 | |||
| 194 | Configuration choices: | ||
| 195 | |||
| 196 | Value Meaning | ||
| 197 | ------ ------------------------------------------------ | ||
| 198 | 1 Controlled by Zone 1 | ||
| 199 | 2 Controlled by Zone 2 | ||
| 200 | 3 Controlled by Zone 3 | ||
| 201 | 23 Controlled by higher temp of Zone 2 or 3 | ||
| 202 | 123 Controlled by highest temp of Zone 1, 2 or 3 | ||
| 203 | 0 PWM always 0% (off) | ||
| 204 | -1 PWM always 100% (full on) | ||
| 205 | -2 Manual control (write to 'pwm#' to set) | ||
| 206 | |||
| 207 | The National LM85's have two vendor specific configuration | ||
| 208 | features. Tach. mode and Spinup Control. For more details on these, | ||
| 209 | see the LM85 datasheet or Application Note AN-1260. | ||
| 210 | |||
| 211 | The Analog Devices ADM1027 has several vendor specific enhancements. | ||
| 212 | The number of pulses-per-rev of the fans can be set, Tach monitoring | ||
| 213 | can be optimized for PWM operation, and an offset can be applied to | ||
| 214 | the temperatures to compensate for systemic errors in the | ||
| 215 | measurements. | ||
| 216 | |||
| 217 | In addition to the ADM1027 features, the ADT7463 also has Tmin control | ||
| 218 | and THERM asserted counts. Automatic Tmin control acts to adjust the | ||
| 219 | Tmin value to maintain the measured temperature sensor at a specified | ||
| 220 | temperature. There isn't much documentation on this feature in the | ||
| 221 | ADT7463 data sheet. This is not supported by current driver. | ||
diff --git a/Documentation/hwmon/lm87 b/Documentation/hwmon/lm87 new file mode 100644 index 000000000000..c952c57f0e11 --- /dev/null +++ b/Documentation/hwmon/lm87 | |||
| @@ -0,0 +1,73 @@ | |||
| 1 | Kernel driver lm87 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM87 | ||
| 6 | Prefix: 'lm87' | ||
| 7 | Addresses scanned: I2C 0x2c - 0x2f | ||
| 8 | Datasheet: http://www.national.com/pf/LM/LM87.html | ||
| 9 | |||
| 10 | Authors: | ||
| 11 | Frodo Looijaard <frodol@dds.nl>, | ||
| 12 | Philip Edelbrock <phil@netroedge.com>, | ||
| 13 | Mark Studebaker <mdsxyz123@yahoo.com>, | ||
| 14 | Stephen Rousset <stephen.rousset@rocketlogix.com>, | ||
| 15 | Dan Eaton <dan.eaton@rocketlogix.com>, | ||
| 16 | Jean Delvare <khali@linux-fr.org>, | ||
| 17 | Original 2.6 port Jeff Oliver | ||
| 18 | |||
| 19 | Description | ||
| 20 | ----------- | ||
| 21 | |||
| 22 | This driver implements support for the National Semiconductor LM87. | ||
| 23 | |||
| 24 | The LM87 implements up to three temperature sensors, up to two fan | ||
| 25 | rotation speed sensors, up to seven voltage sensors, alarms, and some | ||
| 26 | miscellaneous stuff. | ||
| 27 | |||
| 28 | Temperatures are measured in degrees Celsius. Each input has a high | ||
| 29 | and low alarm settings. A high limit produces an alarm when the value | ||
| 30 | goes above it, and an alarm is also produced when the value goes below | ||
| 31 | the low limit. | ||
| 32 | |||
| 33 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | ||
| 34 | triggered if the rotation speed has dropped below a programmable limit. Fan | ||
| 35 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give | ||
| 36 | the readings more range or accuracy. Not all RPM values can accurately be | ||
| 37 | represented, so some rounding is done. With a divider of 2, the lowest | ||
| 38 | representable value is around 2600 RPM. | ||
| 39 | |||
| 40 | Voltage sensors (also known as IN sensors) report their values in | ||
| 41 | volts. An alarm is triggered if the voltage has crossed a programmable | ||
| 42 | minimum or maximum limit. Note that minimum in this case always means | ||
| 43 | 'closest to zero'; this is important for negative voltage measurements. | ||
| 44 | |||
| 45 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 46 | is read at least once. This means that the cause for the alarm may | ||
| 47 | already have disappeared! Note that in the current implementation, all | ||
| 48 | hardware registers are read whenever any data is read (unless it is less | ||
| 49 | than 1.0 seconds since the last update). This means that you can easily | ||
| 50 | miss once-only alarms. | ||
| 51 | |||
| 52 | The lm87 driver only updates its values each 1.0 seconds; reading it more | ||
| 53 | often will do no harm, but will return 'old' values. | ||
| 54 | |||
| 55 | |||
| 56 | Hardware Configurations | ||
| 57 | ----------------------- | ||
| 58 | |||
| 59 | The LM87 has four pins which can serve one of two possible functions, | ||
| 60 | depending on the hardware configuration. | ||
| 61 | |||
| 62 | Some functions share pins, so not all functions are available at the same | ||
| 63 | time. Which are depends on the hardware setup. This driver assumes that | ||
| 64 | the BIOS configured the chip correctly. In that respect, it differs from | ||
| 65 | the original driver (from lm_sensors for Linux 2.4), which would force the | ||
| 66 | LM87 to an arbitrary, compile-time chosen mode, regardless of the actual | ||
| 67 | chipset wiring. | ||
| 68 | |||
| 69 | For reference, here is the list of exclusive functions: | ||
| 70 | - in0+in5 (default) or temp3 | ||
| 71 | - fan1 (default) or in6 | ||
| 72 | - fan2 (default) or in7 | ||
| 73 | - VID lines (default) or IRQ lines (not handled by this driver) | ||
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 new file mode 100644 index 000000000000..2c4cf39471f4 --- /dev/null +++ b/Documentation/hwmon/lm90 | |||
| @@ -0,0 +1,121 @@ | |||
| 1 | Kernel driver lm90 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM90 | ||
| 6 | Prefix: 'lm90' | ||
| 7 | Addresses scanned: I2C 0x4c | ||
| 8 | Datasheet: Publicly available at the National Semiconductor website | ||
| 9 | http://www.national.com/pf/LM/LM90.html | ||
| 10 | * National Semiconductor LM89 | ||
| 11 | Prefix: 'lm99' | ||
| 12 | Addresses scanned: I2C 0x4c and 0x4d | ||
| 13 | Datasheet: Publicly available at the National Semiconductor website | ||
| 14 | http://www.national.com/pf/LM/LM89.html | ||
| 15 | * National Semiconductor LM99 | ||
| 16 | Prefix: 'lm99' | ||
| 17 | Addresses scanned: I2C 0x4c and 0x4d | ||
| 18 | Datasheet: Publicly available at the National Semiconductor website | ||
| 19 | http://www.national.com/pf/LM/LM99.html | ||
| 20 | * National Semiconductor LM86 | ||
| 21 | Prefix: 'lm86' | ||
| 22 | Addresses scanned: I2C 0x4c | ||
| 23 | Datasheet: Publicly available at the National Semiconductor website | ||
| 24 | http://www.national.com/pf/LM/LM86.html | ||
| 25 | * Analog Devices ADM1032 | ||
| 26 | Prefix: 'adm1032' | ||
| 27 | Addresses scanned: I2C 0x4c | ||
| 28 | Datasheet: Publicly available at the Analog Devices website | ||
| 29 | http://products.analog.com/products/info.asp?product=ADM1032 | ||
| 30 | * Analog Devices ADT7461 | ||
| 31 | Prefix: 'adt7461' | ||
| 32 | Addresses scanned: I2C 0x4c | ||
| 33 | Datasheet: Publicly available at the Analog Devices website | ||
| 34 | http://products.analog.com/products/info.asp?product=ADT7461 | ||
| 35 | Note: Only if in ADM1032 compatibility mode | ||
| 36 | * Maxim MAX6657 | ||
| 37 | Prefix: 'max6657' | ||
| 38 | Addresses scanned: I2C 0x4c | ||
| 39 | Datasheet: Publicly available at the Maxim website | ||
| 40 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578 | ||
| 41 | * Maxim MAX6658 | ||
| 42 | Prefix: 'max6657' | ||
| 43 | Addresses scanned: I2C 0x4c | ||
| 44 | Datasheet: Publicly available at the Maxim website | ||
| 45 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578 | ||
| 46 | * Maxim MAX6659 | ||
| 47 | Prefix: 'max6657' | ||
| 48 | Addresses scanned: I2C 0x4c, 0x4d (unsupported 0x4e) | ||
| 49 | Datasheet: Publicly available at the Maxim website | ||
| 50 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578 | ||
| 51 | |||
| 52 | |||
| 53 | Author: Jean Delvare <khali@linux-fr.org> | ||
| 54 | |||
| 55 | |||
| 56 | Description | ||
| 57 | ----------- | ||
| 58 | |||
| 59 | The LM90 is a digital temperature sensor. It senses its own temperature as | ||
| 60 | well as the temperature of up to one external diode. It is compatible | ||
| 61 | with many other devices such as the LM86, the LM89, the LM99, the ADM1032, | ||
| 62 | the MAX6657, MAX6658 and the MAX6659 all of which are supported by this driver. | ||
| 63 | Note that there is no easy way to differentiate between the last three | ||
| 64 | variants. The extra address and features of the MAX6659 are not supported by | ||
| 65 | this driver. Additionally, the ADT7461 is supported if found in ADM1032 | ||
| 66 | compatibility mode. | ||
| 67 | |||
| 68 | The specificity of this family of chipsets over the ADM1021/LM84 | ||
| 69 | family is that it features critical limits with hysteresis, and an | ||
| 70 | increased resolution of the remote temperature measurement. | ||
| 71 | |||
| 72 | The different chipsets of the family are not strictly identical, although | ||
| 73 | very similar. This driver doesn't handle any specific feature for now, | ||
| 74 | but could if there ever was a need for it. For reference, here comes a | ||
| 75 | non-exhaustive list of specific features: | ||
| 76 | |||
| 77 | LM90: | ||
| 78 | * Filter and alert configuration register at 0xBF. | ||
| 79 | * ALERT is triggered by temperatures over critical limits. | ||
| 80 | |||
| 81 | LM86 and LM89: | ||
| 82 | * Same as LM90 | ||
| 83 | * Better external channel accuracy | ||
| 84 | |||
| 85 | LM99: | ||
| 86 | * Same as LM89 | ||
| 87 | * External temperature shifted by 16 degrees down | ||
| 88 | |||
| 89 | ADM1032: | ||
| 90 | * Consecutive alert register at 0x22. | ||
| 91 | * Conversion averaging. | ||
| 92 | * Up to 64 conversions/s. | ||
| 93 | * ALERT is triggered by open remote sensor. | ||
| 94 | |||
| 95 | ADT7461 | ||
| 96 | * Extended temperature range (breaks compatibility) | ||
| 97 | * Lower resolution for remote temperature | ||
| 98 | |||
| 99 | MAX6657 and MAX6658: | ||
| 100 | * Remote sensor type selection | ||
| 101 | |||
| 102 | MAX6659 | ||
| 103 | * Selectable address | ||
| 104 | * Second critical temperature limit | ||
| 105 | * Remote sensor type selection | ||
| 106 | |||
| 107 | All temperature values are given in degrees Celsius. Resolution | ||
| 108 | is 1.0 degree for the local temperature, 0.125 degree for the remote | ||
| 109 | temperature. | ||
| 110 | |||
| 111 | Each sensor has its own high and low limits, plus a critical limit. | ||
| 112 | Additionally, there is a relative hysteresis value common to both critical | ||
| 113 | values. To make life easier to user-space applications, two absolute values | ||
| 114 | are exported, one for each channel, but these values are of course linked. | ||
| 115 | Only the local hysteresis can be set from user-space, and the same delta | ||
| 116 | applies to the remote hysteresis. | ||
| 117 | |||
| 118 | The lm90 driver will not update its values more frequently than every | ||
| 119 | other second; reading them more often will do no harm, but will return | ||
| 120 | 'old' values. | ||
| 121 | |||
diff --git a/Documentation/hwmon/lm92 b/Documentation/hwmon/lm92 new file mode 100644 index 000000000000..7705bfaa0708 --- /dev/null +++ b/Documentation/hwmon/lm92 | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | Kernel driver lm92 | ||
| 2 | ================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor LM92 | ||
| 6 | Prefix: 'lm92' | ||
| 7 | Addresses scanned: I2C 0x48 - 0x4b | ||
| 8 | Datasheet: http://www.national.com/pf/LM/LM92.html | ||
| 9 | * National Semiconductor LM76 | ||
| 10 | Prefix: 'lm92' | ||
| 11 | Addresses scanned: none, force parameter needed | ||
| 12 | Datasheet: http://www.national.com/pf/LM/LM76.html | ||
| 13 | * Maxim MAX6633/MAX6634/MAX6635 | ||
| 14 | Prefix: 'lm92' | ||
| 15 | Addresses scanned: I2C 0x48 - 0x4b | ||
| 16 | MAX6633 with address in 0x40 - 0x47, 0x4c - 0x4f needs force parameter | ||
| 17 | and MAX6634 with address in 0x4c - 0x4f needs force parameter | ||
| 18 | Datasheet: http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3074 | ||
| 19 | |||
| 20 | Authors: | ||
| 21 | Abraham van der Merwe <abraham@2d3d.co.za> | ||
| 22 | Jean Delvare <khali@linux-fr.org> | ||
| 23 | |||
| 24 | |||
| 25 | Description | ||
| 26 | ----------- | ||
| 27 | |||
| 28 | This driver implements support for the National Semiconductor LM92 | ||
| 29 | temperature sensor. | ||
| 30 | |||
| 31 | Each LM92 temperature sensor supports a single temperature sensor. There are | ||
| 32 | alarms for high, low, and critical thresholds. There's also an hysteresis to | ||
| 33 | control the thresholds for resetting alarms. | ||
| 34 | |||
| 35 | Support was added later for the LM76 and Maxim MAX6633/MAX6634/MAX6635, | ||
| 36 | which are mostly compatible. They have not all been tested, so you | ||
| 37 | may need to use the force parameter. | ||
diff --git a/Documentation/hwmon/max1619 b/Documentation/hwmon/max1619 new file mode 100644 index 000000000000..d6f8d9cd7d7f --- /dev/null +++ b/Documentation/hwmon/max1619 | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | Kernel driver max1619 | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Maxim MAX1619 | ||
| 6 | Prefix: 'max1619' | ||
| 7 | Addresses scanned: I2C 0x18-0x1a, 0x29-0x2b, 0x4c-0x4e | ||
| 8 | Datasheet: Publicly available at the Maxim website | ||
| 9 | http://pdfserv.maxim-ic.com/en/ds/MAX1619.pdf | ||
| 10 | |||
| 11 | Authors: | ||
| 12 | Alexey Fisher <fishor@mail.ru>, | ||
| 13 | Jean Delvare <khali@linux-fr.org> | ||
| 14 | |||
| 15 | Description | ||
| 16 | ----------- | ||
| 17 | |||
| 18 | The MAX1619 is a digital temperature sensor. It senses its own temperature as | ||
| 19 | well as the temperature of up to one external diode. | ||
| 20 | |||
| 21 | All temperature values are given in degrees Celsius. Resolution | ||
| 22 | is 1.0 degree for the local temperature and for the remote temperature. | ||
| 23 | |||
| 24 | Only the external sensor has high and low limits. | ||
| 25 | |||
| 26 | The max1619 driver will not update its values more frequently than every | ||
| 27 | other second; reading them more often will do no harm, but will return | ||
| 28 | 'old' values. | ||
| 29 | |||
diff --git a/Documentation/hwmon/pc87360 b/Documentation/hwmon/pc87360 new file mode 100644 index 000000000000..89a8fcfa78df --- /dev/null +++ b/Documentation/hwmon/pc87360 | |||
| @@ -0,0 +1,189 @@ | |||
| 1 | Kernel driver pc87360 | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * National Semiconductor PC87360, PC87363, PC87364, PC87365 and PC87366 | ||
| 6 | Prefixes: 'pc87360', 'pc87363', 'pc87364', 'pc87365', 'pc87366' | ||
| 7 | Addresses scanned: none, address read from Super I/O config space | ||
| 8 | Datasheets: | ||
| 9 | http://www.national.com/pf/PC/PC87360.html | ||
| 10 | http://www.national.com/pf/PC/PC87363.html | ||
| 11 | http://www.national.com/pf/PC/PC87364.html | ||
| 12 | http://www.national.com/pf/PC/PC87365.html | ||
| 13 | http://www.national.com/pf/PC/PC87366.html | ||
| 14 | |||
| 15 | Authors: Jean Delvare <khali@linux-fr.org> | ||
| 16 | |||
| 17 | Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing. | ||
| 18 | Thanks to Rudolf Marek for helping me investigate conversion issues. | ||
| 19 | |||
| 20 | |||
| 21 | Module Parameters | ||
| 22 | ----------------- | ||
| 23 | |||
| 24 | * init int | ||
| 25 | Chip initialization level: | ||
| 26 | 0: None | ||
| 27 | *1: Forcibly enable internal voltage and temperature channels, except in9 | ||
| 28 | 2: Forcibly enable all voltage and temperature channels, except in9 | ||
| 29 | 3: Forcibly enable all voltage and temperature channels, including in9 | ||
| 30 | |||
| 31 | Note that this parameter has no effect for the PC87360, PC87363 and PC87364 | ||
| 32 | chips. | ||
| 33 | |||
| 34 | Also note that for the PC87366, initialization levels 2 and 3 don't enable | ||
| 35 | all temperature channels, because some of them share pins with each other, | ||
| 36 | so they can't be used at the same time. | ||
| 37 | |||
| 38 | |||
| 39 | Description | ||
| 40 | ----------- | ||
| 41 | |||
| 42 | The National Semiconductor PC87360 Super I/O chip contains monitoring and | ||
| 43 | PWM control circuitry for two fans. The PC87363 chip is similar, and the | ||
| 44 | PC87364 chip has monitoring and PWM control for a third fan. | ||
| 45 | |||
| 46 | The National Semiconductor PC87365 and PC87366 Super I/O chips are complete | ||
| 47 | hardware monitoring chipsets, not only controlling and monitoring three fans, | ||
| 48 | but also monitoring eleven voltage inputs and two (PC87365) or up to four | ||
| 49 | (PC87366) temperatures. | ||
| 50 | |||
| 51 | Chip #vin #fan #pwm #temp devid | ||
| 52 | |||
| 53 | PC87360 - 2 2 - 0xE1 | ||
| 54 | PC87363 - 2 2 - 0xE8 | ||
| 55 | PC87364 - 3 3 - 0xE4 | ||
| 56 | PC87365 11 3 3 2 0xE5 | ||
| 57 | PC87366 11 3 3 3-4 0xE9 | ||
| 58 | |||
| 59 | The driver assumes that no more than one chip is present, and one of the | ||
| 60 | standard Super I/O addresses is used (0x2E/0x2F or 0x4E/0x4F) | ||
| 61 | |||
| 62 | Fan Monitoring | ||
| 63 | -------------- | ||
| 64 | |||
| 65 | Fan rotation speeds are reported in RPM (revolutions per minute). An alarm | ||
| 66 | is triggered if the rotation speed has dropped below a programmable limit. | ||
| 67 | A different alarm is triggered if the fan speed is too low to be measured. | ||
| 68 | |||
| 69 | Fan readings are affected by a programmable clock divider, giving the | ||
| 70 | readings more range or accuracy. Usually, users have to learn how it works, | ||
| 71 | but this driver implements dynamic clock divider selection, so you don't | ||
| 72 | have to care no more. | ||
| 73 | |||
| 74 | For reference, here are a few values about clock dividers: | ||
| 75 | |||
| 76 | slowest accuracy highest | ||
| 77 | measurable around 3000 accurate | ||
| 78 | divider speed (RPM) RPM (RPM) speed (RPM) | ||
| 79 | 1 1882 18 6928 | ||
| 80 | 2 941 37 4898 | ||
| 81 | 4 470 74 3464 | ||
| 82 | 8 235 150 2449 | ||
| 83 | |||
| 84 | For the curious, here is how the values above were computed: | ||
| 85 | * slowest measurable speed: clock/(255*divider) | ||
| 86 | * accuracy around 3000 RPM: 3000^2/clock | ||
| 87 | * highest accurate speed: sqrt(clock*100) | ||
| 88 | The clock speed for the PC87360 family is 480 kHz. I arbitrarily chose 100 | ||
| 89 | RPM as the lowest acceptable accuracy. | ||
| 90 | |||
| 91 | As mentioned above, you don't have to care about this no more. | ||
| 92 | |||
| 93 | Note that not all RPM values can be represented, even when the best clock | ||
| 94 | divider is selected. This is not only true for the measured speeds, but | ||
| 95 | also for the programmable low limits, so don't be surprised if you try to | ||
| 96 | set, say, fan1_min to 2900 and it finally reads 2909. | ||
| 97 | |||
| 98 | |||
| 99 | Fan Control | ||
| 100 | ----------- | ||
| 101 | |||
| 102 | PWM (pulse width modulation) values range from 0 to 255, with 0 meaning | ||
| 103 | that the fan is stopped, and 255 meaning that the fan goes at full speed. | ||
| 104 | |||
| 105 | Be extremely careful when changing PWM values. Low PWM values, even | ||
| 106 | non-zero, can stop the fan, which may cause irreversible damage to your | ||
| 107 | hardware if temperature increases too much. When changing PWM values, go | ||
| 108 | step by step and keep an eye on temperatures. | ||
| 109 | |||
| 110 | One user reported problems with PWM. Changing PWM values would break fan | ||
| 111 | speed readings. No explanation nor fix could be found. | ||
| 112 | |||
| 113 | |||
| 114 | Temperature Monitoring | ||
| 115 | ---------------------- | ||
| 116 | |||
| 117 | Temperatures are reported in degrees Celsius. Each temperature measured has | ||
| 118 | associated low, high and overtemperature limits, each of which triggers an | ||
| 119 | alarm when crossed. | ||
| 120 | |||
| 121 | The first two temperature channels are external. The third one (PC87366 | ||
| 122 | only) is internal. | ||
| 123 | |||
| 124 | The PC87366 has three additional temperature channels, based on | ||
| 125 | thermistors (as opposed to thermal diodes for the first three temperature | ||
| 126 | channels). For technical reasons, these channels are held by the VLM | ||
| 127 | (voltage level monitor) logical device, not the TMS (temperature | ||
| 128 | measurement) one. As a consequence, these temperatures are exported as | ||
| 129 | voltages, and converted into temperatures in user-space. | ||
| 130 | |||
| 131 | Note that these three additional channels share their pins with the | ||
| 132 | external thermal diode channels, so you (physically) can't use them all at | ||
| 133 | the same time. Although it should be possible to mix the two sensor types, | ||
| 134 | the documents from National Semiconductor suggest that motherboard | ||
| 135 | manufacturers should choose one type and stick to it. So you will more | ||
| 136 | likely have either channels 1 to 3 (thermal diodes) or 3 to 6 (internal | ||
| 137 | thermal diode, and thermistors). | ||
| 138 | |||
| 139 | |||
| 140 | Voltage Monitoring | ||
| 141 | ------------------ | ||
| 142 | |||
| 143 | Voltages are reported relatively to a reference voltage, either internal or | ||
| 144 | external. Some of them (in7:Vsb, in8:Vdd and in10:AVdd) are divided by two | ||
| 145 | internally, you will have to compensate in sensors.conf. Others (in0 to in6) | ||
| 146 | are likely to be divided externally. The meaning of each of these inputs as | ||
| 147 | well as the values of the resistors used for division is left to the | ||
| 148 | motherboard manufacturers, so you will have to document yourself and edit | ||
| 149 | sensors.conf accordingly. National Semiconductor has a document with | ||
| 150 | recommended resistor values for some voltages, but this still leaves much | ||
| 151 | room for per motherboard specificities, unfortunately. Even worse, | ||
| 152 | motherboard manufacturers don't seem to care about National Semiconductor's | ||
| 153 | recommendations. | ||
| 154 | |||
| 155 | Each voltage measured has associated low and high limits, each of which | ||
| 156 | triggers an alarm when crossed. | ||
| 157 | |||
| 158 | When available, VID inputs are used to provide the nominal CPU Core voltage. | ||
| 159 | The driver will default to VRM 9.0, but this can be changed from user-space. | ||
| 160 | The chipsets can handle two sets of VID inputs (on dual-CPU systems), but | ||
| 161 | the driver will only export one for now. This may change later if there is | ||
| 162 | a need. | ||
| 163 | |||
| 164 | |||
| 165 | General Remarks | ||
| 166 | --------------- | ||
| 167 | |||
| 168 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 169 | is read at least once. This means that the cause for the alarm may already | ||
| 170 | have disappeared! Note that all hardware registers are read whenever any | ||
| 171 | data is read (unless it is less than 2 seconds since the last update, in | ||
| 172 | which case cached values are returned instead). As a consequence, when | ||
| 173 | a once-only alarm triggers, it may take 2 seconds for it to show, and 2 | ||
| 174 | more seconds for it to disappear. | ||
| 175 | |||
| 176 | Monitoring of in9 isn't enabled at lower init levels (<3) because that | ||
| 177 | channel measures the battery voltage (Vbat). It is a known fact that | ||
| 178 | repeatedly sampling the battery voltage reduces its lifetime. National | ||
| 179 | Semiconductor smartly designed their chipset so that in9 is sampled only | ||
| 180 | once every 1024 sampling cycles (that is every 34 minutes at the default | ||
| 181 | sampling rate), so the effect is attenuated, but still present. | ||
| 182 | |||
| 183 | |||
| 184 | Limitations | ||
| 185 | ----------- | ||
| 186 | |||
| 187 | The datasheets suggests that some values (fan mins, fan dividers) | ||
| 188 | shouldn't be changed once the monitoring has started, but we ignore that | ||
| 189 | recommendation. We'll reconsider if it actually causes trouble. | ||
diff --git a/Documentation/hwmon/sis5595 b/Documentation/hwmon/sis5595 new file mode 100644 index 000000000000..b7ae36b8cdf5 --- /dev/null +++ b/Documentation/hwmon/sis5595 | |||
| @@ -0,0 +1,106 @@ | |||
| 1 | Kernel driver sis5595 | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Silicon Integrated Systems Corp. SiS5595 Southbridge Hardware Monitor | ||
| 6 | Prefix: 'sis5595' | ||
| 7 | Addresses scanned: ISA in PCI-space encoded address | ||
| 8 | Datasheet: Publicly available at the Silicon Integrated Systems Corp. site. | ||
| 9 | |||
| 10 | Authors: | ||
| 11 | Kyösti Mälkki <kmalkki@cc.hut.fi>, | ||
| 12 | Mark D. Studebaker <mdsxyz123@yahoo.com>, | ||
| 13 | Aurelien Jarno <aurelien@aurel32.net> 2.6 port | ||
| 14 | |||
| 15 | SiS southbridge has a LM78-like chip integrated on the same IC. | ||
| 16 | This driver is a customized copy of lm78.c | ||
| 17 | |||
| 18 | Supports following revisions: | ||
| 19 | Version PCI ID PCI Revision | ||
| 20 | 1 1039/0008 AF or less | ||
| 21 | 2 1039/0008 B0 or greater | ||
| 22 | |||
| 23 | Note: these chips contain a 0008 device which is incompatible with the | ||
| 24 | 5595. We recognize these by the presence of the listed | ||
| 25 | "blacklist" PCI ID and refuse to load. | ||
| 26 | |||
| 27 | NOT SUPPORTED PCI ID BLACKLIST PCI ID | ||
| 28 | 540 0008 0540 | ||
| 29 | 550 0008 0550 | ||
| 30 | 5513 0008 5511 | ||
| 31 | 5581 0008 5597 | ||
| 32 | 5582 0008 5597 | ||
| 33 | 5597 0008 5597 | ||
| 34 | 630 0008 0630 | ||
| 35 | 645 0008 0645 | ||
| 36 | 730 0008 0730 | ||
| 37 | 735 0008 0735 | ||
| 38 | |||
| 39 | |||
| 40 | Module Parameters | ||
| 41 | ----------------- | ||
| 42 | force_addr=0xaddr Set the I/O base address. Useful for boards | ||
| 43 | that don't set the address in the BIOS. Does not do a | ||
| 44 | PCI force; the device must still be present in lspci. | ||
| 45 | Don't use this unless the driver complains that the | ||
| 46 | base address is not set. | ||
| 47 | Example: 'modprobe sis5595 force_addr=0x290' | ||
| 48 | |||
| 49 | |||
| 50 | Description | ||
| 51 | ----------- | ||
| 52 | |||
| 53 | The SiS5595 southbridge has integrated hardware monitor functions. It also | ||
| 54 | has an I2C bus, but this driver only supports the hardware monitor. For the | ||
| 55 | I2C bus driver see i2c-sis5595. | ||
| 56 | |||
| 57 | The SiS5595 implements zero or one temperature sensor, two fan speed | ||
| 58 | sensors, four or five voltage sensors, and alarms. | ||
| 59 | |||
| 60 | On the first version of the chip, there are four voltage sensors and one | ||
| 61 | temperature sensor. | ||
| 62 | |||
| 63 | On the second version of the chip, the temperature sensor (temp) and the | ||
| 64 | fifth voltage sensor (in4) share a pin which is configurable, but not | ||
| 65 | through the driver. Sorry. The driver senses the configuration of the pin, | ||
| 66 | which was hopefully set by the BIOS. | ||
| 67 | |||
| 68 | Temperatures are measured in degrees Celsius. An alarm is triggered once | ||
| 69 | when the max is crossed; it is also triggered when it drops below the min | ||
| 70 | value. Measurements are guaranteed between -55 and +125 degrees, with a | ||
| 71 | resolution of 1 degree. | ||
| 72 | |||
| 73 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | ||
| 74 | triggered if the rotation speed has dropped below a programmable limit. Fan | ||
| 75 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give | ||
| 76 | the readings more range or accuracy. Not all RPM values can accurately be | ||
| 77 | represented, so some rounding is done. With a divider of 2, the lowest | ||
| 78 | representable value is around 2600 RPM. | ||
| 79 | |||
| 80 | Voltage sensors (also known as IN sensors) report their values in volts. An | ||
| 81 | alarm is triggered if the voltage has crossed a programmable minimum or | ||
| 82 | maximum limit. Note that minimum in this case always means 'closest to | ||
| 83 | zero'; this is important for negative voltage measurements. All voltage | ||
| 84 | inputs can measure voltages between 0 and 4.08 volts, with a resolution of | ||
| 85 | 0.016 volt. | ||
| 86 | |||
| 87 | In addition to the alarms described above, there is a BTI alarm, which gets | ||
| 88 | triggered when an external chip has crossed its limits. Usually, this is | ||
| 89 | connected to some LM75-like chip; if at least one crosses its limits, this | ||
| 90 | bit gets set. | ||
| 91 | |||
| 92 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 93 | is read at least once. This means that the cause for the alarm may already | ||
| 94 | have disappeared! Note that in the current implementation, all hardware | ||
| 95 | registers are read whenever any data is read (unless it is less than 1.5 | ||
| 96 | seconds since the last update). This means that you can easily miss | ||
| 97 | once-only alarms. | ||
| 98 | |||
| 99 | The SiS5595 only updates its values each 1.5 seconds; reading it more often | ||
| 100 | will do no harm, but will return 'old' values. | ||
| 101 | |||
| 102 | Problems | ||
| 103 | -------- | ||
| 104 | Some chips refuse to be enabled. We don't know why. | ||
| 105 | The driver will recognize this and print a message in dmesg. | ||
| 106 | |||
diff --git a/Documentation/hwmon/smsc47b397 b/Documentation/hwmon/smsc47b397 new file mode 100644 index 000000000000..da9d80c96432 --- /dev/null +++ b/Documentation/hwmon/smsc47b397 | |||
| @@ -0,0 +1,158 @@ | |||
| 1 | Kernel driver smsc47b397 | ||
| 2 | ======================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * SMSC LPC47B397-NC | ||
| 6 | Prefix: 'smsc47b397' | ||
| 7 | Addresses scanned: none, address read from Super I/O config space | ||
| 8 | Datasheet: In this file | ||
| 9 | |||
| 10 | Authors: Mark M. Hoffman <mhoffman@lightlink.com> | ||
| 11 | Utilitek Systems, Inc. | ||
| 12 | |||
| 13 | November 23, 2004 | ||
| 14 | |||
| 15 | The following specification describes the SMSC LPC47B397-NC sensor chip | ||
| 16 | (for which there is no public datasheet available). This document was | ||
| 17 | provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected | ||
| 18 | by Mark M. Hoffman <mhoffman@lightlink.com>. | ||
| 19 | |||
| 20 | * * * * * | ||
| 21 | |||
| 22 | Methods for detecting the HP SIO and reading the thermal data on a dc7100. | ||
| 23 | |||
| 24 | The thermal information on the dc7100 is contained in the SIO Hardware Monitor | ||
| 25 | (HWM). The information is accessed through an index/data pair. The index/data | ||
| 26 | pair is located at the HWM Base Address + 0 and the HWM Base Address + 1. The | ||
| 27 | HWM Base address can be obtained from Logical Device 8, registers 0x60 (MSB) | ||
| 28 | and 0x61 (LSB). Currently we are using 0x480 for the HWM Base Address and | ||
| 29 | 0x480 and 0x481 for the index/data pair. | ||
| 30 | |||
| 31 | Reading temperature information. | ||
| 32 | The temperature information is located in the following registers: | ||
| 33 | Temp1 0x25 (Currently, this reflects the CPU temp on all systems). | ||
| 34 | Temp2 0x26 | ||
| 35 | Temp3 0x27 | ||
| 36 | Temp4 0x80 | ||
| 37 | |||
| 38 | Programming Example | ||
| 39 | The following is an example of how to read the HWM temperature registers: | ||
| 40 | MOV DX,480H | ||
| 41 | MOV AX,25H | ||
| 42 | OUT DX,AL | ||
| 43 | MOV DX,481H | ||
| 44 | IN AL,DX | ||
| 45 | |||
| 46 | AL contains the data in hex, the temperature in Celsius is the decimal | ||
| 47 | equivalent. | ||
| 48 | |||
| 49 | Ex: If AL contains 0x2A, the temperature is 42 degrees C. | ||
| 50 | |||
| 51 | Reading tach information. | ||
| 52 | The fan speed information is located in the following registers: | ||
| 53 | LSB MSB | ||
| 54 | Tach1 0x28 0x29 (Currently, this reflects the CPU | ||
| 55 | fan speed on all systems). | ||
| 56 | Tach2 0x2A 0x2B | ||
| 57 | Tach3 0x2C 0x2D | ||
| 58 | Tach4 0x2E 0x2F | ||
| 59 | |||
| 60 | Important!!! | ||
| 61 | Reading the tach LSB locks the tach MSB. | ||
| 62 | The LSB Must be read first. | ||
| 63 | |||
| 64 | How to convert the tach reading to RPM. | ||
| 65 | The tach reading (TCount) is given by: (Tach MSB * 256) + (Tach LSB) | ||
| 66 | The SIO counts the number of 90kHz (11.111us) pulses per revolution. | ||
| 67 | RPM = 60/(TCount * 11.111us) | ||
| 68 | |||
| 69 | Example: | ||
| 70 | Reg 0x28 = 0x9B | ||
| 71 | Reg 0x29 = 0x08 | ||
| 72 | |||
| 73 | TCount = 0x89B = 2203 | ||
| 74 | |||
| 75 | RPM = 60 / (2203 * 11.11111 E-6) = 2451 RPM | ||
| 76 | |||
| 77 | Obtaining the SIO version. | ||
| 78 | |||
| 79 | CONFIGURATION SEQUENCE | ||
| 80 | To program the configuration registers, the following sequence must be followed: | ||
| 81 | 1. Enter Configuration Mode | ||
| 82 | 2. Configure the Configuration Registers | ||
| 83 | 3. Exit Configuration Mode. | ||
| 84 | |||
| 85 | Enter Configuration Mode | ||
| 86 | To place the chip into the Configuration State The config key (0x55) is written | ||
| 87 | to the CONFIG PORT (0x2E). | ||
| 88 | |||
| 89 | Configuration Mode | ||
| 90 | In configuration mode, the INDEX PORT is located at the CONFIG PORT address and | ||
| 91 | the DATA PORT is at INDEX PORT address + 1. | ||
| 92 | |||
| 93 | The desired configuration registers are accessed in two steps: | ||
| 94 | a. Write the index of the Logical Device Number Configuration Register | ||
| 95 | (i.e., 0x07) to the INDEX PORT and then write the number of the | ||
| 96 | desired logical device to the DATA PORT. | ||
| 97 | |||
| 98 | b. Write the address of the desired configuration register within the | ||
| 99 | logical device to the INDEX PORT and then write or read the config- | ||
| 100 | uration register through the DATA PORT. | ||
| 101 | |||
| 102 | Note: If accessing the Global Configuration Registers, step (a) is not required. | ||
| 103 | |||
| 104 | Exit Configuration Mode | ||
| 105 | To exit the Configuration State the write 0xAA to the CONFIG PORT (0x2E). | ||
| 106 | The chip returns to the RUN State. (This is important). | ||
| 107 | |||
| 108 | Programming Example | ||
| 109 | The following is an example of how to read the SIO Device ID located at 0x20 | ||
| 110 | |||
| 111 | ; ENTER CONFIGURATION MODE | ||
| 112 | MOV DX,02EH | ||
| 113 | MOV AX,055H | ||
| 114 | OUT DX,AL | ||
| 115 | ; GLOBAL CONFIGURATION REGISTER | ||
| 116 | MOV DX,02EH | ||
| 117 | MOV AL,20H | ||
| 118 | OUT DX,AL | ||
| 119 | ; READ THE DATA | ||
| 120 | MOV DX,02FH | ||
| 121 | IN AL,DX | ||
| 122 | ; EXIT CONFIGURATION MODE | ||
| 123 | MOV DX,02EH | ||
| 124 | MOV AX,0AAH | ||
| 125 | OUT DX,AL | ||
| 126 | |||
| 127 | The registers of interest for identifying the SIO on the dc7100 are Device ID | ||
| 128 | (0x20) and Device Rev (0x21). | ||
| 129 | |||
| 130 | The Device ID will read 0X6F | ||
| 131 | The Device Rev currently reads 0x01 | ||
| 132 | |||
| 133 | Obtaining the HWM Base Address. | ||
| 134 | The following is an example of how to read the HWM Base Address located in | ||
| 135 | Logical Device 8. | ||
| 136 | |||
| 137 | ; ENTER CONFIGURATION MODE | ||
| 138 | MOV DX,02EH | ||
| 139 | MOV AX,055H | ||
| 140 | OUT DX,AL | ||
| 141 | ; CONFIGURE REGISTER CRE0, | ||
| 142 | ; LOGICAL DEVICE 8 | ||
| 143 | MOV DX,02EH | ||
| 144 | MOV AL,07H | ||
| 145 | OUT DX,AL ;Point to LD# Config Reg | ||
| 146 | MOV DX,02FH | ||
| 147 | MOV AL, 08H | ||
| 148 | OUT DX,AL;Point to Logical Device 8 | ||
| 149 | ; | ||
| 150 | MOV DX,02EH | ||
| 151 | MOV AL,60H | ||
| 152 | OUT DX,AL ; Point to HWM Base Addr MSB | ||
| 153 | MOV DX,02FH | ||
| 154 | IN AL,DX ; Get MSB of HWM Base Addr | ||
| 155 | ; EXIT CONFIGURATION MODE | ||
| 156 | MOV DX,02EH | ||
| 157 | MOV AX,0AAH | ||
| 158 | OUT DX,AL | ||
diff --git a/Documentation/hwmon/smsc47m1 b/Documentation/hwmon/smsc47m1 new file mode 100644 index 000000000000..34e6478c1425 --- /dev/null +++ b/Documentation/hwmon/smsc47m1 | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | Kernel driver smsc47m1 | ||
| 2 | ====================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * SMSC LPC47B27x, LPC47M10x, LPC47M13x, LPC47M14x, LPC47M15x and LPC47M192 | ||
| 6 | Addresses scanned: none, address read from Super I/O config space | ||
| 7 | Prefix: 'smsc47m1' | ||
| 8 | Datasheets: | ||
| 9 | http://www.smsc.com/main/datasheets/47b27x.pdf | ||
| 10 | http://www.smsc.com/main/datasheets/47m10x.pdf | ||
| 11 | http://www.smsc.com/main/tools/discontinued/47m13x.pdf | ||
| 12 | http://www.smsc.com/main/datasheets/47m14x.pdf | ||
| 13 | http://www.smsc.com/main/tools/discontinued/47m15x.pdf | ||
| 14 | http://www.smsc.com/main/datasheets/47m192.pdf | ||
| 15 | |||
| 16 | Authors: | ||
| 17 | Mark D. Studebaker <mdsxyz123@yahoo.com>, | ||
| 18 | With assistance from Bruce Allen <ballen@uwm.edu>, and his | ||
| 19 | fan.c program: http://www.lsc-group.phys.uwm.edu/%7Eballen/driver/ | ||
| 20 | Gabriele Gorla <gorlik@yahoo.com>, | ||
| 21 | Jean Delvare <khali@linux-fr.org> | ||
| 22 | |||
| 23 | Description | ||
| 24 | ----------- | ||
| 25 | |||
| 26 | The Standard Microsystems Corporation (SMSC) 47M1xx Super I/O chips | ||
| 27 | contain monitoring and PWM control circuitry for two fans. | ||
| 28 | |||
| 29 | The 47M15x and 47M192 chips contain a full 'hardware monitoring block' | ||
| 30 | in addition to the fan monitoring and control. The hardware monitoring | ||
| 31 | block is not supported by the driver. | ||
| 32 | |||
| 33 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | ||
| 34 | triggered if the rotation speed has dropped below a programmable limit. Fan | ||
| 35 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give | ||
| 36 | the readings more range or accuracy. Not all RPM values can accurately be | ||
| 37 | represented, so some rounding is done. With a divider of 2, the lowest | ||
| 38 | representable value is around 2600 RPM. | ||
| 39 | |||
| 40 | PWM values are from 0 to 255. | ||
| 41 | |||
| 42 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 43 | is read at least once. This means that the cause for the alarm may | ||
| 44 | already have disappeared! Note that in the current implementation, all | ||
| 45 | hardware registers are read whenever any data is read (unless it is less | ||
| 46 | than 1.5 seconds since the last update). This means that you can easily | ||
| 47 | miss once-only alarms. | ||
| 48 | |||
| 49 | |||
| 50 | ********************** | ||
| 51 | The lm_sensors project gratefully acknowledges the support of | ||
| 52 | Intel in the development of this driver. | ||
diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface new file mode 100644 index 000000000000..346400519d0d --- /dev/null +++ b/Documentation/hwmon/sysfs-interface | |||
| @@ -0,0 +1,274 @@ | |||
| 1 | Naming and data format standards for sysfs files | ||
| 2 | ------------------------------------------------ | ||
| 3 | |||
| 4 | The libsensors library offers an interface to the raw sensors data | ||
| 5 | through the sysfs interface. See libsensors documentation and source for | ||
| 6 | more further information. As of writing this document, libsensors | ||
| 7 | (from lm_sensors 2.8.3) is heavily chip-dependant. Adding or updating | ||
| 8 | support for any given chip requires modifying the library's code. | ||
| 9 | This is because libsensors was written for the procfs interface | ||
| 10 | older kernel modules were using, which wasn't standardized enough. | ||
| 11 | Recent versions of libsensors (from lm_sensors 2.8.2 and later) have | ||
| 12 | support for the sysfs interface, though. | ||
| 13 | |||
| 14 | The new sysfs interface was designed to be as chip-independant as | ||
| 15 | possible. | ||
| 16 | |||
| 17 | Note that motherboards vary widely in the connections to sensor chips. | ||
| 18 | There is no standard that ensures, for example, that the second | ||
| 19 | temperature sensor is connected to the CPU, or that the second fan is on | ||
| 20 | the CPU. Also, some values reported by the chips need some computation | ||
| 21 | before they make full sense. For example, most chips can only measure | ||
| 22 | voltages between 0 and +4V. Other voltages are scaled back into that | ||
| 23 | range using external resistors. Since the values of these resistors | ||
| 24 | can change from motherboard to motherboard, the conversions cannot be | ||
| 25 | hard coded into the driver and have to be done in user space. | ||
| 26 | |||
| 27 | For this reason, even if we aim at a chip-independant libsensors, it will | ||
| 28 | still require a configuration file (e.g. /etc/sensors.conf) for proper | ||
| 29 | values conversion, labeling of inputs and hiding of unused inputs. | ||
| 30 | |||
| 31 | An alternative method that some programs use is to access the sysfs | ||
| 32 | files directly. This document briefly describes the standards that the | ||
| 33 | drivers follow, so that an application program can scan for entries and | ||
| 34 | access this data in a simple and consistent way. That said, such programs | ||
| 35 | will have to implement conversion, labeling and hiding of inputs. For | ||
| 36 | this reason, it is still not recommended to bypass the library. | ||
| 37 | |||
| 38 | If you are developing a userspace application please send us feedback on | ||
| 39 | this standard. | ||
| 40 | |||
| 41 | Note that this standard isn't completely established yet, so it is subject | ||
| 42 | to changes, even important ones. One more reason to use the library instead | ||
| 43 | of accessing sysfs files directly. | ||
| 44 | |||
| 45 | Each chip gets its own directory in the sysfs /sys/devices tree. To | ||
| 46 | find all sensor chips, it is easier to follow the symlinks from | ||
| 47 | /sys/i2c/devices/ | ||
| 48 | |||
| 49 | All sysfs values are fixed point numbers. To get the true value of some | ||
| 50 | of the values, you should divide by the specified value. | ||
| 51 | |||
| 52 | There is only one value per file, unlike the older /proc specification. | ||
| 53 | The common scheme for files naming is: <type><number>_<item>. Usual | ||
| 54 | types for sensor chips are "in" (voltage), "temp" (temperature) and | ||
| 55 | "fan" (fan). Usual items are "input" (measured value), "max" (high | ||
| 56 | threshold, "min" (low threshold). Numbering usually starts from 1, | ||
| 57 | except for voltages which start from 0 (because most data sheets use | ||
| 58 | this). A number is always used for elements that can be present more | ||
| 59 | than once, even if there is a single element of the given type on the | ||
| 60 | specific chip. Other files do not refer to a specific element, so | ||
| 61 | they have a simple name, and no number. | ||
| 62 | |||
| 63 | Alarms are direct indications read from the chips. The drivers do NOT | ||
| 64 | make comparisons of readings to thresholds. This allows violations | ||
| 65 | between readings to be caught and alarmed. The exact definition of an | ||
| 66 | alarm (for example, whether a threshold must be met or must be exceeded | ||
| 67 | to cause an alarm) is chip-dependent. | ||
| 68 | |||
| 69 | |||
| 70 | ------------------------------------------------------------------------- | ||
| 71 | |||
| 72 | ************ | ||
| 73 | * Voltages * | ||
| 74 | ************ | ||
| 75 | |||
| 76 | in[0-8]_min Voltage min value. | ||
| 77 | Unit: millivolt | ||
| 78 | Read/Write | ||
| 79 | |||
| 80 | in[0-8]_max Voltage max value. | ||
| 81 | Unit: millivolt | ||
| 82 | Read/Write | ||
| 83 | |||
| 84 | in[0-8]_input Voltage input value. | ||
| 85 | Unit: millivolt | ||
| 86 | Read only | ||
| 87 | Actual voltage depends on the scaling resistors on the | ||
| 88 | motherboard, as recommended in the chip datasheet. | ||
| 89 | This varies by chip and by motherboard. | ||
| 90 | Because of this variation, values are generally NOT scaled | ||
| 91 | by the chip driver, and must be done by the application. | ||
| 92 | However, some drivers (notably lm87 and via686a) | ||
| 93 | do scale, with various degrees of success. | ||
| 94 | These drivers will output the actual voltage. | ||
| 95 | |||
| 96 | Typical usage: | ||
| 97 | in0_* CPU #1 voltage (not scaled) | ||
| 98 | in1_* CPU #2 voltage (not scaled) | ||
| 99 | in2_* 3.3V nominal (not scaled) | ||
| 100 | in3_* 5.0V nominal (scaled) | ||
| 101 | in4_* 12.0V nominal (scaled) | ||
| 102 | in5_* -12.0V nominal (scaled) | ||
| 103 | in6_* -5.0V nominal (scaled) | ||
| 104 | in7_* varies | ||
| 105 | in8_* varies | ||
| 106 | |||
| 107 | cpu[0-1]_vid CPU core reference voltage. | ||
| 108 | Unit: millivolt | ||
| 109 | Read only. | ||
| 110 | Not always correct. | ||
| 111 | |||
| 112 | vrm Voltage Regulator Module version number. | ||
| 113 | Read only. | ||
| 114 | Two digit number, first is major version, second is | ||
| 115 | minor version. | ||
| 116 | Affects the way the driver calculates the CPU core reference | ||
| 117 | voltage from the vid pins. | ||
| 118 | |||
| 119 | |||
| 120 | ******** | ||
| 121 | * Fans * | ||
| 122 | ******** | ||
| 123 | |||
| 124 | fan[1-3]_min Fan minimum value | ||
| 125 | Unit: revolution/min (RPM) | ||
| 126 | Read/Write. | ||
| 127 | |||
| 128 | fan[1-3]_input Fan input value. | ||
| 129 | Unit: revolution/min (RPM) | ||
| 130 | Read only. | ||
| 131 | |||
| 132 | fan[1-3]_div Fan divisor. | ||
| 133 | Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128). | ||
| 134 | Some chips only support values 1, 2, 4 and 8. | ||
| 135 | Note that this is actually an internal clock divisor, which | ||
| 136 | affects the measurable speed range, not the read value. | ||
| 137 | |||
| 138 | ******* | ||
| 139 | * PWM * | ||
| 140 | ******* | ||
| 141 | |||
| 142 | pwm[1-3] Pulse width modulation fan control. | ||
| 143 | Integer value in the range 0 to 255 | ||
| 144 | Read/Write | ||
| 145 | 255 is max or 100%. | ||
| 146 | |||
| 147 | pwm[1-3]_enable | ||
| 148 | Switch PWM on and off. | ||
| 149 | Not always present even if fan*_pwm is. | ||
| 150 | 0 to turn off | ||
| 151 | 1 to turn on in manual mode | ||
| 152 | 2 to turn on in automatic mode | ||
| 153 | Read/Write | ||
| 154 | |||
| 155 | pwm[1-*]_auto_channels_temp | ||
| 156 | Select which temperature channels affect this PWM output in | ||
| 157 | auto mode. Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc... | ||
| 158 | Which values are possible depend on the chip used. | ||
| 159 | |||
| 160 | pwm[1-*]_auto_point[1-*]_pwm | ||
| 161 | pwm[1-*]_auto_point[1-*]_temp | ||
| 162 | pwm[1-*]_auto_point[1-*]_temp_hyst | ||
| 163 | Define the PWM vs temperature curve. Number of trip points is | ||
| 164 | chip-dependent. Use this for chips which associate trip points | ||
| 165 | to PWM output channels. | ||
| 166 | |||
| 167 | OR | ||
| 168 | |||
| 169 | temp[1-*]_auto_point[1-*]_pwm | ||
| 170 | temp[1-*]_auto_point[1-*]_temp | ||
| 171 | temp[1-*]_auto_point[1-*]_temp_hyst | ||
| 172 | Define the PWM vs temperature curve. Number of trip points is | ||
| 173 | chip-dependent. Use this for chips which associate trip points | ||
| 174 | to temperature channels. | ||
| 175 | |||
| 176 | |||
| 177 | **************** | ||
| 178 | * Temperatures * | ||
| 179 | **************** | ||
| 180 | |||
| 181 | temp[1-3]_type Sensor type selection. | ||
| 182 | Integers 1, 2, 3 or thermistor Beta value (3435) | ||
| 183 | Read/Write. | ||
| 184 | 1: PII/Celeron Diode | ||
| 185 | 2: 3904 transistor | ||
| 186 | 3: thermal diode | ||
| 187 | Not all types are supported by all chips | ||
| 188 | |||
| 189 | temp[1-4]_max Temperature max value. | ||
| 190 | Unit: millidegree Celcius | ||
| 191 | Read/Write value. | ||
| 192 | |||
| 193 | temp[1-3]_min Temperature min value. | ||
| 194 | Unit: millidegree Celcius | ||
| 195 | Read/Write value. | ||
| 196 | |||
| 197 | temp[1-3]_max_hyst | ||
| 198 | Temperature hysteresis value for max limit. | ||
| 199 | Unit: millidegree Celcius | ||
| 200 | Must be reported as an absolute temperature, NOT a delta | ||
| 201 | from the max value. | ||
| 202 | Read/Write value. | ||
| 203 | |||
| 204 | temp[1-4]_input Temperature input value. | ||
| 205 | Unit: millidegree Celcius | ||
| 206 | Read only value. | ||
| 207 | |||
| 208 | temp[1-4]_crit Temperature critical value, typically greater than | ||
| 209 | corresponding temp_max values. | ||
| 210 | Unit: millidegree Celcius | ||
| 211 | Read/Write value. | ||
| 212 | |||
| 213 | temp[1-2]_crit_hyst | ||
| 214 | Temperature hysteresis value for critical limit. | ||
| 215 | Unit: millidegree Celcius | ||
| 216 | Must be reported as an absolute temperature, NOT a delta | ||
| 217 | from the critical value. | ||
| 218 | Read/Write value. | ||
| 219 | |||
| 220 | If there are multiple temperature sensors, temp1_* is | ||
| 221 | generally the sensor inside the chip itself, | ||
| 222 | reported as "motherboard temperature". temp2_* to | ||
| 223 | temp4_* are generally sensors external to the chip | ||
| 224 | itself, for example the thermal diode inside the CPU or | ||
| 225 | a thermistor nearby. | ||
| 226 | |||
| 227 | |||
| 228 | ************ | ||
| 229 | * Currents * | ||
| 230 | ************ | ||
| 231 | |||
| 232 | Note that no known chip provides current measurements as of writing, | ||
| 233 | so this part is theoretical, so to say. | ||
| 234 | |||
| 235 | curr[1-n]_max Current max value | ||
| 236 | Unit: milliampere | ||
| 237 | Read/Write. | ||
| 238 | |||
| 239 | curr[1-n]_min Current min value. | ||
| 240 | Unit: milliampere | ||
| 241 | Read/Write. | ||
| 242 | |||
| 243 | curr[1-n]_input Current input value | ||
| 244 | Unit: milliampere | ||
| 245 | Read only. | ||
| 246 | |||
| 247 | |||
| 248 | ********* | ||
| 249 | * Other * | ||
| 250 | ********* | ||
| 251 | |||
| 252 | alarms Alarm bitmask. | ||
| 253 | Read only. | ||
| 254 | Integer representation of one to four bytes. | ||
| 255 | A '1' bit means an alarm. | ||
| 256 | Chips should be programmed for 'comparator' mode so that | ||
| 257 | the alarm will 'come back' after you read the register | ||
| 258 | if it is still valid. | ||
| 259 | Generally a direct representation of a chip's internal | ||
| 260 | alarm registers; there is no standard for the position | ||
| 261 | of individual bits. | ||
| 262 | Bits are defined in kernel/include/sensors.h. | ||
| 263 | |||
| 264 | beep_enable Beep/interrupt enable | ||
| 265 | 0 to disable. | ||
| 266 | 1 to enable. | ||
| 267 | Read/Write | ||
| 268 | |||
| 269 | beep_mask Bitmask for beep. | ||
| 270 | Same format as 'alarms' with the same bit locations. | ||
| 271 | Read/Write | ||
| 272 | |||
| 273 | eeprom Raw EEPROM data in binary form. | ||
| 274 | Read only. | ||
diff --git a/Documentation/hwmon/userspace-tools b/Documentation/hwmon/userspace-tools new file mode 100644 index 000000000000..2622aac65422 --- /dev/null +++ b/Documentation/hwmon/userspace-tools | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | Introduction | ||
| 2 | ------------ | ||
| 3 | |||
| 4 | Most mainboards have sensor chips to monitor system health (like temperatures, | ||
| 5 | voltages, fans speed). They are often connected through an I2C bus, but some | ||
| 6 | are also connected directly through the ISA bus. | ||
| 7 | |||
| 8 | The kernel drivers make the data from the sensor chips available in the /sys | ||
| 9 | virtual filesystem. Userspace tools are then used to display or set or the | ||
| 10 | data in a more friendly manner. | ||
| 11 | |||
| 12 | Lm-sensors | ||
| 13 | ---------- | ||
| 14 | |||
| 15 | Core set of utilites that will allow you to obtain health information, | ||
| 16 | setup monitoring limits etc. You can get them on their homepage | ||
| 17 | http://www.lm-sensors.nu/ or as a package from your Linux distribution. | ||
| 18 | |||
| 19 | If from website: | ||
| 20 | Get lmsensors from project web site. Please note, you need only userspace | ||
| 21 | part, so compile with "make user_install" target. | ||
| 22 | |||
| 23 | General hints to get things working: | ||
| 24 | |||
| 25 | 0) get lm-sensors userspace utils | ||
| 26 | 1) compile all drivers in I2C section as modules in your kernel | ||
| 27 | 2) run sensors-detect script, it will tell you what modules you need to load. | ||
| 28 | 3) load them and run "sensors" command, you should see some results. | ||
| 29 | 4) fix sensors.conf, labels, limits, fan divisors | ||
| 30 | 5) if any more problems consult FAQ, or documentation | ||
| 31 | |||
| 32 | Other utilites | ||
| 33 | -------------- | ||
| 34 | |||
| 35 | If you want some graphical indicators of system health look for applications | ||
| 36 | like: gkrellm, ksensors, xsensors, wmtemp, wmsensors, wmgtemp, ksysguardd, | ||
| 37 | hardware-monitor | ||
| 38 | |||
| 39 | If you are server administrator you can try snmpd or mrtgutils. | ||
diff --git a/Documentation/hwmon/via686a b/Documentation/hwmon/via686a new file mode 100644 index 000000000000..b82014cb7c53 --- /dev/null +++ b/Documentation/hwmon/via686a | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | Kernel driver via686a | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Via VT82C686A, VT82C686B Southbridge Integrated Hardware Monitor | ||
| 6 | Prefix: 'via686a' | ||
| 7 | Addresses scanned: ISA in PCI-space encoded address | ||
| 8 | Datasheet: On request through web form (http://www.via.com.tw/en/support/datasheets/) | ||
| 9 | |||
| 10 | Authors: | ||
| 11 | Kyösti Mälkki <kmalkki@cc.hut.fi>, | ||
| 12 | Mark D. Studebaker <mdsxyz123@yahoo.com> | ||
| 13 | Bob Dougherty <bobd@stanford.edu> | ||
| 14 | (Some conversion-factor data were contributed by | ||
| 15 | Jonathan Teh Soon Yew <j.teh@iname.com> | ||
| 16 | and Alex van Kaam <darkside@chello.nl>.) | ||
| 17 | |||
| 18 | Module Parameters | ||
| 19 | ----------------- | ||
| 20 | |||
| 21 | force_addr=0xaddr Set the I/O base address. Useful for Asus A7V boards | ||
| 22 | that don't set the address in the BIOS. Does not do a | ||
| 23 | PCI force; the via686a must still be present in lspci. | ||
| 24 | Don't use this unless the driver complains that the | ||
| 25 | base address is not set. | ||
| 26 | Example: 'modprobe via686a force_addr=0x6000' | ||
| 27 | |||
| 28 | Description | ||
| 29 | ----------- | ||
| 30 | |||
| 31 | The driver does not distinguish between the chips and reports | ||
| 32 | all as a 686A. | ||
| 33 | |||
| 34 | The Via 686a southbridge has integrated hardware monitor functionality. | ||
| 35 | It also has an I2C bus, but this driver only supports the hardware monitor. | ||
| 36 | For the I2C bus driver, see <file:Documentation/i2c/busses/i2c-viapro> | ||
| 37 | |||
| 38 | The Via 686a implements three temperature sensors, two fan rotation speed | ||
| 39 | sensors, five voltage sensors and alarms. | ||
| 40 | |||
| 41 | Temperatures are measured in degrees Celsius. An alarm is triggered once | ||
| 42 | when the Overtemperature Shutdown limit is crossed; it is triggered again | ||
| 43 | as soon as it drops below the hysteresis value. | ||
| 44 | |||
| 45 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | ||
| 46 | triggered if the rotation speed has dropped below a programmable limit. Fan | ||
| 47 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give | ||
| 48 | the readings more range or accuracy. Not all RPM values can accurately be | ||
| 49 | represented, so some rounding is done. With a divider of 2, the lowest | ||
| 50 | representable value is around 2600 RPM. | ||
| 51 | |||
| 52 | Voltage sensors (also known as IN sensors) report their values in volts. | ||
| 53 | An alarm is triggered if the voltage has crossed a programmable minimum | ||
| 54 | or maximum limit. Voltages are internally scalled, so each voltage channel | ||
| 55 | has a different resolution and range. | ||
| 56 | |||
| 57 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 58 | is read at least once. This means that the cause for the alarm may | ||
| 59 | already have disappeared! Note that in the current implementation, all | ||
| 60 | hardware registers are read whenever any data is read (unless it is less | ||
| 61 | than 1.5 seconds since the last update). This means that you can easily | ||
| 62 | miss once-only alarms. | ||
| 63 | |||
| 64 | The driver only updates its values each 1.5 seconds; reading it more often | ||
| 65 | will do no harm, but will return 'old' values. | ||
diff --git a/Documentation/hwmon/w83627hf b/Documentation/hwmon/w83627hf new file mode 100644 index 000000000000..78f37c2d602e --- /dev/null +++ b/Documentation/hwmon/w83627hf | |||
| @@ -0,0 +1,66 @@ | |||
| 1 | Kernel driver w83627hf | ||
| 2 | ====================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Winbond W83627HF (ISA accesses ONLY) | ||
| 6 | Prefix: 'w83627hf' | ||
| 7 | Addresses scanned: ISA address retrieved from Super I/O registers | ||
| 8 | Datasheet: http://www.winbond.com/PDF/sheet/w83627hf.pdf | ||
| 9 | * Winbond W83627THF | ||
| 10 | Prefix: 'w83627thf' | ||
| 11 | Addresses scanned: ISA address retrieved from Super I/O registers | ||
| 12 | Datasheet: http://www.winbond.com/PDF/sheet/w83627thf.pdf | ||
| 13 | * Winbond W83697HF | ||
| 14 | Prefix: 'w83697hf' | ||
| 15 | Addresses scanned: ISA address retrieved from Super I/O registers | ||
| 16 | Datasheet: http://www.winbond.com/PDF/sheet/697hf.pdf | ||
| 17 | * Winbond W83637HF | ||
| 18 | Prefix: 'w83637hf' | ||
| 19 | Addresses scanned: ISA address retrieved from Super I/O registers | ||
| 20 | Datasheet: http://www.winbond.com/PDF/sheet/w83637hf.pdf | ||
| 21 | |||
| 22 | Authors: | ||
| 23 | Frodo Looijaard <frodol@dds.nl>, | ||
| 24 | Philip Edelbrock <phil@netroedge.com>, | ||
| 25 | Mark Studebaker <mdsxyz123@yahoo.com>, | ||
| 26 | Bernhard C. Schrenk <clemy@clemy.org> | ||
| 27 | |||
| 28 | Module Parameters | ||
| 29 | ----------------- | ||
| 30 | |||
| 31 | * force_addr: int | ||
| 32 | Initialize the ISA address of the sensors | ||
| 33 | * force_i2c: int | ||
| 34 | Initialize the I2C address of the sensors | ||
| 35 | * init: int | ||
| 36 | (default is 1) | ||
| 37 | Use 'init=0' to bypass initializing the chip. | ||
| 38 | Try this if your computer crashes when you load the module. | ||
| 39 | |||
| 40 | Description | ||
| 41 | ----------- | ||
| 42 | |||
| 43 | This driver implements support for ISA accesses *only* for | ||
| 44 | the Winbond W83627HF, W83627THF, W83697HF and W83637HF Super I/O chips. | ||
| 45 | We will refer to them collectively as Winbond chips. | ||
| 46 | |||
| 47 | This driver supports ISA accesses, which should be more reliable | ||
| 48 | than i2c accesses. Also, for Tyan boards which contain both a | ||
| 49 | Super I/O chip and a second i2c-only Winbond chip (often a W83782D), | ||
| 50 | using this driver will avoid i2c address conflicts and complex | ||
| 51 | initialization that were required in the w83781d driver. | ||
| 52 | |||
| 53 | If you really want i2c accesses for these Super I/O chips, | ||
| 54 | use the w83781d driver. However this is not the preferred method | ||
| 55 | now that this ISA driver has been developed. | ||
| 56 | |||
| 57 | Technically, the w83627thf does not support a VID reading. However, it's | ||
| 58 | possible or even likely that your mainboard maker has routed these signals | ||
| 59 | to a specific set of general purpose IO pins (the Asus P4C800-E is one such | ||
| 60 | board). The w83627thf driver now interprets these as VID. If the VID on | ||
| 61 | your board doesn't work, first see doc/vid in the lm_sensors package. If | ||
| 62 | that still doesn't help, email us at lm-sensors@lm-sensors.org. | ||
| 63 | |||
| 64 | For further information on this driver see the w83781d driver | ||
| 65 | documentation. | ||
| 66 | |||
diff --git a/Documentation/hwmon/w83781d b/Documentation/hwmon/w83781d new file mode 100644 index 000000000000..e5459333ba68 --- /dev/null +++ b/Documentation/hwmon/w83781d | |||
| @@ -0,0 +1,402 @@ | |||
| 1 | Kernel driver w83781d | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Winbond W83781D | ||
| 6 | Prefix: 'w83781d' | ||
| 7 | Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports) | ||
| 8 | Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/w83781d.pdf | ||
| 9 | * Winbond W83782D | ||
| 10 | Prefix: 'w83782d' | ||
| 11 | Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports) | ||
| 12 | Datasheet: http://www.winbond.com/PDF/sheet/w83782d.pdf | ||
| 13 | * Winbond W83783S | ||
| 14 | Prefix: 'w83783s' | ||
| 15 | Addresses scanned: I2C 0x2d | ||
| 16 | Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/w83783s.pdf | ||
| 17 | * Winbond W83627HF | ||
| 18 | Prefix: 'w83627hf' | ||
| 19 | Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports) | ||
| 20 | Datasheet: http://www.winbond.com/PDF/sheet/w83627hf.pdf | ||
| 21 | * Asus AS99127F | ||
| 22 | Prefix: 'as99127f' | ||
| 23 | Addresses scanned: I2C 0x28 - 0x2f | ||
| 24 | Datasheet: Unavailable from Asus | ||
| 25 | |||
| 26 | Authors: | ||
| 27 | Frodo Looijaard <frodol@dds.nl>, | ||
| 28 | Philip Edelbrock <phil@netroedge.com>, | ||
| 29 | Mark Studebaker <mdsxyz123@yahoo.com> | ||
| 30 | |||
| 31 | Module parameters | ||
| 32 | ----------------- | ||
| 33 | |||
| 34 | * init int | ||
| 35 | (default 1) | ||
| 36 | Use 'init=0' to bypass initializing the chip. | ||
| 37 | Try this if your computer crashes when you load the module. | ||
| 38 | |||
| 39 | force_subclients=bus,caddr,saddr,saddr | ||
| 40 | This is used to force the i2c addresses for subclients of | ||
| 41 | a certain chip. Typical usage is `force_subclients=0,0x2d,0x4a,0x4b' | ||
| 42 | to force the subclients of chip 0x2d on bus 0 to i2c addresses | ||
| 43 | 0x4a and 0x4b. This parameter is useful for certain Tyan boards. | ||
| 44 | |||
| 45 | Description | ||
| 46 | ----------- | ||
| 47 | |||
| 48 | This driver implements support for the Winbond W83781D, W83782D, W83783S, | ||
| 49 | W83627HF chips, and the Asus AS99127F chips. We will refer to them | ||
| 50 | collectively as W8378* chips. | ||
| 51 | |||
| 52 | There is quite some difference between these chips, but they are similar | ||
| 53 | enough that it was sensible to put them together in one driver. | ||
| 54 | The W83627HF chip is assumed to be identical to the ISA W83782D. | ||
| 55 | The Asus chips are similar to an I2C-only W83782D. | ||
| 56 | |||
| 57 | Chip #vin #fanin #pwm #temp wchipid vendid i2c ISA | ||
| 58 | as99127f 7 3 0 3 0x31 0x12c3 yes no | ||
| 59 | as99127f rev.2 (type_name = as99127f) 0x31 0x5ca3 yes no | ||
| 60 | w83781d 7 3 0 3 0x10-1 0x5ca3 yes yes | ||
| 61 | w83627hf 9 3 2 3 0x21 0x5ca3 yes yes(LPC) | ||
| 62 | w83782d 9 3 2-4 3 0x30 0x5ca3 yes yes | ||
| 63 | w83783s 5-6 3 2 1-2 0x40 0x5ca3 yes no | ||
| 64 | |||
| 65 | Detection of these chips can sometimes be foiled because they can be in | ||
| 66 | an internal state that allows no clean access. If you know the address | ||
| 67 | of the chip, use a 'force' parameter; this will put them into a more | ||
| 68 | well-behaved state first. | ||
| 69 | |||
| 70 | The W8378* implements temperature sensors (three on the W83781D and W83782D, | ||
| 71 | two on the W83783S), three fan rotation speed sensors, voltage sensors | ||
| 72 | (seven on the W83781D, nine on the W83782D and six on the W83783S), VID | ||
| 73 | lines, alarms with beep warnings, and some miscellaneous stuff. | ||
| 74 | |||
| 75 | Temperatures are measured in degrees Celsius. There is always one main | ||
| 76 | temperature sensor, and one (W83783S) or two (W83781D and W83782D) other | ||
| 77 | sensors. An alarm is triggered for the main sensor once when the | ||
| 78 | Overtemperature Shutdown limit is crossed; it is triggered again as soon as | ||
| 79 | it drops below the Hysteresis value. A more useful behavior | ||
| 80 | can be found by setting the Hysteresis value to +127 degrees Celsius; in | ||
| 81 | this case, alarms are issued during all the time when the actual temperature | ||
| 82 | is above the Overtemperature Shutdown value. The driver sets the | ||
| 83 | hysteresis value for temp1 to 127 at initialization. | ||
| 84 | |||
| 85 | For the other temperature sensor(s), an alarm is triggered when the | ||
| 86 | temperature gets higher then the Overtemperature Shutdown value; it stays | ||
| 87 | on until the temperature falls below the Hysteresis value. But on the | ||
| 88 | W83781D, there is only one alarm that functions for both other sensors! | ||
| 89 | Temperatures are guaranteed within a range of -55 to +125 degrees. The | ||
| 90 | main temperature sensors has a resolution of 1 degree; the other sensor(s) | ||
| 91 | of 0.5 degree. | ||
| 92 | |||
| 93 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | ||
| 94 | triggered if the rotation speed has dropped below a programmable limit. Fan | ||
| 95 | readings can be divided by a programmable divider (1, 2, 4 or 8 for the | ||
| 96 | W83781D; 1, 2, 4, 8, 16, 32, 64 or 128 for the others) to give | ||
| 97 | the readings more range or accuracy. Not all RPM values can accurately | ||
| 98 | be represented, so some rounding is done. With a divider of 2, the lowest | ||
| 99 | representable value is around 2600 RPM. | ||
| 100 | |||
| 101 | Voltage sensors (also known as IN sensors) report their values in volts. | ||
| 102 | An alarm is triggered if the voltage has crossed a programmable minimum | ||
| 103 | or maximum limit. Note that minimum in this case always means 'closest to | ||
| 104 | zero'; this is important for negative voltage measurements. All voltage | ||
| 105 | inputs can measure voltages between 0 and 4.08 volts, with a resolution | ||
| 106 | of 0.016 volt. | ||
| 107 | |||
| 108 | The VID lines encode the core voltage value: the voltage level your processor | ||
| 109 | should work with. This is hardcoded by the mainboard and/or processor itself. | ||
| 110 | It is a value in volts. When it is unconnected, you will often find the | ||
| 111 | value 3.50 V here. | ||
| 112 | |||
| 113 | The W83782D and W83783S temperature conversion machine understands about | ||
| 114 | several kinds of temperature probes. You can program the so-called | ||
| 115 | beta value in the sensor files. '1' is the PII/Celeron diode, '2' is the | ||
| 116 | TN3904 transistor, and 3435 the default thermistor value. Other values | ||
| 117 | are (not yet) supported. | ||
| 118 | |||
| 119 | In addition to the alarms described above, there is a CHAS alarm on the | ||
| 120 | chips which triggers if your computer case is open. | ||
| 121 | |||
| 122 | When an alarm goes off, you can be warned by a beeping signal through | ||
| 123 | your computer speaker. It is possible to enable all beeping globally, | ||
| 124 | or only the beeping for some alarms. | ||
| 125 | |||
| 126 | If an alarm triggers, it will remain triggered until the hardware register | ||
| 127 | is read at least once. This means that the cause for the alarm may | ||
| 128 | already have disappeared! Note that in the current implementation, all | ||
| 129 | hardware registers are read whenever any data is read (unless it is less | ||
| 130 | than 1.5 seconds since the last update). This means that you can easily | ||
| 131 | miss once-only alarms. | ||
| 132 | |||
| 133 | The chips only update values each 1.5 seconds; reading them more often | ||
| 134 | will do no harm, but will return 'old' values. | ||
| 135 | |||
| 136 | AS99127F PROBLEMS | ||
| 137 | ----------------- | ||
| 138 | The as99127f support was developed without the benefit of a datasheet. | ||
| 139 | In most cases it is treated as a w83781d (although revision 2 of the | ||
| 140 | AS99127F looks more like a w83782d). | ||
| 141 | This support will be BETA until a datasheet is released. | ||
| 142 | One user has reported problems with fans stopping | ||
| 143 | occasionally. | ||
| 144 | |||
| 145 | Note that the individual beep bits are inverted from the other chips. | ||
| 146 | The driver now takes care of this so that user-space applications | ||
| 147 | don't have to know about it. | ||
| 148 | |||
| 149 | Known problems: | ||
| 150 | - Problems with diode/thermistor settings (supported?) | ||
| 151 | - One user reports fans stopping under high server load. | ||
| 152 | - Revision 2 seems to have 2 PWM registers but we don't know | ||
| 153 | how to handle them. More details below. | ||
| 154 | |||
| 155 | These will not be fixed unless we get a datasheet. | ||
| 156 | If you have problems, please lobby Asus to release a datasheet. | ||
| 157 | Unfortunately several others have without success. | ||
| 158 | Please do not send mail to us asking for better as99127f support. | ||
| 159 | We have done the best we can without a datasheet. | ||
| 160 | Please do not send mail to the author or the sensors group asking for | ||
| 161 | a datasheet or ideas on how to convince Asus. We can't help. | ||
| 162 | |||
| 163 | |||
| 164 | NOTES: | ||
| 165 | ----- | ||
| 166 | 783s has no in1 so that in[2-6] are compatible with the 781d/782d. | ||
| 167 | |||
| 168 | 783s pin is programmable for -5V or temp1; defaults to -5V, | ||
| 169 | no control in driver so temp1 doesn't work. | ||
| 170 | |||
| 171 | 782d and 783s datasheets differ on which is pwm1 and which is pwm2. | ||
| 172 | We chose to follow 782d. | ||
| 173 | |||
| 174 | 782d and 783s pin is programmable for fan3 input or pwm2 output; | ||
| 175 | defaults to fan3 input. | ||
| 176 | If pwm2 is enabled (with echo 255 1 > pwm2), then | ||
| 177 | fan3 will report 0. | ||
| 178 | |||
| 179 | 782d has pwm1-2 for ISA, pwm1-4 for i2c. (pwm3-4 share pins with | ||
| 180 | the ISA pins) | ||
| 181 | |||
| 182 | Data sheet updates: | ||
| 183 | ------------------ | ||
| 184 | - PWM clock registers: | ||
| 185 | |||
| 186 | 000: master / 512 | ||
| 187 | 001: master / 1024 | ||
| 188 | 010: master / 2048 | ||
| 189 | 011: master / 4096 | ||
| 190 | 100: master / 8192 | ||
| 191 | |||
| 192 | |||
| 193 | Answers from Winbond tech support | ||
| 194 | --------------------------------- | ||
| 195 | > | ||
| 196 | > 1) In the W83781D data sheet section 7.2 last paragraph, it talks about | ||
| 197 | > reprogramming the R-T table if the Beta of the thermistor is not | ||
| 198 | > 3435K. The R-T table is described briefly in section 8.20. | ||
| 199 | > What formulas do I use to program a new R-T table for a given Beta? | ||
| 200 | > | ||
| 201 | We are sorry that the calculation for R-T table value is | ||
| 202 | confidential. If you have another Beta value of thermistor, we can help | ||
| 203 | to calculate the R-T table for you. But you should give us real R-T | ||
| 204 | Table which can be gotten by thermistor vendor. Therefore we will calculate | ||
| 205 | them and obtain 32-byte data, and you can fill the 32-byte data to the | ||
| 206 | register in Bank0.CR51 of W83781D. | ||
| 207 | |||
| 208 | |||
| 209 | > 2) In the W83782D data sheet, it mentions that pins 38, 39, and 40 are | ||
| 210 | > programmable to be either thermistor or Pentium II diode inputs. | ||
| 211 | > How do I program them for diode inputs? I can't find any register | ||
| 212 | > to program these to be diode inputs. | ||
| 213 | --> You may program Bank0 CR[5Dh] and CR[59h] registers. | ||
| 214 | |||
| 215 | CR[5Dh] bit 1(VTIN1) bit 2(VTIN2) bit 3(VTIN3) | ||
| 216 | |||
| 217 | thermistor 0 0 0 | ||
| 218 | diode 1 1 1 | ||
| 219 | |||
| 220 | |||
| 221 | (error) CR[59h] bit 4(VTIN1) bit 2(VTIN2) bit 3(VTIN3) | ||
| 222 | (right) CR[59h] bit 4(VTIN1) bit 5(VTIN2) bit 6(VTIN3) | ||
| 223 | |||
| 224 | PII thermal diode 1 1 1 | ||
| 225 | 2N3904 diode 0 0 0 | ||
| 226 | |||
| 227 | |||
| 228 | Asus Clones | ||
| 229 | ----------- | ||
| 230 | |||
| 231 | We have no datasheets for the Asus clones (AS99127F and ASB100 Bach). | ||
| 232 | Here are some very useful information that were given to us by Alex Van | ||
| 233 | Kaam about how to detect these chips, and how to read their values. He | ||
| 234 | also gives advice for another Asus chipset, the Mozart-2 (which we | ||
| 235 | don't support yet). Thanks Alex! | ||
| 236 | I reworded some parts and added personal comments. | ||
| 237 | |||
| 238 | # Detection: | ||
| 239 | |||
| 240 | AS99127F rev.1, AS99127F rev.2 and ASB100: | ||
| 241 | - I2C address range: 0x29 - 0x2F | ||
| 242 | - If register 0x58 holds 0x31 then we have an Asus (either ASB100 or | ||
| 243 | AS99127F) | ||
| 244 | - Which one depends on register 0x4F (manufacturer ID): | ||
| 245 | 0x06 or 0x94: ASB100 | ||
| 246 | 0x12 or 0xC3: AS99127F rev.1 | ||
| 247 | 0x5C or 0xA3: AS99127F rev.2 | ||
| 248 | Note that 0x5CA3 is Winbond's ID (WEC), which let us think Asus get their | ||
| 249 | AS99127F rev.2 direct from Winbond. The other codes mean ATT and DVC, | ||
| 250 | respectively. ATT could stand for Asustek something (although it would be | ||
| 251 | very badly chosen IMHO), I don't know what DVC could stand for. Maybe | ||
| 252 | these codes simply aren't meant to be decoded that way. | ||
| 253 | |||
| 254 | Mozart-2: | ||
| 255 | - I2C address: 0x77 | ||
| 256 | - If register 0x58 holds 0x56 or 0x10 then we have a Mozart-2 | ||
| 257 | - Of the Mozart there are 3 types: | ||
| 258 | 0x58=0x56, 0x4E=0x94, 0x4F=0x36: Asus ASM58 Mozart-2 | ||
| 259 | 0x58=0x56, 0x4E=0x94, 0x4F=0x06: Asus AS2K129R Mozart-2 | ||
| 260 | 0x58=0x10, 0x4E=0x5C, 0x4F=0xA3: Asus ??? Mozart-2 | ||
| 261 | You can handle all 3 the exact same way :) | ||
| 262 | |||
| 263 | # Temperature sensors: | ||
| 264 | |||
| 265 | ASB100: | ||
| 266 | - sensor 1: register 0x27 | ||
| 267 | - sensor 2 & 3 are the 2 LM75's on the SMBus | ||
| 268 | - sensor 4: register 0x17 | ||
| 269 | Remark: I noticed that on Intel boards sensor 2 is used for the CPU | ||
| 270 | and 4 is ignored/stuck, on AMD boards sensor 4 is the CPU and sensor 2 is | ||
| 271 | either ignored or a socket temperature. | ||
| 272 | |||
| 273 | AS99127F (rev.1 and 2 alike): | ||
| 274 | - sensor 1: register 0x27 | ||
| 275 | - sensor 2 & 3 are the 2 LM75's on the SMBus | ||
| 276 | Remark: Register 0x5b is suspected to be temperature type selector. Bit 1 | ||
| 277 | would control temp1, bit 3 temp2 and bit 5 temp3. | ||
| 278 | |||
| 279 | Mozart-2: | ||
| 280 | - sensor 1: register 0x27 | ||
| 281 | - sensor 2: register 0x13 | ||
| 282 | |||
| 283 | # Fan sensors: | ||
| 284 | |||
| 285 | ASB100, AS99127F (rev.1 and 2 alike): | ||
| 286 | - 3 fans, identical to the W83781D | ||
| 287 | |||
| 288 | Mozart-2: | ||
| 289 | - 2 fans only, 1350000/RPM/div | ||
| 290 | - fan 1: register 0x28, divisor on register 0xA1 (bits 4-5) | ||
| 291 | - fan 2: register 0x29, divisor on register 0xA1 (bits 6-7) | ||
| 292 | |||
| 293 | # Voltages: | ||
| 294 | |||
| 295 | This is where there is a difference between AS99127F rev.1 and 2. | ||
| 296 | Remark: The difference is similar to the difference between | ||
| 297 | W83781D and W83782D. | ||
| 298 | |||
| 299 | ASB100: | ||
| 300 | in0=r(0x20)*0.016 | ||
| 301 | in1=r(0x21)*0.016 | ||
| 302 | in2=r(0x22)*0.016 | ||
| 303 | in3=r(0x23)*0.016*1.68 | ||
| 304 | in4=r(0x24)*0.016*3.8 | ||
| 305 | in5=r(0x25)*(-0.016)*3.97 | ||
| 306 | in6=r(0x26)*(-0.016)*1.666 | ||
| 307 | |||
| 308 | AS99127F rev.1: | ||
| 309 | in0=r(0x20)*0.016 | ||
| 310 | in1=r(0x21)*0.016 | ||
| 311 | in2=r(0x22)*0.016 | ||
| 312 | in3=r(0x23)*0.016*1.68 | ||
| 313 | in4=r(0x24)*0.016*3.8 | ||
| 314 | in5=r(0x25)*(-0.016)*3.97 | ||
| 315 | in6=r(0x26)*(-0.016)*1.503 | ||
| 316 | |||
| 317 | AS99127F rev.2: | ||
| 318 | in0=r(0x20)*0.016 | ||
| 319 | in1=r(0x21)*0.016 | ||
| 320 | in2=r(0x22)*0.016 | ||
| 321 | in3=r(0x23)*0.016*1.68 | ||
| 322 | in4=r(0x24)*0.016*3.8 | ||
| 323 | in5=(r(0x25)*0.016-3.6)*5.14+3.6 | ||
| 324 | in6=(r(0x26)*0.016-3.6)*3.14+3.6 | ||
| 325 | |||
| 326 | Mozart-2: | ||
| 327 | in0=r(0x20)*0.016 | ||
| 328 | in1=255 | ||
| 329 | in2=r(0x22)*0.016 | ||
| 330 | in3=r(0x23)*0.016*1.68 | ||
| 331 | in4=r(0x24)*0.016*4 | ||
| 332 | in5=255 | ||
| 333 | in6=255 | ||
| 334 | |||
| 335 | |||
| 336 | # PWM | ||
| 337 | |||
| 338 | Additional info about PWM on the AS99127F (may apply to other Asus | ||
| 339 | chips as well) by Jean Delvare as of 2004-04-09: | ||
| 340 | |||
| 341 | AS99127F revision 2 seems to have two PWM registers at 0x59 and 0x5A, | ||
| 342 | and a temperature sensor type selector at 0x5B (which basically means | ||
| 343 | that they swapped registers 0x59 and 0x5B when you compare with Winbond | ||
| 344 | chips). | ||
| 345 | Revision 1 of the chip also has the temperature sensor type selector at | ||
| 346 | 0x5B, but PWM registers have no effect. | ||
| 347 | |||
| 348 | We don't know exactly how the temperature sensor type selection works. | ||
| 349 | Looks like bits 1-0 are for temp1, bits 3-2 for temp2 and bits 5-4 for | ||
| 350 | temp3, although it is possible that only the most significant bit matters | ||
| 351 | each time. So far, values other than 0 always broke the readings. | ||
| 352 | |||
| 353 | PWM registers seem to be split in two parts: bit 7 is a mode selector, | ||
| 354 | while the other bits seem to define a value or threshold. | ||
| 355 | |||
| 356 | When bit 7 is clear, bits 6-0 seem to hold a threshold value. If the value | ||
| 357 | is below a given limit, the fan runs at low speed. If the value is above | ||
| 358 | the limit, the fan runs at full speed. We have no clue as to what the limit | ||
| 359 | represents. Note that there seem to be some inertia in this mode, speed | ||
| 360 | changes may need some time to trigger. Also, an hysteresis mechanism is | ||
| 361 | suspected since walking through all the values increasingly and then | ||
| 362 | decreasingly led to slightly different limits. | ||
| 363 | |||
| 364 | When bit 7 is set, bits 3-0 seem to hold a threshold value, while bits 6-4 | ||
| 365 | would not be significant. If the value is below a given limit, the fan runs | ||
| 366 | at full speed, while if it is above the limit it runs at low speed (so this | ||
| 367 | is the contrary of the other mode, in a way). Here again, we don't know | ||
| 368 | what the limit is supposed to represent. | ||
| 369 | |||
| 370 | One remarkable thing is that the fans would only have two or three | ||
| 371 | different speeds (transitional states left apart), not a whole range as | ||
| 372 | you usually get with PWM. | ||
| 373 | |||
| 374 | As a conclusion, you can write 0x00 or 0x8F to the PWM registers to make | ||
| 375 | fans run at low speed, and 0x7F or 0x80 to make them run at full speed. | ||
| 376 | |||
| 377 | Please contact us if you can figure out how it is supposed to work. As | ||
| 378 | long as we don't know more, the w83781d driver doesn't handle PWM on | ||
| 379 | AS99127F chips at all. | ||
| 380 | |||
| 381 | Additional info about PWM on the AS99127F rev.1 by Hector Martin: | ||
| 382 | |||
| 383 | I've been fiddling around with the (in)famous 0x59 register and | ||
| 384 | found out the following values do work as a form of coarse pwm: | ||
| 385 | |||
| 386 | 0x80 - seems to turn fans off after some time(1-2 minutes)... might be | ||
| 387 | some form of auto-fan-control based on temp? hmm (Qfan? this mobo is an | ||
| 388 | old ASUS, it isn't marketed as Qfan. Maybe some beta pre-attemp at Qfan | ||
| 389 | that was dropped at the BIOS) | ||
| 390 | 0x81 - off | ||
| 391 | 0x82 - slightly "on-ner" than off, but my fans do not get to move. I can | ||
| 392 | hear the high-pitched PWM sound that motors give off at too-low-pwm. | ||
| 393 | 0x83 - now they do move. Estimate about 70% speed or so. | ||
| 394 | 0x84-0x8f - full on | ||
| 395 | |||
| 396 | Changing the high nibble doesn't seem to do much except the high bit | ||
| 397 | (0x80) must be set for PWM to work, else the current pwm doesn't seem to | ||
| 398 | change. | ||
| 399 | |||
| 400 | My mobo is an ASUS A7V266-E. This behavior is similar to what I got | ||
| 401 | with speedfan under Windows, where 0-15% would be off, 15-2x% (can't | ||
| 402 | remember the exact value) would be 70% and higher would be full on. | ||
diff --git a/Documentation/hwmon/w83l785ts b/Documentation/hwmon/w83l785ts new file mode 100644 index 000000000000..1841cedc25b2 --- /dev/null +++ b/Documentation/hwmon/w83l785ts | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | Kernel driver w83l785ts | ||
| 2 | ======================= | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Winbond W83L785TS-S | ||
| 6 | Prefix: 'w83l785ts' | ||
| 7 | Addresses scanned: I2C 0x2e | ||
| 8 | Datasheet: Publicly available at the Winbond USA website | ||
| 9 | http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83L785TS-S.pdf | ||
| 10 | |||
| 11 | Authors: | ||
| 12 | Jean Delvare <khali@linux-fr.org> | ||
| 13 | |||
| 14 | Description | ||
| 15 | ----------- | ||
| 16 | |||
| 17 | The W83L785TS-S is a digital temperature sensor. It senses the | ||
| 18 | temperature of a single external diode. The high limit is | ||
| 19 | theoretically defined as 85 or 100 degrees C through a combination | ||
| 20 | of external resistors, so the user cannot change it. Values seen so | ||
| 21 | far suggest that the two possible limits are actually 95 and 110 | ||
| 22 | degrees C. The datasheet is rather poor and obviously inaccurate | ||
| 23 | on several points including this one. | ||
| 24 | |||
| 25 | All temperature values are given in degrees Celsius. Resolution | ||
| 26 | is 1.0 degree. See the datasheet for details. | ||
| 27 | |||
| 28 | The w83l785ts driver will not update its values more frequently than | ||
| 29 | every other second; reading them more often will do no harm, but will | ||
| 30 | return 'old' values. | ||
| 31 | |||
| 32 | Known Issues | ||
| 33 | ------------ | ||
| 34 | |||
| 35 | On some systems (Asus), the BIOS is known to interfere with the driver | ||
| 36 | and cause read errors. The driver will retry a given number of times | ||
| 37 | (5 by default) and then give up, returning the old value (or 0 if | ||
| 38 | there is no old value). It seems to work well enough so that you should | ||
| 39 | not notice anything. Thanks to James Bolt for helping test this feature. | ||
