diff options
author | Jeff Garzik <jgarzik@pretzel.yyz.us> | 2005-06-26 23:38:58 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-06-26 23:38:58 -0400 |
commit | 5696c1944a33b4434a9a1ebb6383b906afd43a10 (patch) | |
tree | 16fbe6ba431bcf949ee8645510b0c2fd39b5810f /Documentation/i2c | |
parent | 66b04a80eea60cabf9d89fd34deb3234a740052f (diff) | |
parent | 020f46a39eb7b99a575b9f4d105fce2b142acdf1 (diff) |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'Documentation/i2c')
38 files changed, 3182 insertions, 69 deletions
diff --git a/Documentation/i2c/busses/i2c-sis69x b/Documentation/i2c/busses/i2c-sis69x index 5be48769f65b..b88953dfd580 100644 --- a/Documentation/i2c/busses/i2c-sis69x +++ b/Documentation/i2c/busses/i2c-sis69x | |||
@@ -42,7 +42,7 @@ I suspect that this driver could be made to work for the following SiS | |||
42 | chipsets as well: 635, and 635T. If anyone owns a board with those chips | 42 | chipsets as well: 635, and 635T. If anyone owns a board with those chips |
43 | AND is willing to risk crashing & burning an otherwise well-behaved kernel | 43 | AND is willing to risk crashing & burning an otherwise well-behaved kernel |
44 | in the name of progress... please contact me at <mhoffman@lightlink.com> or | 44 | in the name of progress... please contact me at <mhoffman@lightlink.com> or |
45 | via the project's mailing list: <sensors@stimpy.netroedge.com>. Please | 45 | via the project's mailing list: <lm-sensors@lm-sensors.org>. Please |
46 | send bug reports and/or success stories as well. | 46 | send bug reports and/or success stories as well. |
47 | 47 | ||
48 | 48 | ||
diff --git a/Documentation/i2c/chips/adm1021 b/Documentation/i2c/chips/adm1021 new file mode 100644 index 000000000000..03d02bfb3df1 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/adm1025 b/Documentation/i2c/chips/adm1025 new file mode 100644 index 000000000000..39d2b781b5d6 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/adm1026 b/Documentation/i2c/chips/adm1026 new file mode 100644 index 000000000000..473c689d7924 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/adm1031 b/Documentation/i2c/chips/adm1031 new file mode 100644 index 000000000000..130a38382b98 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/adm9240 b/Documentation/i2c/chips/adm9240 new file mode 100644 index 000000000000..35f618f32896 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/asb100 b/Documentation/i2c/chips/asb100 new file mode 100644 index 000000000000..ab7365e139be --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/ds1621 b/Documentation/i2c/chips/ds1621 new file mode 100644 index 000000000000..1fee6f1e6bc5 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/eeprom b/Documentation/i2c/chips/eeprom new file mode 100644 index 000000000000..f7e8104b5764 --- /dev/null +++ b/Documentation/i2c/chips/eeprom | |||
@@ -0,0 +1,96 @@ | |||
1 | Kernel driver eeprom | ||
2 | ==================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Any EEPROM chip in the designated address range | ||
6 | Prefix: 'eeprom' | ||
7 | Addresses scanned: I2C 0x50 - 0x57 | ||
8 | Datasheets: Publicly available from: | ||
9 | Atmel (www.atmel.com), | ||
10 | Catalyst (www.catsemi.com), | ||
11 | Fairchild (www.fairchildsemi.com), | ||
12 | Microchip (www.microchip.com), | ||
13 | Philips (www.semiconductor.philips.com), | ||
14 | Rohm (www.rohm.com), | ||
15 | ST (www.st.com), | ||
16 | Xicor (www.xicor.com), | ||
17 | and others. | ||
18 | |||
19 | Chip Size (bits) Address | ||
20 | 24C01 1K 0x50 (shadows at 0x51 - 0x57) | ||
21 | 24C01A 1K 0x50 - 0x57 (Typical device on DIMMs) | ||
22 | 24C02 2K 0x50 - 0x57 | ||
23 | 24C04 4K 0x50, 0x52, 0x54, 0x56 | ||
24 | (additional data at 0x51, 0x53, 0x55, 0x57) | ||
25 | 24C08 8K 0x50, 0x54 (additional data at 0x51, 0x52, | ||
26 | 0x53, 0x55, 0x56, 0x57) | ||
27 | 24C16 16K 0x50 (additional data at 0x51 - 0x57) | ||
28 | Sony 2K 0x57 | ||
29 | |||
30 | Atmel 34C02B 2K 0x50 - 0x57, SW write protect at 0x30-37 | ||
31 | Catalyst 34FC02 2K 0x50 - 0x57, SW write protect at 0x30-37 | ||
32 | Catalyst 34RC02 2K 0x50 - 0x57, SW write protect at 0x30-37 | ||
33 | Fairchild 34W02 2K 0x50 - 0x57, SW write protect at 0x30-37 | ||
34 | Microchip 24AA52 2K 0x50 - 0x57, SW write protect at 0x30-37 | ||
35 | ST M34C02 2K 0x50 - 0x57, SW write protect at 0x30-37 | ||
36 | |||
37 | |||
38 | Authors: | ||
39 | Frodo Looijaard <frodol@dds.nl>, | ||
40 | Philip Edelbrock <phil@netroedge.com>, | ||
41 | Jean Delvare <khali@linux-fr.org>, | ||
42 | Greg Kroah-Hartman <greg@kroah.com>, | ||
43 | IBM Corp. | ||
44 | |||
45 | Description | ||
46 | ----------- | ||
47 | |||
48 | This is a simple EEPROM module meant to enable reading the first 256 bytes | ||
49 | of an EEPROM (on a SDRAM DIMM for example). However, it will access serial | ||
50 | EEPROMs on any I2C adapter. The supported devices are generically called | ||
51 | 24Cxx, and are listed above; however the numbering for these | ||
52 | industry-standard devices may vary by manufacturer. | ||
53 | |||
54 | This module was a programming exercise to get used to the new project | ||
55 | organization laid out by Frodo, but it should be at least completely | ||
56 | effective for decoding the contents of EEPROMs on DIMMs. | ||
57 | |||
58 | DIMMS will typically contain a 24C01A or 24C02, or the 34C02 variants. | ||
59 | The other devices will not be found on a DIMM because they respond to more | ||
60 | than one address. | ||
61 | |||
62 | DDC Monitors may contain any device. Often a 24C01, which responds to all 8 | ||
63 | addresses, is found. | ||
64 | |||
65 | Recent Sony Vaio laptops have an EEPROM at 0x57. We couldn't get the | ||
66 | specification, so it is guess work and far from being complete. | ||
67 | |||
68 | The Microchip 24AA52/24LCS52, ST M34C02, and others support an additional | ||
69 | software write protect register at 0x30 - 0x37 (0x20 less than the memory | ||
70 | location). The chip responds to "write quick" detection at this address but | ||
71 | does not respond to byte reads. If this register is present, the lower 128 | ||
72 | bytes of the memory array are not write protected. Any byte data write to | ||
73 | this address will write protect the memory array permanently, and the | ||
74 | device will no longer respond at the 0x30-37 address. The eeprom driver | ||
75 | does not support this register. | ||
76 | |||
77 | Lacking functionality: | ||
78 | |||
79 | * Full support for larger devices (24C04, 24C08, 24C16). These are not | ||
80 | typically found on a PC. These devices will appear as separate devices at | ||
81 | multiple addresses. | ||
82 | |||
83 | * Support for really large devices (24C32, 24C64, 24C128, 24C256, 24C512). | ||
84 | These devices require two-byte address fields and are not supported. | ||
85 | |||
86 | * Enable Writing. Again, no technical reason why not, but making it easy | ||
87 | to change the contents of the EEPROMs (on DIMMs anyway) also makes it easy | ||
88 | to disable the DIMMs (potentially preventing the computer from booting) | ||
89 | until the values are restored somehow. | ||
90 | |||
91 | Use: | ||
92 | |||
93 | After inserting the module (and any other required SMBus/i2c modules), you | ||
94 | should have some EEPROM directories in /sys/bus/i2c/devices/* of names such | ||
95 | as "0-0050". Inside each of these is a series of files, the eeprom file | ||
96 | contains the binary data from EEPROM. | ||
diff --git a/Documentation/i2c/chips/fscher b/Documentation/i2c/chips/fscher new file mode 100644 index 000000000000..64031659aff3 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/gl518sm b/Documentation/i2c/chips/gl518sm new file mode 100644 index 000000000000..ce0881883bca --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/it87 b/Documentation/i2c/chips/it87 new file mode 100644 index 000000000000..0d0195040d88 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm63 b/Documentation/i2c/chips/lm63 new file mode 100644 index 000000000000..31660bf97979 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm75 b/Documentation/i2c/chips/lm75 new file mode 100644 index 000000000000..8e6356fe05d7 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm77 b/Documentation/i2c/chips/lm77 new file mode 100644 index 000000000000..57c3a46d6370 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm78 b/Documentation/i2c/chips/lm78 new file mode 100644 index 000000000000..357086ed7f64 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm80 b/Documentation/i2c/chips/lm80 new file mode 100644 index 000000000000..cb5b407ba3e6 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm83 b/Documentation/i2c/chips/lm83 new file mode 100644 index 000000000000..061d9ed8ff43 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm85 b/Documentation/i2c/chips/lm85 new file mode 100644 index 000000000000..9549237530cf --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm87 b/Documentation/i2c/chips/lm87 new file mode 100644 index 000000000000..c952c57f0e11 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm90 b/Documentation/i2c/chips/lm90 new file mode 100644 index 000000000000..2c4cf39471f4 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/lm92 b/Documentation/i2c/chips/lm92 new file mode 100644 index 000000000000..7705bfaa0708 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/max1619 b/Documentation/i2c/chips/max1619 new file mode 100644 index 000000000000..d6f8d9cd7d7f --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/max6875 b/Documentation/i2c/chips/max6875 new file mode 100644 index 000000000000..b4fb49b41813 --- /dev/null +++ b/Documentation/i2c/chips/max6875 | |||
@@ -0,0 +1,54 @@ | |||
1 | Kernel driver max6875 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Maxim max6874, max6875 | ||
6 | Prefixes: 'max6875' | ||
7 | Addresses scanned: 0x50, 0x52 | ||
8 | Datasheets: | ||
9 | http://pdfserv.maxim-ic.com/en/ds/MAX6874-MAX6875.pdf | ||
10 | |||
11 | Author: Ben Gardner <bgardner@wabtec.com> | ||
12 | |||
13 | |||
14 | Module Parameters | ||
15 | ----------------- | ||
16 | |||
17 | * allow_write int | ||
18 | Set to non-zero to enable write permission: | ||
19 | *0: Read only | ||
20 | 1: Read and write | ||
21 | |||
22 | |||
23 | Description | ||
24 | ----------- | ||
25 | |||
26 | The MAXIM max6875 is a EEPROM-programmable power-supply sequencer/supervisor. | ||
27 | It provides timed outputs that can be used as a watchdog, if properly wired. | ||
28 | It also provides 512 bytes of user EEPROM. | ||
29 | |||
30 | At reset, the max6875 reads the configuration eeprom into its configuration | ||
31 | registers. The chip then begins to operate according to the values in the | ||
32 | registers. | ||
33 | |||
34 | See the datasheet for details on how to program the EEPROM. | ||
35 | |||
36 | |||
37 | Sysfs entries | ||
38 | ------------- | ||
39 | |||
40 | eeprom_user - 512 bytes of user-defined EEPROM space. Only writable if | ||
41 | allow_write was set and register 0x43 is 0. | ||
42 | |||
43 | eeprom_config - 70 bytes of config EEPROM. Note that changes will not get | ||
44 | loaded into register space until a power cycle or device reset. | ||
45 | |||
46 | reg_config - 70 bytes of register space. Any changes take affect immediately. | ||
47 | |||
48 | |||
49 | General Remarks | ||
50 | --------------- | ||
51 | |||
52 | A typical application will require that the EEPROMs be programmed once and | ||
53 | never altered afterwards. | ||
54 | |||
diff --git a/Documentation/i2c/chips/pc87360 b/Documentation/i2c/chips/pc87360 new file mode 100644 index 000000000000..89a8fcfa78df --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/pca9539 b/Documentation/i2c/chips/pca9539 new file mode 100644 index 000000000000..c4fce6a13537 --- /dev/null +++ b/Documentation/i2c/chips/pca9539 | |||
@@ -0,0 +1,47 @@ | |||
1 | Kernel driver pca9539 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Philips PCA9539 | ||
6 | Prefix: 'pca9539' | ||
7 | Addresses scanned: 0x74 - 0x77 | ||
8 | Datasheet: | ||
9 | http://www.semiconductors.philips.com/acrobat/datasheets/PCA9539_2.pdf | ||
10 | |||
11 | Author: Ben Gardner <bgardner@wabtec.com> | ||
12 | |||
13 | |||
14 | Description | ||
15 | ----------- | ||
16 | |||
17 | The Philips PCA9539 is a 16 bit low power I/O device. | ||
18 | All 16 lines can be individually configured as an input or output. | ||
19 | The input sense can also be inverted. | ||
20 | The 16 lines are split between two bytes. | ||
21 | |||
22 | |||
23 | Sysfs entries | ||
24 | ------------- | ||
25 | |||
26 | Each is a byte that maps to the 8 I/O bits. | ||
27 | A '0' suffix is for bits 0-7, while '1' is for bits 8-15. | ||
28 | |||
29 | input[01] - read the current value | ||
30 | output[01] - sets the output value | ||
31 | direction[01] - direction of each bit: 1=input, 0=output | ||
32 | invert[01] - toggle the input bit sense | ||
33 | |||
34 | input reads the actual state of the line and is always available. | ||
35 | The direction defaults to input for all channels. | ||
36 | |||
37 | |||
38 | General Remarks | ||
39 | --------------- | ||
40 | |||
41 | Note that each output, direction, and invert entry controls 8 lines. | ||
42 | You should use the read, modify, write sequence. | ||
43 | For example. to set output bit 0 of 1. | ||
44 | val=$(cat output0) | ||
45 | val=$(( $val | 1 )) | ||
46 | echo $val > output0 | ||
47 | |||
diff --git a/Documentation/i2c/chips/pcf8574 b/Documentation/i2c/chips/pcf8574 new file mode 100644 index 000000000000..2752c8ce3167 --- /dev/null +++ b/Documentation/i2c/chips/pcf8574 | |||
@@ -0,0 +1,69 @@ | |||
1 | Kernel driver pcf8574 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Philips PCF8574 | ||
6 | Prefix: 'pcf8574' | ||
7 | Addresses scanned: I2C 0x20 - 0x27 | ||
8 | Datasheet: Publicly available at the Philips Semiconductors website | ||
9 | http://www.semiconductors.philips.com/pip/PCF8574P.html | ||
10 | |||
11 | * Philips PCF8574A | ||
12 | Prefix: 'pcf8574a' | ||
13 | Addresses scanned: I2C 0x38 - 0x3f | ||
14 | Datasheet: Publicly available at the Philips Semiconductors website | ||
15 | http://www.semiconductors.philips.com/pip/PCF8574P.html | ||
16 | |||
17 | Authors: | ||
18 | Frodo Looijaard <frodol@dds.nl>, | ||
19 | Philip Edelbrock <phil@netroedge.com>, | ||
20 | Dan Eaton <dan.eaton@rocketlogix.com>, | ||
21 | Aurelien Jarno <aurelien@aurel32.net>, | ||
22 | Jean Delvare <khali@linux-fr.org>, | ||
23 | |||
24 | |||
25 | Description | ||
26 | ----------- | ||
27 | The PCF8574(A) is an 8-bit I/O expander for the I2C bus produced by Philips | ||
28 | Semiconductors. It is designed to provide a byte I2C interface to up to 16 | ||
29 | separate devices (8 x PCF8574 and 8 x PCF8574A). | ||
30 | |||
31 | This device consists of a quasi-bidirectional port. Each of the eight I/Os | ||
32 | can be independently used as an input or output. To setup an I/O as an | ||
33 | input, you have to write a 1 to the corresponding output. | ||
34 | |||
35 | For more informations see the datasheet. | ||
36 | |||
37 | |||
38 | Accessing PCF8574(A) via /sys interface | ||
39 | ------------------------------------- | ||
40 | |||
41 | ! Be careful ! | ||
42 | The PCF8574(A) is plainly impossible to detect ! Stupid chip. | ||
43 | So every chip with address in the interval [20..27] and [38..3f] are | ||
44 | detected as PCF8574(A). If you have other chips in this address | ||
45 | range, the workaround is to load this module after the one | ||
46 | for your others chips. | ||
47 | |||
48 | On detection (i.e. insmod, modprobe et al.), directories are being | ||
49 | created for each detected PCF8574(A): | ||
50 | |||
51 | /sys/bus/i2c/devices/<0>-<1>/ | ||
52 | where <0> is the bus the chip was detected on (e. g. i2c-0) | ||
53 | and <1> the chip address ([20..27] or [38..3f]): | ||
54 | |||
55 | (example: /sys/bus/i2c/devices/1-0020/) | ||
56 | |||
57 | Inside these directories, there are two files each: | ||
58 | read and write (and one file with chip name). | ||
59 | |||
60 | The read file is read-only. Reading gives you the current I/O input | ||
61 | if the corresponding output is set as 1, otherwise the current output | ||
62 | value, that is to say 0. | ||
63 | |||
64 | The write file is read/write. Writing a value outputs it on the I/O | ||
65 | port. Reading returns the last written value. | ||
66 | |||
67 | On module initialization the chip is configured as eight inputs (all | ||
68 | outputs to 1), so you can connect any circuit to the PCF8574(A) without | ||
69 | being afraid of short-circuit. | ||
diff --git a/Documentation/i2c/chips/pcf8591 b/Documentation/i2c/chips/pcf8591 new file mode 100644 index 000000000000..5628fcf4207f --- /dev/null +++ b/Documentation/i2c/chips/pcf8591 | |||
@@ -0,0 +1,90 @@ | |||
1 | Kernel driver pcf8591 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Philips PCF8591 | ||
6 | Prefix: 'pcf8591' | ||
7 | Addresses scanned: I2C 0x48 - 0x4f | ||
8 | Datasheet: Publicly available at the Philips Semiconductor website | ||
9 | http://www.semiconductors.philips.com/pip/PCF8591P.html | ||
10 | |||
11 | Authors: | ||
12 | Aurelien Jarno <aurelien@aurel32.net> | ||
13 | valuable contributions by Jan M. Sendler <sendler@sendler.de>, | ||
14 | Jean Delvare <khali@linux-fr.org> | ||
15 | |||
16 | |||
17 | Description | ||
18 | ----------- | ||
19 | The PCF8591 is an 8-bit A/D and D/A converter (4 analog inputs and one | ||
20 | analog output) for the I2C bus produced by Philips Semiconductors. It | ||
21 | is designed to provide a byte I2C interface to up to 4 separate devices. | ||
22 | |||
23 | The PCF8591 has 4 analog inputs programmable as single-ended or | ||
24 | differential inputs : | ||
25 | - mode 0 : four single ended inputs | ||
26 | Pins AIN0 to AIN3 are single ended inputs for channels 0 to 3 | ||
27 | |||
28 | - mode 1 : three differential inputs | ||
29 | Pins AIN3 is the common negative differential input | ||
30 | Pins AIN0 to AIN2 are positive differential inputs for channels 0 to 2 | ||
31 | |||
32 | - mode 2 : single ended and differential mixed | ||
33 | Pins AIN0 and AIN1 are single ended inputs for channels 0 and 1 | ||
34 | Pins AIN2 is the positive differential input for channel 3 | ||
35 | Pins AIN3 is the negative differential input for channel 3 | ||
36 | |||
37 | - mode 3 : two differential inputs | ||
38 | Pins AIN0 is the positive differential input for channel 0 | ||
39 | Pins AIN1 is the negative differential input for channel 0 | ||
40 | Pins AIN2 is the positive differential input for channel 1 | ||
41 | Pins AIN3 is the negative differential input for channel 1 | ||
42 | |||
43 | See the datasheet for details. | ||
44 | |||
45 | Module parameters | ||
46 | ----------------- | ||
47 | |||
48 | * input_mode int | ||
49 | |||
50 | Analog input mode: | ||
51 | 0 = four single ended inputs | ||
52 | 1 = three differential inputs | ||
53 | 2 = single ended and differential mixed | ||
54 | 3 = two differential inputs | ||
55 | |||
56 | |||
57 | Accessing PCF8591 via /sys interface | ||
58 | ------------------------------------- | ||
59 | |||
60 | ! Be careful ! | ||
61 | The PCF8591 is plainly impossible to detect ! Stupid chip. | ||
62 | So every chip with address in the interval [48..4f] is | ||
63 | detected as PCF8591. If you have other chips in this address | ||
64 | range, the workaround is to load this module after the one | ||
65 | for your others chips. | ||
66 | |||
67 | On detection (i.e. insmod, modprobe et al.), directories are being | ||
68 | created for each detected PCF8591: | ||
69 | |||
70 | /sys/bus/devices/<0>-<1>/ | ||
71 | where <0> is the bus the chip was detected on (e. g. i2c-0) | ||
72 | and <1> the chip address ([48..4f]) | ||
73 | |||
74 | Inside these directories, there are such files: | ||
75 | in0, in1, in2, in3, out0_enable, out0_output, name | ||
76 | |||
77 | Name contains chip name. | ||
78 | |||
79 | The in0, in1, in2 and in3 files are RO. Reading gives the value of the | ||
80 | corresponding channel. Depending on the current analog inputs configuration, | ||
81 | files in2 and/or in3 do not exist. Values range are from 0 to 255 for single | ||
82 | ended inputs and -128 to +127 for differential inputs (8-bit ADC). | ||
83 | |||
84 | The out0_enable file is RW. Reading gives "1" for analog output enabled and | ||
85 | "0" for analog output disabled. Writing accepts "0" and "1" accordingly. | ||
86 | |||
87 | The out0_output file is RW. Writing a number between 0 and 255 (8-bit DAC), send | ||
88 | the value to the digital-to-analog converter. Note that a voltage will | ||
89 | only appears on AOUT pin if aout0_enable equals 1. Reading returns the last | ||
90 | value written. | ||
diff --git a/Documentation/i2c/chips/sis5595 b/Documentation/i2c/chips/sis5595 new file mode 100644 index 000000000000..b7ae36b8cdf5 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/smsc47b397.txt b/Documentation/i2c/chips/smsc47b397 index 389edae7f8df..da9d80c96432 100644 --- a/Documentation/i2c/chips/smsc47b397.txt +++ b/Documentation/i2c/chips/smsc47b397 | |||
@@ -1,7 +1,19 @@ | |||
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 | |||
1 | November 23, 2004 | 13 | November 23, 2004 |
2 | 14 | ||
3 | The following specification describes the SMSC LPC47B397-NC sensor chip | 15 | The following specification describes the SMSC LPC47B397-NC sensor chip |
4 | (for which there is no public datasheet available). This document was | 16 | (for which there is no public datasheet available). This document was |
5 | provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected | 17 | provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected |
6 | by Mark M. Hoffman <mhoffman@lightlink.com>. | 18 | by Mark M. Hoffman <mhoffman@lightlink.com>. |
7 | 19 | ||
@@ -10,10 +22,10 @@ by Mark M. Hoffman <mhoffman@lightlink.com>. | |||
10 | Methods for detecting the HP SIO and reading the thermal data on a dc7100. | 22 | Methods for detecting the HP SIO and reading the thermal data on a dc7100. |
11 | 23 | ||
12 | The thermal information on the dc7100 is contained in the SIO Hardware Monitor | 24 | The thermal information on the dc7100 is contained in the SIO Hardware Monitor |
13 | (HWM). The information is accessed through an index/data pair. The index/data | 25 | (HWM). The information is accessed through an index/data pair. The index/data |
14 | pair is located at the HWM Base Address + 0 and the HWM Base Address + 1. The | 26 | pair is located at the HWM Base Address + 0 and the HWM Base Address + 1. The |
15 | HWM Base address can be obtained from Logical Device 8, registers 0x60 (MSB) | 27 | HWM Base address can be obtained from Logical Device 8, registers 0x60 (MSB) |
16 | and 0x61 (LSB). Currently we are using 0x480 for the HWM Base Address and | 28 | and 0x61 (LSB). Currently we are using 0x480 for the HWM Base Address and |
17 | 0x480 and 0x481 for the index/data pair. | 29 | 0x480 and 0x481 for the index/data pair. |
18 | 30 | ||
19 | Reading temperature information. | 31 | Reading temperature information. |
@@ -50,7 +62,7 @@ Reading the tach LSB locks the tach MSB. | |||
50 | The LSB Must be read first. | 62 | The LSB Must be read first. |
51 | 63 | ||
52 | How to convert the tach reading to RPM. | 64 | How to convert the tach reading to RPM. |
53 | The tach reading (TCount) is given by: (Tach MSB * 256) + (Tach LSB) | 65 | The tach reading (TCount) is given by: (Tach MSB * 256) + (Tach LSB) |
54 | The SIO counts the number of 90kHz (11.111us) pulses per revolution. | 66 | The SIO counts the number of 90kHz (11.111us) pulses per revolution. |
55 | RPM = 60/(TCount * 11.111us) | 67 | RPM = 60/(TCount * 11.111us) |
56 | 68 | ||
@@ -72,20 +84,20 @@ To program the configuration registers, the following sequence must be followed: | |||
72 | 84 | ||
73 | Enter Configuration Mode | 85 | Enter Configuration Mode |
74 | To place the chip into the Configuration State The config key (0x55) is written | 86 | To place the chip into the Configuration State The config key (0x55) is written |
75 | to the CONFIG PORT (0x2E). | 87 | to the CONFIG PORT (0x2E). |
76 | 88 | ||
77 | Configuration Mode | 89 | Configuration Mode |
78 | In configuration mode, the INDEX PORT is located at the CONFIG PORT address and | 90 | In configuration mode, the INDEX PORT is located at the CONFIG PORT address and |
79 | the DATA PORT is at INDEX PORT address + 1. | 91 | the DATA PORT is at INDEX PORT address + 1. |
80 | 92 | ||
81 | The desired configuration registers are accessed in two steps: | 93 | The desired configuration registers are accessed in two steps: |
82 | a. Write the index of the Logical Device Number Configuration Register | 94 | a. Write the index of the Logical Device Number Configuration Register |
83 | (i.e., 0x07) to the INDEX PORT and then write the number of the | 95 | (i.e., 0x07) to the INDEX PORT and then write the number of the |
84 | desired logical device to the DATA PORT. | 96 | desired logical device to the DATA PORT. |
85 | 97 | ||
86 | b. Write the address of the desired configuration register within the | 98 | b. Write the address of the desired configuration register within the |
87 | logical device to the INDEX PORT and then write or read the config- | 99 | logical device to the INDEX PORT and then write or read the config- |
88 | uration register through the DATA PORT. | 100 | uration register through the DATA PORT. |
89 | 101 | ||
90 | Note: If accessing the Global Configuration Registers, step (a) is not required. | 102 | Note: If accessing the Global Configuration Registers, step (a) is not required. |
91 | 103 | ||
@@ -96,18 +108,18 @@ The chip returns to the RUN State. (This is important). | |||
96 | Programming Example | 108 | Programming Example |
97 | The following is an example of how to read the SIO Device ID located at 0x20 | 109 | The following is an example of how to read the SIO Device ID located at 0x20 |
98 | 110 | ||
99 | ; ENTER CONFIGURATION MODE | 111 | ; ENTER CONFIGURATION MODE |
100 | MOV DX,02EH | 112 | MOV DX,02EH |
101 | MOV AX,055H | 113 | MOV AX,055H |
102 | OUT DX,AL | 114 | OUT DX,AL |
103 | ; GLOBAL CONFIGURATION REGISTER | 115 | ; GLOBAL CONFIGURATION REGISTER |
104 | MOV DX,02EH | 116 | MOV DX,02EH |
105 | MOV AL,20H | 117 | MOV AL,20H |
106 | OUT DX,AL | 118 | OUT DX,AL |
107 | ; READ THE DATA | 119 | ; READ THE DATA |
108 | MOV DX,02FH | 120 | MOV DX,02FH |
109 | IN AL,DX | 121 | IN AL,DX |
110 | ; EXIT CONFIGURATION MODE | 122 | ; EXIT CONFIGURATION MODE |
111 | MOV DX,02EH | 123 | MOV DX,02EH |
112 | MOV AX,0AAH | 124 | MOV AX,0AAH |
113 | OUT DX,AL | 125 | OUT DX,AL |
@@ -122,12 +134,12 @@ Obtaining the HWM Base Address. | |||
122 | The following is an example of how to read the HWM Base Address located in | 134 | The following is an example of how to read the HWM Base Address located in |
123 | Logical Device 8. | 135 | Logical Device 8. |
124 | 136 | ||
125 | ; ENTER CONFIGURATION MODE | 137 | ; ENTER CONFIGURATION MODE |
126 | MOV DX,02EH | 138 | MOV DX,02EH |
127 | MOV AX,055H | 139 | MOV AX,055H |
128 | OUT DX,AL | 140 | OUT DX,AL |
129 | ; CONFIGURE REGISTER CRE0, | 141 | ; CONFIGURE REGISTER CRE0, |
130 | ; LOGICAL DEVICE 8 | 142 | ; LOGICAL DEVICE 8 |
131 | MOV DX,02EH | 143 | MOV DX,02EH |
132 | MOV AL,07H | 144 | MOV AL,07H |
133 | OUT DX,AL ;Point to LD# Config Reg | 145 | OUT DX,AL ;Point to LD# Config Reg |
@@ -135,12 +147,12 @@ MOV DX,02FH | |||
135 | MOV AL, 08H | 147 | MOV AL, 08H |
136 | OUT DX,AL;Point to Logical Device 8 | 148 | OUT DX,AL;Point to Logical Device 8 |
137 | ; | 149 | ; |
138 | MOV DX,02EH | 150 | MOV DX,02EH |
139 | MOV AL,60H | 151 | MOV AL,60H |
140 | OUT DX,AL ; Point to HWM Base Addr MSB | 152 | OUT DX,AL ; Point to HWM Base Addr MSB |
141 | MOV DX,02FH | 153 | MOV DX,02FH |
142 | IN AL,DX ; Get MSB of HWM Base Addr | 154 | IN AL,DX ; Get MSB of HWM Base Addr |
143 | ; EXIT CONFIGURATION MODE | 155 | ; EXIT CONFIGURATION MODE |
144 | MOV DX,02EH | 156 | MOV DX,02EH |
145 | MOV AX,0AAH | 157 | MOV AX,0AAH |
146 | OUT DX,AL | 158 | OUT DX,AL |
diff --git a/Documentation/i2c/chips/smsc47m1 b/Documentation/i2c/chips/smsc47m1 new file mode 100644 index 000000000000..34e6478c1425 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/via686a b/Documentation/i2c/chips/via686a new file mode 100644 index 000000000000..b82014cb7c53 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/w83627hf b/Documentation/i2c/chips/w83627hf new file mode 100644 index 000000000000..78f37c2d602e --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/w83781d b/Documentation/i2c/chips/w83781d new file mode 100644 index 000000000000..e5459333ba68 --- /dev/null +++ b/Documentation/i2c/chips/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/i2c/chips/w83l785ts b/Documentation/i2c/chips/w83l785ts new file mode 100644 index 000000000000..1841cedc25b2 --- /dev/null +++ b/Documentation/i2c/chips/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. | ||
diff --git a/Documentation/i2c/porting-clients b/Documentation/i2c/porting-clients index 56404918eabc..a7adbdd9ea8a 100644 --- a/Documentation/i2c/porting-clients +++ b/Documentation/i2c/porting-clients | |||
@@ -57,7 +57,7 @@ Technical changes: | |||
57 | Documentation/i2c/sysfs-interface for the individual files. Also | 57 | Documentation/i2c/sysfs-interface for the individual files. Also |
58 | convert the units these files read and write to the specified ones. | 58 | convert the units these files read and write to the specified ones. |
59 | If you need to add a new type of file, please discuss it on the | 59 | If you need to add a new type of file, please discuss it on the |
60 | sensors mailing list <sensors@stimpy.netroedge.com> by providing a | 60 | sensors mailing list <lm-sensors@lm-sensors.org> by providing a |
61 | patch to the Documentation/i2c/sysfs-interface file. | 61 | patch to the Documentation/i2c/sysfs-interface file. |
62 | 62 | ||
63 | * [Attach] For I2C drivers, the attach function should make sure | 63 | * [Attach] For I2C drivers, the attach function should make sure |
diff --git a/Documentation/i2c/userspace-tools b/Documentation/i2c/userspace-tools new file mode 100644 index 000000000000..2622aac65422 --- /dev/null +++ b/Documentation/i2c/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/i2c/writing-clients b/Documentation/i2c/writing-clients index ad27511e3c7d..f482dae81de3 100644 --- a/Documentation/i2c/writing-clients +++ b/Documentation/i2c/writing-clients | |||
@@ -171,45 +171,31 @@ The following lists are used internally: | |||
171 | 171 | ||
172 | normal_i2c: filled in by the module writer. | 172 | normal_i2c: filled in by the module writer. |
173 | A list of I2C addresses which should normally be examined. | 173 | A list of I2C addresses which should normally be examined. |
174 | normal_i2c_range: filled in by the module writer. | ||
175 | A list of pairs of I2C addresses, each pair being an inclusive range of | ||
176 | addresses which should normally be examined. | ||
177 | probe: insmod parameter. | 174 | probe: insmod parameter. |
178 | A list of pairs. The first value is a bus number (-1 for any I2C bus), | 175 | A list of pairs. The first value is a bus number (-1 for any I2C bus), |
179 | the second is the address. These addresses are also probed, as if they | 176 | the second is the address. These addresses are also probed, as if they |
180 | were in the 'normal' list. | 177 | were in the 'normal' list. |
181 | probe_range: insmod parameter. | ||
182 | A list of triples. The first value is a bus number (-1 for any I2C bus), | ||
183 | the second and third are addresses. These form an inclusive range of | ||
184 | addresses that are also probed, as if they were in the 'normal' list. | ||
185 | ignore: insmod parameter. | 178 | ignore: insmod parameter. |
186 | A list of pairs. The first value is a bus number (-1 for any I2C bus), | 179 | A list of pairs. The first value is a bus number (-1 for any I2C bus), |
187 | the second is the I2C address. These addresses are never probed. | 180 | the second is the I2C address. These addresses are never probed. |
188 | This parameter overrules 'normal' and 'probe', but not the 'force' lists. | 181 | This parameter overrules 'normal' and 'probe', but not the 'force' lists. |
189 | ignore_range: insmod parameter. | ||
190 | A list of triples. The first value is a bus number (-1 for any I2C bus), | ||
191 | the second and third are addresses. These form an inclusive range of | ||
192 | I2C addresses that are never probed. | ||
193 | This parameter overrules 'normal' and 'probe', but not the 'force' lists. | ||
194 | force: insmod parameter. | 182 | force: insmod parameter. |
195 | A list of pairs. The first value is a bus number (-1 for any I2C bus), | 183 | A list of pairs. The first value is a bus number (-1 for any I2C bus), |
196 | the second is the I2C address. A device is blindly assumed to be on | 184 | the second is the I2C address. A device is blindly assumed to be on |
197 | the given address, no probing is done. | 185 | the given address, no probing is done. |
198 | 186 | ||
199 | Fortunately, as a module writer, you just have to define the `normal' | 187 | Fortunately, as a module writer, you just have to define the `normal_i2c' |
200 | and/or `normal_range' parameters. The complete declaration could look | 188 | parameter. The complete declaration could look like this: |
201 | like this: | ||
202 | 189 | ||
203 | /* Scan 0x20 to 0x2f, 0x37, and 0x40 to 0x4f */ | 190 | /* Scan 0x37, and 0x48 to 0x4f */ |
204 | static unsigned short normal_i2c[] = { 0x37,I2C_CLIENT_END }; | 191 | static unsigned short normal_i2c[] = { 0x37, 0x48, 0x49, 0x4a, 0x4b, 0x4c, |
205 | static unsigned short normal_i2c_range[] = { 0x20, 0x2f, 0x40, 0x4f, | 192 | 0x4d, 0x4e, 0x4f, I2C_CLIENT_END }; |
206 | I2C_CLIENT_END }; | ||
207 | 193 | ||
208 | /* Magic definition of all other variables and things */ | 194 | /* Magic definition of all other variables and things */ |
209 | I2C_CLIENT_INSMOD; | 195 | I2C_CLIENT_INSMOD; |
210 | 196 | ||
211 | Note that you *have* to call the two defined variables `normal_i2c' and | 197 | Note that you *have* to call the defined variable `normal_i2c', |
212 | `normal_i2c_range', without any prefix! | 198 | without any prefix! |
213 | 199 | ||
214 | 200 | ||
215 | Probing classes (sensors) | 201 | Probing classes (sensors) |
@@ -223,39 +209,17 @@ The following lists are used internally. They are all lists of integers. | |||
223 | 209 | ||
224 | normal_i2c: filled in by the module writer. Terminated by SENSORS_I2C_END. | 210 | normal_i2c: filled in by the module writer. Terminated by SENSORS_I2C_END. |
225 | A list of I2C addresses which should normally be examined. | 211 | A list of I2C addresses which should normally be examined. |
226 | normal_i2c_range: filled in by the module writer. Terminated by | ||
227 | SENSORS_I2C_END | ||
228 | A list of pairs of I2C addresses, each pair being an inclusive range of | ||
229 | addresses which should normally be examined. | ||
230 | normal_isa: filled in by the module writer. Terminated by SENSORS_ISA_END. | 212 | normal_isa: filled in by the module writer. Terminated by SENSORS_ISA_END. |
231 | A list of ISA addresses which should normally be examined. | 213 | A list of ISA addresses which should normally be examined. |
232 | normal_isa_range: filled in by the module writer. Terminated by | ||
233 | SENSORS_ISA_END | ||
234 | A list of triples. The first two elements are ISA addresses, being an | ||
235 | range of addresses which should normally be examined. The third is the | ||
236 | modulo parameter: only addresses which are 0 module this value relative | ||
237 | to the first address of the range are actually considered. | ||
238 | probe: insmod parameter. Initialize this list with SENSORS_I2C_END values. | 214 | probe: insmod parameter. Initialize this list with SENSORS_I2C_END values. |
239 | A list of pairs. The first value is a bus number (SENSORS_ISA_BUS for | 215 | A list of pairs. The first value is a bus number (SENSORS_ISA_BUS for |
240 | the ISA bus, -1 for any I2C bus), the second is the address. These | 216 | the ISA bus, -1 for any I2C bus), the second is the address. These |
241 | addresses are also probed, as if they were in the 'normal' list. | 217 | addresses are also probed, as if they were in the 'normal' list. |
242 | probe_range: insmod parameter. Initialize this list with SENSORS_I2C_END | ||
243 | values. | ||
244 | A list of triples. The first value is a bus number (SENSORS_ISA_BUS for | ||
245 | the ISA bus, -1 for any I2C bus), the second and third are addresses. | ||
246 | These form an inclusive range of addresses that are also probed, as | ||
247 | if they were in the 'normal' list. | ||
248 | ignore: insmod parameter. Initialize this list with SENSORS_I2C_END values. | 218 | ignore: insmod parameter. Initialize this list with SENSORS_I2C_END values. |
249 | A list of pairs. The first value is a bus number (SENSORS_ISA_BUS for | 219 | A list of pairs. The first value is a bus number (SENSORS_ISA_BUS for |
250 | the ISA bus, -1 for any I2C bus), the second is the I2C address. These | 220 | the ISA bus, -1 for any I2C bus), the second is the I2C address. These |
251 | addresses are never probed. This parameter overrules 'normal' and | 221 | addresses are never probed. This parameter overrules 'normal' and |
252 | 'probe', but not the 'force' lists. | 222 | 'probe', but not the 'force' lists. |
253 | ignore_range: insmod parameter. Initialize this list with SENSORS_I2C_END | ||
254 | values. | ||
255 | A list of triples. The first value is a bus number (SENSORS_ISA_BUS for | ||
256 | the ISA bus, -1 for any I2C bus), the second and third are addresses. | ||
257 | These form an inclusive range of I2C addresses that are never probed. | ||
258 | This parameter overrules 'normal' and 'probe', but not the 'force' lists. | ||
259 | 223 | ||
260 | Also used is a list of pointers to sensors_force_data structures: | 224 | Also used is a list of pointers to sensors_force_data structures: |
261 | force_data: insmod parameters. A list, ending with an element of which | 225 | force_data: insmod parameters. A list, ending with an element of which |
@@ -269,16 +233,14 @@ Also used is a list of pointers to sensors_force_data structures: | |||
269 | So we have a generic insmod variabled `force', and chip-specific variables | 233 | So we have a generic insmod variabled `force', and chip-specific variables |
270 | `force_CHIPNAME'. | 234 | `force_CHIPNAME'. |
271 | 235 | ||
272 | Fortunately, as a module writer, you just have to define the `normal' | 236 | Fortunately, as a module writer, you just have to define the `normal_i2c' |
273 | and/or `normal_range' parameters, and define what chip names are used. | 237 | and `normal_isa' parameters, and define what chip names are used. |
274 | The complete declaration could look like this: | 238 | The complete declaration could look like this: |
275 | /* Scan i2c addresses 0x20 to 0x2f, 0x37, and 0x40 to 0x4f | 239 | /* Scan i2c addresses 0x37, and 0x48 to 0x4f */ |
276 | static unsigned short normal_i2c[] = {0x37,SENSORS_I2C_END}; | 240 | static unsigned short normal_i2c[] = { 0x37, 0x48, 0x49, 0x4a, 0x4b, 0x4c, |
277 | static unsigned short normal_i2c_range[] = {0x20,0x2f,0x40,0x4f, | 241 | 0x4d, 0x4e, 0x4f, I2C_CLIENT_END }; |
278 | SENSORS_I2C_END}; | ||
279 | /* Scan ISA address 0x290 */ | 242 | /* Scan ISA address 0x290 */ |
280 | static unsigned int normal_isa[] = {0x0290,SENSORS_ISA_END}; | 243 | static unsigned int normal_isa[] = {0x0290,SENSORS_ISA_END}; |
281 | static unsigned int normal_isa_range[] = {SENSORS_ISA_END}; | ||
282 | 244 | ||
283 | /* Define chips foo and bar, as well as all module parameters and things */ | 245 | /* Define chips foo and bar, as well as all module parameters and things */ |
284 | SENSORS_INSMOD_2(foo,bar); | 246 | SENSORS_INSMOD_2(foo,bar); |