Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6 into devel
[linux-2.6] / Documentation / hwmon / pc87360
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: No longer available
9
10 Authors: Jean Delvare <khali@linux-fr.org>
11
12 Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing.
13 Thanks to Rudolf Marek for helping me investigate conversion issues.
14
15
16 Module Parameters
17 -----------------
18
19 * init int
20   Chip initialization level:
21    0: None
22   *1: Forcibly enable internal voltage and temperature channels, except in9
23    2: Forcibly enable all voltage and temperature channels, except in9
24    3: Forcibly enable all voltage and temperature channels, including in9
25
26 Note that this parameter has no effect for the PC87360, PC87363 and PC87364
27 chips.
28
29 Also note that for the PC87366, initialization levels 2 and 3 don't enable
30 all temperature channels, because some of them share pins with each other,
31 so they can't be used at the same time.
32
33
34 Description
35 -----------
36
37 The National Semiconductor PC87360 Super I/O chip contains monitoring and
38 PWM control circuitry for two fans. The PC87363 chip is similar, and the
39 PC87364 chip has monitoring and PWM control for a third fan.
40
41 The National Semiconductor PC87365 and PC87366 Super I/O chips are complete
42 hardware monitoring chipsets, not only controlling and monitoring three fans,
43 but also monitoring eleven voltage inputs and two (PC87365) or up to four
44 (PC87366) temperatures.
45
46   Chip        #vin    #fan    #pwm    #temp   devid
47
48   PC87360     -       2       2       -       0xE1
49   PC87363     -       2       2       -       0xE8
50   PC87364     -       3       3       -       0xE4
51   PC87365     11      3       3       2       0xE5
52   PC87366     11      3       3       3-4     0xE9
53
54 The driver assumes that no more than one chip is present, and one of the
55 standard Super I/O addresses is used (0x2E/0x2F or 0x4E/0x4F)
56
57 Fan Monitoring
58 --------------
59
60 Fan rotation speeds are reported in RPM (revolutions per minute). An alarm
61 is triggered if the rotation speed has dropped below a programmable limit.
62 A different alarm is triggered if the fan speed is too low to be measured.
63
64 Fan readings are affected by a programmable clock divider, giving the
65 readings more range or accuracy. Usually, users have to learn how it works,
66 but this driver implements dynamic clock divider selection, so you don't
67 have to care no more.
68
69 For reference, here are a few values about clock dividers:
70
71                 slowest         accuracy        highest
72                 measurable      around 3000     accurate
73     divider     speed (RPM)     RPM (RPM)       speed (RPM)
74          1        1882              18           6928
75          2         941              37           4898
76          4         470              74           3464
77          8         235             150           2449
78
79 For the curious, here is how the values above were computed:
80  * slowest measurable speed: clock/(255*divider)
81  * accuracy around 3000 RPM: 3000^2/clock
82  * highest accurate speed: sqrt(clock*100)
83 The clock speed for the PC87360 family is 480 kHz. I arbitrarily chose 100
84 RPM as the lowest acceptable accuracy.
85
86 As mentioned above, you don't have to care about this no more.
87
88 Note that not all RPM values can be represented, even when the best clock
89 divider is selected. This is not only true for the measured speeds, but
90 also for the programmable low limits, so don't be surprised if you try to
91 set, say, fan1_min to 2900 and it finally reads 2909.
92
93
94 Fan Control
95 -----------
96
97 PWM (pulse width modulation) values range from 0 to 255, with 0 meaning
98 that the fan is stopped, and 255 meaning that the fan goes at full speed.
99
100 Be extremely careful when changing PWM values. Low PWM values, even
101 non-zero, can stop the fan, which may cause irreversible damage to your
102 hardware if temperature increases too much. When changing PWM values, go
103 step by step and keep an eye on temperatures.
104
105 One user reported problems with PWM. Changing PWM values would break fan
106 speed readings. No explanation nor fix could be found.
107
108
109 Temperature Monitoring
110 ----------------------
111
112 Temperatures are reported in degrees Celsius. Each temperature measured has
113 associated low, high and overtemperature limits, each of which triggers an
114 alarm when crossed.
115
116 The first two temperature channels are external. The third one (PC87366
117 only) is internal.
118
119 The PC87366 has three additional temperature channels, based on
120 thermistors (as opposed to thermal diodes for the first three temperature
121 channels). For technical reasons, these channels are held by the VLM
122 (voltage level monitor) logical device, not the TMS (temperature
123 measurement) one. As a consequence, these temperatures are exported as
124 voltages, and converted into temperatures in user-space.
125
126 Note that these three additional channels share their pins with the
127 external thermal diode channels, so you (physically) can't use them all at
128 the same time. Although it should be possible to mix the two sensor types,
129 the documents from National Semiconductor suggest that motherboard
130 manufacturers should choose one type and stick to it. So you will more
131 likely have either channels 1 to 3 (thermal diodes) or 3 to 6 (internal
132 thermal diode, and thermistors).
133
134
135 Voltage Monitoring
136 ------------------
137
138 Voltages are reported relatively to a reference voltage, either internal or
139 external. Some of them (in7:Vsb, in8:Vdd and in10:AVdd) are divided by two
140 internally, you will have to compensate in sensors.conf. Others (in0 to in6)
141 are likely to be divided externally. The meaning of each of these inputs as
142 well as the values of the resistors used for division is left to the
143 motherboard manufacturers, so you will have to document yourself and edit
144 sensors.conf accordingly. National Semiconductor has a document with
145 recommended resistor values for some voltages, but this still leaves much
146 room for per motherboard specificities, unfortunately. Even worse,
147 motherboard manufacturers don't seem to care about National Semiconductor's
148 recommendations.
149
150 Each voltage measured has associated low and high limits, each of which
151 triggers an alarm when crossed.
152
153 When available, VID inputs are used to provide the nominal CPU Core voltage.
154 The driver will default to VRM 9.0, but this can be changed from user-space.
155 The chipsets can handle two sets of VID inputs (on dual-CPU systems), but
156 the driver will only export one for now. This may change later if there is
157 a need.
158
159
160 General Remarks
161 ---------------
162
163 If an alarm triggers, it will remain triggered until the hardware register
164 is read at least once. This means that the cause for the alarm may already
165 have disappeared! Note that all hardware registers are read whenever any
166 data is read (unless it is less than 2 seconds since the last update, in
167 which case cached values are returned instead). As a consequence, when
168 a once-only alarm triggers, it may take 2 seconds for it to show, and 2
169 more seconds for it to disappear.
170
171 Monitoring of in9 isn't enabled at lower init levels (<3) because that
172 channel measures the battery voltage (Vbat). It is a known fact that
173 repeatedly sampling the battery voltage reduces its lifetime. National
174 Semiconductor smartly designed their chipset so that in9 is sampled only
175 once every 1024 sampling cycles (that is every 34 minutes at the default
176 sampling rate), so the effect is attenuated, but still present.
177
178
179 Limitations
180 -----------
181
182 The datasheets suggests that some values (fan mins, fan dividers)
183 shouldn't be changed once the monitoring has started, but we ignore that
184 recommendation. We'll reconsider if it actually causes trouble.