1Kernel driver asc7621
2==================
3
4Supported chips:
5    Andigilog aSC7621 and aSC7621a
6    Prefix: 'asc7621'
7    Addresses scanned: I2C 0x2c, 0x2d, 0x2e
8    Datasheet: http://www.fairview5.com/linux/asc7621/asc7621.pdf
9
10Author:
11		George Joseph
12
13Description provided by Dave Pivin @ Andigilog:
14
15Andigilog has both the PECI and pre-PECI versions of the Heceta-6, as
16Intel calls them. Heceta-6e has high frequency PWM and Heceta-6p has
17added PECI and a 4th thermal zone. The Andigilog aSC7611 is the
18Heceta-6e part and aSC7621 is the Heceta-6p part. They are both in
19volume production, shipping to Intel and their subs.
20
21We have enhanced both parts relative to the governing Intel
22specification. First enhancement is temperature reading resolution. We
23have used registers below 20h for vendor-specific functions in addition
24to those in the Intel-specified vendor range.
25
26Our conversion process produces a result that is reported as two bytes.
27The fan speed control uses this finer value to produce a "step-less" fan
28PWM output. These two bytes are "read-locked" to guarantee that once a
29high or low byte is read, the other byte is locked-in until after the
30next read of any register. So to get an atomic reading, read high or low
31byte, then the very next read should be the opposite byte. Our data
32sheet says 10-bits of resolution, although you may find the lower bits
33are active, they are not necessarily reliable or useful externally. We
34chose not to mask them.
35
36We employ significant filtering that is user tunable as described in the
37data sheet. Our temperature reports and fan PWM outputs are very smooth
38when compared to the competition, in addition to the higher resolution
39temperature reports. The smoother PWM output does not require user
40intervention.
41
42We offer GPIO features on the former VID pins. These are open-drain
43outputs or inputs and may be used as general purpose I/O or as alarm
44outputs that are based on temperature limits. These are in 19h and 1Ah.
45
46We offer flexible mapping of temperature readings to thermal zones. Any
47temperature may be mapped to any zone, which has a default assignment
48that follows Intel's specs.
49
50Since there is a fan to zone assignment that allows for the "hotter" of
51a set of zones to control the PWM of an individual fan, but there is no
52indication to the user, we have added an indicator that shows which zone
53is currently controlling the PWM for a given fan. This is in register
5400h.
55
56Both remote diode temperature readings may be given an offset value such
57that the reported reading as well as the temperature used to determine
58PWM may be offset for system calibration purposes.
59
60PECI Extended configuration allows for having more than two domains per
61PECI address and also provides an enabling function for each PECI
62address. One could use our flexible zone assignment to have a zone
63assigned to up to 4 PECI addresses. This is not possible in the default
64Intel configuration. This would be useful in multi-CPU systems with
65individual fans on each that would benefit from individual fan control.
66This is in register 0Eh.
67
68The tachometer measurement system is flexible and able to adapt to many
69fan types. We can also support pulse-stretched PWM so that 3-wire fans
70may be used. These characteristics are in registers 04h to 07h.
71
72Finally, we have added a tach disable function that turns off the tach
73measurement system for individual tachs in order to save power. That is
74in register 75h.
75
76--
77aSC7621 Product Description
78
79The aSC7621 has a two wire digital interface compatible with SMBus 2.0.
80Using a 10-bit ADC, the aSC7621 measures the temperature of two remote diode
81connected transistors as well as its own die. Support for Platform
82Environmental Control Interface (PECI) is included.
83
84Using temperature information from these four zones, an automatic fan speed
85control algorithm is employed to minimize acoustic impact while achieving
86recommended CPU temperature under varying operational loads.
87
88To set fan speed, the aSC7621 has three independent pulse width modulation
89(PWM) outputs that are controlled by one, or a combination of three,
90temperature zones. Both high- and low-frequency PWM ranges are supported.
91
92The aSC7621 also includes a digital filter that can be invoked to smooth
93temperature readings for better control of fan speed and minimum acoustic
94impact.
95
96The aSC7621 has tachometer inputs to measure fan speed on up to four fans.
97Limit and status registers for all measured values are included to alert
98the system host that any measurements are outside of programmed limits
99via status registers.
100
101System voltages of VCCP, 2.5V, 3.3V, 5.0V, and 12V motherboard power are
102monitored efficiently with internal scaling resistors.
103
104Features
105- Supports PECI interface and monitors internal and remote thermal diodes
106- 2-wire, SMBus 2.0 compliant, serial interface
107- 10-bit ADC
108- Monitors VCCP, 2.5V, 3.3V, 5.0V, and 12V motherboard/processor supplies
109- Programmable autonomous fan control based on temperature readings
110- Noise filtering of temperature reading for fan speed control
111- 0.25C digital temperature sensor resolution
112- 3 PWM fan speed control outputs for 2-, 3- or 4-wire fans and up to 4 fan
113	tachometer inputs
114- Enhanced measured temperature to Temperature Zone assignment.
115- Provides high and low PWM frequency ranges
116- 3 GPIO pins for custom use
117- 24-Lead QSOP package
118
119Configuration Notes
120===================
121
122Except where noted below, the sysfs entries created by this driver follow
123the standards defined in "sysfs-interface".
124
125temp1_source
126	0 	(default) peci_legacy = 0, Remote 1 Temperature
127			peci_legacy = 1, PECI Processor Temperature 0
128	1 	Remote 1 Temperature
129	2 	Remote 2 Temperature
130	3 	Internal Temperature
131	4 	PECI Processor Temperature 0
132	5 	PECI Processor Temperature 1
133	6 	PECI Processor Temperature 2
134	7  PECI Processor Temperature 3
135
136temp2_source
137	0 	(default) Internal Temperature
138	1 	Remote 1 Temperature
139	2 	Remote 2 Temperature
140	3 	Internal Temperature
141	4 	PECI Processor Temperature 0
142	5 	PECI Processor Temperature 1
143	6 	PECI Processor Temperature 2
144	7 	PECI Processor Temperature 3
145
146temp3_source
147	0 	(default) Remote 2 Temperature
148	1 	Remote 1 Temperature
149	2 	Remote 2 Temperature
150	3 	Internal Temperature
151	4 	PECI Processor Temperature 0
152	5 	PECI Processor Temperature 1
153	6 	PECI Processor Temperature 2
154	7 	PECI Processor Temperature 3
155
156temp4_source
157	0 	(default) peci_legacy = 0, PECI Processor Temperature 0
158			peci_legacy = 1, Remote 1 Temperature
159	1 	Remote 1 Temperature
160	2 	Remote 2 Temperature
161	3 	Internal Temperature
162	4 	PECI Processor Temperature 0
163	5 	PECI Processor Temperature 1
164	6 	PECI Processor Temperature 2
165	7 	PECI Processor Temperature 3
166
167temp[1-4]_smoothing_enable
168temp[1-4]_smoothing_time
169	Smooths spikes in temp readings caused by noise.
170	Valid values in milliseconds are:
171	35000
172	17600
173	11800
174	 7000
175	 4400
176	 3000
177	 1600
178	  800
179
180temp[1-4]_crit
181	When the corresponding zone temperature reaches this value,
182	ALL pwm outputs will got to 100%.
183
184temp[5-8]_input
185temp[5-8]_enable
186	The aSC7621 can also read temperatures provided by the processor
187	via the PECI bus.  Usually these are "core" temps and are relative
188	to the point where the automatic thermal control circuit starts
189	throttling.  This means that these are usually negative numbers.
190
191pwm[1-3]_enable
192	0		Fan off.
193	1		Fan on manual control.
194	2		Fan on automatic control and will run at the minimum pwm
195				if the temperature for the zone is below the minimum.
196	3		Fan on automatic control but will be off if the temperature
197				for the zone is below the minimum.
198	4-254	Ignored.
199	255		Fan on full.
200
201pwm[1-3]_auto_channels
202	Bitmap as described in sysctl-interface with the following
203	exceptions...
204	Only the following combination of zones (and their corresponding masks)
205	are valid:
206	1
207	2
208	3
209	2,3
210	1,2,3
211	4
212	1,2,3,4
213
214	Special values:
215	0			Disabled.
216	16		Fan on manual control.
217	31		Fan on full.
218
219
220pwm[1-3]_invert
221	When set, inverts the meaning of pwm[1-3].
222	i.e.  when pwm = 0, the fan will be on full and
223	when pwm = 255 the fan will be off.
224
225pwm[1-3]_freq
226	PWM frequency in Hz
227	Valid values in Hz are:
228
229	10
230	15
231	23
232	30  (default)
233	38
234	47
235	62
236	94
237	23000
238	24000
239	25000
240	26000
241	27000
242	28000
243	29000
244	30000
245
246	Setting any other value will be ignored.
247
248peci_enable
249	Enables or disables PECI
250
251peci_avg
252	Input filter average time.
253
254	0 	0 Sec. (no Smoothing) (default)
255	1 	0.25 Sec.
256	2 	0.5 Sec.
257	3 	1.0 Sec.
258	4 	2.0 Sec.
259	5 	4.0 Sec.
260	6 	8.0 Sec.
261	7 	0.0 Sec.
262
263peci_legacy
264
265	0	Standard Mode (default)
266		Remote Diode 1 reading is associated with
267		Temperature Zone 1, PECI is associated with
268		Zone 4
269
270	1	Legacy Mode
271		PECI is associated with Temperature Zone 1,
272		Remote Diode 1 is associated with Zone 4
273
274peci_diode
275	Diode filter
276
277	0	0.25 Sec.
278	1 	1.1 Sec.
279	2 	2.4 Sec.  (default)
280	3 	3.4 Sec.
281	4 	5.0 Sec.
282	5 	6.8 Sec.
283	6 	10.2 Sec.
284	7 	16.4 Sec.
285
286peci_4domain
287	Four domain enable
288
289	0 	1 or 2 Domains for enabled processors (default)
290	1 	3 or 4 Domains for enabled processors
291
292peci_domain
293	Domain
294
295	0 	Processor contains a single domain (0) 	 (default)
296	1 	Processor contains two domains (0,1)
297