297 lines
		
	
	
	
		
			8.9 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			297 lines
		
	
	
	
		
			8.9 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								Kernel driver asc7621
							 | 
						||
| 
								 | 
							
								==================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Supported chips:
							 | 
						||
| 
								 | 
							
								    Andigilog aSC7621 and aSC7621a
							 | 
						||
| 
								 | 
							
								    Prefix: 'asc7621'
							 | 
						||
| 
								 | 
							
								    Addresses scanned: I2C 0x2c, 0x2d, 0x2e
							 | 
						||
| 
								 | 
							
								    Datasheet: http://www.fairview5.com/linux/asc7621/asc7621.pdf
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Author:
							 | 
						||
| 
								 | 
							
										George Joseph
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Description provided by Dave Pivin @ Andigilog:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Andigilog has both the PECI and pre-PECI versions of the Heceta-6, as
							 | 
						||
| 
								 | 
							
								Intel calls them. Heceta-6e has high frequency PWM and Heceta-6p has
							 | 
						||
| 
								 | 
							
								added PECI and a 4th thermal zone. The Andigilog aSC7611 is the
							 | 
						||
| 
								 | 
							
								Heceta-6e part and aSC7621 is the Heceta-6p part. They are both in
							 | 
						||
| 
								 | 
							
								volume production, shipping to Intel and their subs.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								We have enhanced both parts relative to the governing Intel
							 | 
						||
| 
								 | 
							
								specification. First enhancement is temperature reading resolution. We
							 | 
						||
| 
								 | 
							
								have used registers below 20h for vendor-specific functions in addition
							 | 
						||
| 
								 | 
							
								to those in the Intel-specified vendor range.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Our conversion process produces a result that is reported as two bytes.
							 | 
						||
| 
								 | 
							
								The fan speed control uses this finer value to produce a "step-less" fan
							 | 
						||
| 
								 | 
							
								PWM output. These two bytes are "read-locked" to guarantee that once a
							 | 
						||
| 
								 | 
							
								high or low byte is read, the other byte is locked-in until after the
							 | 
						||
| 
								 | 
							
								next read of any register. So to get an atomic reading, read high or low
							 | 
						||
| 
								 | 
							
								byte, then the very next read should be the opposite byte. Our data
							 | 
						||
| 
								 | 
							
								sheet says 10-bits of resolution, although you may find the lower bits
							 | 
						||
| 
								 | 
							
								are active, they are not necessarily reliable or useful externally. We
							 | 
						||
| 
								 | 
							
								chose not to mask them.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								We employ significant filtering that is user tunable as described in the
							 | 
						||
| 
								 | 
							
								data sheet. Our temperature reports and fan PWM outputs are very smooth
							 | 
						||
| 
								 | 
							
								when compared to the competition, in addition to the higher resolution
							 | 
						||
| 
								 | 
							
								temperature reports. The smoother PWM output does not require user
							 | 
						||
| 
								 | 
							
								intervention.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								We offer GPIO features on the former VID pins. These are open-drain
							 | 
						||
| 
								 | 
							
								outputs or inputs and may be used as general purpose I/O or as alarm
							 | 
						||
| 
								 | 
							
								outputs that are based on temperature limits. These are in 19h and 1Ah.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								We offer flexible mapping of temperature readings to thermal zones. Any
							 | 
						||
| 
								 | 
							
								temperature may be mapped to any zone, which has a default assignment
							 | 
						||
| 
								 | 
							
								that follows Intel's specs.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Since there is a fan to zone assignment that allows for the "hotter" of
							 | 
						||
| 
								 | 
							
								a set of zones to control the PWM of an individual fan, but there is no
							 | 
						||
| 
								 | 
							
								indication to the user, we have added an indicator that shows which zone
							 | 
						||
| 
								 | 
							
								is currently controlling the PWM for a given fan. This is in register
							 | 
						||
| 
								 | 
							
								00h.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Both remote diode temperature readings may be given an offset value such
							 | 
						||
| 
								 | 
							
								that the reported reading as well as the temperature used to determine
							 | 
						||
| 
								 | 
							
								PWM may be offset for system calibration purposes.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PECI Extended configuration allows for having more than two domains per
							 | 
						||
| 
								 | 
							
								PECI address and also provides an enabling function for each PECI
							 | 
						||
| 
								 | 
							
								address. One could use our flexible zone assignment to have a zone
							 | 
						||
| 
								 | 
							
								assigned to up to 4 PECI addresses. This is not possible in the default
							 | 
						||
| 
								 | 
							
								Intel configuration. This would be useful in multi-CPU systems with
							 | 
						||
| 
								 | 
							
								individual fans on each that would benefit from individual fan control.
							 | 
						||
| 
								 | 
							
								This is in register 0Eh.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The tachometer measurement system is flexible and able to adapt to many
							 | 
						||
| 
								 | 
							
								fan types. We can also support pulse-stretched PWM so that 3-wire fans
							 | 
						||
| 
								 | 
							
								may be used. These characteristics are in registers 04h to 07h.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Finally, we have added a tach disable function that turns off the tach
							 | 
						||
| 
								 | 
							
								measurement system for individual tachs in order to save power. That is
							 | 
						||
| 
								 | 
							
								in register 75h.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--
							 | 
						||
| 
								 | 
							
								aSC7621 Product Description
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The aSC7621 has a two wire digital interface compatible with SMBus 2.0.
							 | 
						||
| 
								 | 
							
								Using a 10-bit ADC, the aSC7621 measures the temperature of two remote diode
							 | 
						||
| 
								 | 
							
								connected transistors as well as its own die. Support for Platform
							 | 
						||
| 
								 | 
							
								Environmental Control Interface (PECI) is included.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Using temperature information from these four zones, an automatic fan speed
							 | 
						||
| 
								 | 
							
								control algorithm is employed to minimize acoustic impact while achieving
							 | 
						||
| 
								 | 
							
								recommended CPU temperature under varying operational loads.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To set fan speed, the aSC7621 has three independent pulse width modulation
							 | 
						||
| 
								 | 
							
								(PWM) outputs that are controlled by one, or a combination of three,
							 | 
						||
| 
								 | 
							
								temperature zones. Both high- and low-frequency PWM ranges are supported.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The aSC7621 also includes a digital filter that can be invoked to smooth
							 | 
						||
| 
								 | 
							
								temperature readings for better control of fan speed and minimum acoustic
							 | 
						||
| 
								 | 
							
								impact.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The aSC7621 has tachometer inputs to measure fan speed on up to four fans.
							 | 
						||
| 
								 | 
							
								Limit and status registers for all measured values are included to alert
							 | 
						||
| 
								 | 
							
								the system host that any measurements are outside of programmed limits
							 | 
						||
| 
								 | 
							
								via status registers.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								System voltages of VCCP, 2.5V, 3.3V, 5.0V, and 12V motherboard power are
							 | 
						||
| 
								 | 
							
								monitored efficiently with internal scaling resistors.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Features
							 | 
						||
| 
								 | 
							
								- Supports PECI interface and monitors internal and remote thermal diodes
							 | 
						||
| 
								 | 
							
								- 2-wire, SMBus 2.0 compliant, serial interface
							 | 
						||
| 
								 | 
							
								- 10-bit ADC
							 | 
						||
| 
								 | 
							
								- Monitors VCCP, 2.5V, 3.3V, 5.0V, and 12V motherboard/processor supplies
							 | 
						||
| 
								 | 
							
								- Programmable autonomous fan control based on temperature readings
							 | 
						||
| 
								 | 
							
								- Noise filtering of temperature reading for fan speed control
							 | 
						||
| 
								 | 
							
								- 0.25C digital temperature sensor resolution
							 | 
						||
| 
								 | 
							
								- 3 PWM fan speed control outputs for 2-, 3- or 4-wire fans and up to 4 fan
							 | 
						||
| 
								 | 
							
									tachometer inputs
							 | 
						||
| 
								 | 
							
								- Enhanced measured temperature to Temperature Zone assignment.
							 | 
						||
| 
								 | 
							
								- Provides high and low PWM frequency ranges
							 | 
						||
| 
								 | 
							
								- 3 GPIO pins for custom use
							 | 
						||
| 
								 | 
							
								- 24-Lead QSOP package
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Configuration Notes
							 | 
						||
| 
								 | 
							
								===================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Except where noted below, the sysfs entries created by this driver follow
							 | 
						||
| 
								 | 
							
								the standards defined in "sysfs-interface".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								temp1_source
							 | 
						||
| 
								 | 
							
									0 	(default) peci_legacy = 0, Remote 1 Temperature
							 | 
						||
| 
								 | 
							
											peci_legacy = 1, PECI Processor Temperature 0
							 | 
						||
| 
								 | 
							
									1 	Remote 1 Temperature
							 | 
						||
| 
								 | 
							
									2 	Remote 2 Temperature
							 | 
						||
| 
								 | 
							
									3 	Internal Temperature
							 | 
						||
| 
								 | 
							
									4 	PECI Processor Temperature 0
							 | 
						||
| 
								 | 
							
									5 	PECI Processor Temperature 1
							 | 
						||
| 
								 | 
							
									6 	PECI Processor Temperature 2
							 | 
						||
| 
								 | 
							
									7  PECI Processor Temperature 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								temp2_source
							 | 
						||
| 
								 | 
							
									0 	(default) Internal Temperature
							 | 
						||
| 
								 | 
							
									1 	Remote 1 Temperature
							 | 
						||
| 
								 | 
							
									2 	Remote 2 Temperature
							 | 
						||
| 
								 | 
							
									3 	Internal Temperature
							 | 
						||
| 
								 | 
							
									4 	PECI Processor Temperature 0
							 | 
						||
| 
								 | 
							
									5 	PECI Processor Temperature 1
							 | 
						||
| 
								 | 
							
									6 	PECI Processor Temperature 2
							 | 
						||
| 
								 | 
							
									7 	PECI Processor Temperature 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								temp3_source
							 | 
						||
| 
								 | 
							
									0 	(default) Remote 2 Temperature
							 | 
						||
| 
								 | 
							
									1 	Remote 1 Temperature
							 | 
						||
| 
								 | 
							
									2 	Remote 2 Temperature
							 | 
						||
| 
								 | 
							
									3 	Internal Temperature
							 | 
						||
| 
								 | 
							
									4 	PECI Processor Temperature 0
							 | 
						||
| 
								 | 
							
									5 	PECI Processor Temperature 1
							 | 
						||
| 
								 | 
							
									6 	PECI Processor Temperature 2
							 | 
						||
| 
								 | 
							
									7 	PECI Processor Temperature 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								temp4_source
							 | 
						||
| 
								 | 
							
									0 	(default) peci_legacy = 0, PECI Processor Temperature 0
							 | 
						||
| 
								 | 
							
											peci_legacy = 1, Remote 1 Temperature
							 | 
						||
| 
								 | 
							
									1 	Remote 1 Temperature
							 | 
						||
| 
								 | 
							
									2 	Remote 2 Temperature
							 | 
						||
| 
								 | 
							
									3 	Internal Temperature
							 | 
						||
| 
								 | 
							
									4 	PECI Processor Temperature 0
							 | 
						||
| 
								 | 
							
									5 	PECI Processor Temperature 1
							 | 
						||
| 
								 | 
							
									6 	PECI Processor Temperature 2
							 | 
						||
| 
								 | 
							
									7 	PECI Processor Temperature 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								temp[1-4]_smoothing_enable
							 | 
						||
| 
								 | 
							
								temp[1-4]_smoothing_time
							 | 
						||
| 
								 | 
							
									Smooths spikes in temp readings caused by noise.
							 | 
						||
| 
								 | 
							
									Valid values in milliseconds are:
							 | 
						||
| 
								 | 
							
									35000
							 | 
						||
| 
								 | 
							
									17600
							 | 
						||
| 
								 | 
							
									11800
							 | 
						||
| 
								 | 
							
									 7000
							 | 
						||
| 
								 | 
							
									 4400
							 | 
						||
| 
								 | 
							
									 3000
							 | 
						||
| 
								 | 
							
									 1600
							 | 
						||
| 
								 | 
							
									  800
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								temp[1-4]_crit
							 | 
						||
| 
								 | 
							
									When the corresponding zone temperature reaches this value,
							 | 
						||
| 
								 | 
							
									ALL pwm outputs will got to 100%.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								temp[5-8]_input
							 | 
						||
| 
								 | 
							
								temp[5-8]_enable
							 | 
						||
| 
								 | 
							
									The aSC7621 can also read temperatures provided by the processor
							 | 
						||
| 
								 | 
							
									via the PECI bus.  Usually these are "core" temps and are relative
							 | 
						||
| 
								 | 
							
									to the point where the automatic thermal control circuit starts
							 | 
						||
| 
								 | 
							
									throttling.  This means that these are usually negative numbers.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pwm[1-3]_enable
							 | 
						||
| 
								 | 
							
									0		Fan off.
							 | 
						||
| 
								 | 
							
									1		Fan on manual control.
							 | 
						||
| 
								 | 
							
									2		Fan on automatic control and will run at the minimum pwm
							 | 
						||
| 
								 | 
							
												if the temperature for the zone is below the minimum.
							 | 
						||
| 
								 | 
							
									3		Fan on automatic control but will be off if the temperature
							 | 
						||
| 
								 | 
							
												for the zone is below the minimum.
							 | 
						||
| 
								 | 
							
									4-254	Ignored.
							 | 
						||
| 
								 | 
							
									255		Fan on full.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pwm[1-3]_auto_channels
							 | 
						||
| 
								 | 
							
									Bitmap as described in sysctl-interface with the following
							 | 
						||
| 
								 | 
							
									exceptions...
							 | 
						||
| 
								 | 
							
									Only the following combination of zones (and their corresponding masks)
							 | 
						||
| 
								 | 
							
									are valid:
							 | 
						||
| 
								 | 
							
									1
							 | 
						||
| 
								 | 
							
									2
							 | 
						||
| 
								 | 
							
									3
							 | 
						||
| 
								 | 
							
									2,3
							 | 
						||
| 
								 | 
							
									1,2,3
							 | 
						||
| 
								 | 
							
									4
							 | 
						||
| 
								 | 
							
									1,2,3,4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									Special values:
							 | 
						||
| 
								 | 
							
									0			Disabled.
							 | 
						||
| 
								 | 
							
									16		Fan on manual control.
							 | 
						||
| 
								 | 
							
									31		Fan on full.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pwm[1-3]_invert
							 | 
						||
| 
								 | 
							
									When set, inverts the meaning of pwm[1-3].
							 | 
						||
| 
								 | 
							
									i.e.  when pwm = 0, the fan will be on full and
							 | 
						||
| 
								 | 
							
									when pwm = 255 the fan will be off.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pwm[1-3]_freq
							 | 
						||
| 
								 | 
							
									PWM frequency in Hz
							 | 
						||
| 
								 | 
							
									Valid values in Hz are:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									10
							 | 
						||
| 
								 | 
							
									15
							 | 
						||
| 
								 | 
							
									23
							 | 
						||
| 
								 | 
							
									30  (default)
							 | 
						||
| 
								 | 
							
									38
							 | 
						||
| 
								 | 
							
									47
							 | 
						||
| 
								 | 
							
									62
							 | 
						||
| 
								 | 
							
									94
							 | 
						||
| 
								 | 
							
									23000
							 | 
						||
| 
								 | 
							
									24000
							 | 
						||
| 
								 | 
							
									25000
							 | 
						||
| 
								 | 
							
									26000
							 | 
						||
| 
								 | 
							
									27000
							 | 
						||
| 
								 | 
							
									28000
							 | 
						||
| 
								 | 
							
									29000
							 | 
						||
| 
								 | 
							
									30000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									Setting any other value will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								peci_enable
							 | 
						||
| 
								 | 
							
									Enables or disables PECI
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								peci_avg
							 | 
						||
| 
								 | 
							
									Input filter average time.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									0 	0 Sec. (no Smoothing) (default)
							 | 
						||
| 
								 | 
							
									1 	0.25 Sec.
							 | 
						||
| 
								 | 
							
									2 	0.5 Sec.
							 | 
						||
| 
								 | 
							
									3 	1.0 Sec.
							 | 
						||
| 
								 | 
							
									4 	2.0 Sec.
							 | 
						||
| 
								 | 
							
									5 	4.0 Sec.
							 | 
						||
| 
								 | 
							
									6 	8.0 Sec.
							 | 
						||
| 
								 | 
							
									7 	0.0 Sec.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								peci_legacy
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									0	Standard Mode (default)
							 | 
						||
| 
								 | 
							
										Remote Diode 1 reading is associated with
							 | 
						||
| 
								 | 
							
										Temperature Zone 1, PECI is associated with
							 | 
						||
| 
								 | 
							
										Zone 4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									1	Legacy Mode
							 | 
						||
| 
								 | 
							
										PECI is associated with Temperature Zone 1,
							 | 
						||
| 
								 | 
							
										Remote Diode 1 is associated with Zone 4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								peci_diode
							 | 
						||
| 
								 | 
							
									Diode filter
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									0	0.25 Sec.
							 | 
						||
| 
								 | 
							
									1 	1.1 Sec.
							 | 
						||
| 
								 | 
							
									2 	2.4 Sec.  (default)
							 | 
						||
| 
								 | 
							
									3 	3.4 Sec.
							 | 
						||
| 
								 | 
							
									4 	5.0 Sec.
							 | 
						||
| 
								 | 
							
									5 	6.8 Sec.
							 | 
						||
| 
								 | 
							
									6 	10.2 Sec.
							 | 
						||
| 
								 | 
							
									7 	16.4 Sec.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								peci_4domain
							 | 
						||
| 
								 | 
							
									Four domain enable
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									0 	1 or 2 Domains for enabled processors (default)
							 | 
						||
| 
								 | 
							
									1 	3 or 4 Domains for enabled processors
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								peci_domain
							 | 
						||
| 
								 | 
							
									Domain
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									0 	Processor contains a single domain (0) 	 (default)
							 | 
						||
| 
								 | 
							
									1 	Processor contains two domains (0,1)
							 |