diff options
author | R.Marek@sh.cvut.cz <R.Marek@sh.cvut.cz> | 2005-05-26 08:42:19 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-06-22 00:52:02 -0400 |
commit | 7f15b66468b7003d5241e352a007e73be5519b20 (patch) | |
tree | c9333e14baae06a831c8515d9e1e24808826053e /Documentation/i2c/chips/pc87360 | |
parent | 2bf34a1ca9d570dd4fab4d95c4de82d873ecf718 (diff) |
[PATCH] I2C: documentation update 2/3
This patch adds missing documentation for system health monitoring chips.
I would like to thank all people, who helped me with this project.
Signed-off-by: Rudolf Marek <r.marek@sh.cvut.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'Documentation/i2c/chips/pc87360')
-rw-r--r-- | Documentation/i2c/chips/pc87360 | 189 |
1 files changed, 189 insertions, 0 deletions
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. | ||