mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 08:26:29 +00:00 
			
		
		
		
	 be2a608bd0
			
		
	
	
		be2a608bd0
		
	
	
	
	
		
			
			Convert files within the Documentation directory to UTF-8. Adrian Bunk: small additional fixes Signed-off-by: John Anthony Kazos Jr. <jakj@j-a-k-j.com> Signed-off-by: Adrian Bunk <bunk@stusta.de>
		
			
				
	
	
		
			94 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Kernel driver adm1026
 | |
| =====================
 | |
| 
 | |
| Supported chips:
 | |
|   * Analog Devices ADM1026
 | |
|     Prefix: 'adm1026'
 | |
|     Addresses scanned: I2C 0x2c, 0x2d, 0x2e
 | |
|     Datasheet: Publicly available at the Analog Devices website
 | |
|                http://www.analog.com/en/prod/0,,766_825_ADM1026,00.html
 | |
| 
 | |
| Authors:
 | |
|         Philip Pokorny <ppokorny@penguincomputing.com> for Penguin Computing
 | |
|         Justin Thiessen <jthiessen@penguincomputing.com>
 | |
| 
 | |
| Module Parameters
 | |
| -----------------
 | |
| 
 | |
| * gpio_input: int array (min = 1, max = 17)
 | |
|   List of GPIO pins (0-16) to program as inputs
 | |
| * gpio_output: int array (min = 1, max = 17)
 | |
|   List of GPIO pins (0-16) to program as outputs
 | |
| * gpio_inverted: int array (min = 1, max = 17)
 | |
|   List of GPIO pins (0-16) to program as inverted
 | |
| * gpio_normal: int array (min = 1, max = 17)
 | |
|   List of GPIO pins (0-16) to program as normal/non-inverted
 | |
| * gpio_fan: int array (min = 1, max = 8)
 | |
|   List of GPIO pins (0-7) to program as fan tachs
 | |
| 
 | |
| 
 | |
| Description
 | |
| -----------
 | |
| 
 | |
| This driver implements support for the Analog Devices ADM1026. Analog
 | |
| Devices calls it a "complete thermal system management controller."
 | |
| 
 | |
| The ADM1026 implements three (3) temperature sensors, 17 voltage sensors,
 | |
| 16 general purpose digital I/O lines, eight (8) fan speed sensors (8-bit),
 | |
| an analog output and a PWM output along with limit, alarm and mask bits for
 | |
| all of the above. There is even 8k bytes of EEPROM memory on chip.
 | |
| 
 | |
| Temperatures are measured in degrees Celsius. There are two external
 | |
| sensor inputs and one internal sensor. Each sensor has a high and low
 | |
| limit. If the limit is exceeded, an interrupt (#SMBALERT) can be
 | |
| generated. The interrupts can be masked. In addition, there are over-temp
 | |
| limits for each sensor. If this limit is exceeded, the #THERM output will
 | |
| be asserted. The current temperature and limits have a resolution of 1
 | |
| degree.
 | |
| 
 | |
| Fan rotation speeds are reported in RPM (rotations per minute) but measured
 | |
| in counts of a 22.5kHz internal clock. Each fan has a high limit which
 | |
| corresponds to a minimum fan speed. If the limit is exceeded, an interrupt
 | |
| can be generated. Each fan can be programmed to divide the reference clock
 | |
| by 1, 2, 4 or 8. Not all RPM values can accurately be represented, so some
 | |
| rounding is done. With a divider of 8, the slowest measurable speed of a
 | |
| two pulse per revolution fan is 661 RPM.
 | |
| 
 | |
| There are 17 voltage sensors. An alarm is triggered if the voltage has
 | |
| crossed a programmable minimum or maximum limit. Note that minimum in this
 | |
| case always means 'closest to zero'; this is important for negative voltage
 | |
| measurements. Several inputs have integrated attenuators so they can measure
 | |
| higher voltages directly. 3.3V, 5V, 12V, -12V and battery voltage all have
 | |
| dedicated inputs. There are several inputs scaled to 0-3V full-scale range
 | |
| for SCSI terminator power. The remaining inputs are not scaled and have
 | |
| a 0-2.5V full-scale range. A 2.5V or 1.82V reference voltage is provided
 | |
| for negative voltage measurements.
 | |
| 
 | |
| If an alarm triggers, it will remain triggered until the hardware register
 | |
| is read at least once. This means that the cause for the alarm may already
 | |
| have disappeared! Note that in the current implementation, all hardware
 | |
| registers are read whenever any data is read (unless it is less than 2.0
 | |
| seconds since the last update). This means that you can easily miss
 | |
| once-only alarms.
 | |
| 
 | |
| The ADM1026 measures continuously. Analog inputs are measured about 4
 | |
| times a second. Fan speed measurement time depends on fan speed and
 | |
| divisor. It can take as long as 1.5 seconds to measure all fan speeds.
 | |
| 
 | |
| The ADM1026 has the ability to automatically control fan speed based on the
 | |
| temperature sensor inputs. Both the PWM output and the DAC output can be
 | |
| used to control fan speed. Usually only one of these two outputs will be
 | |
| used. Write the minimum PWM or DAC value to the appropriate control
 | |
| register. Then set the low temperature limit in the tmin values for each
 | |
| temperature sensor. The range of control is fixed at 20 °C, and the
 | |
| largest difference between current and tmin of the temperature sensors sets
 | |
| the control output. See the datasheet for several example circuits for
 | |
| controlling fan speed with the PWM and DAC outputs. The fan speed sensors
 | |
| do not have PWM compensation, so it is probably best to control the fan
 | |
| voltage from the power lead rather than on the ground lead.
 | |
| 
 | |
| The datasheet shows an example application with VID signals attached to
 | |
| GPIO lines. Unfortunately, the chip may not be connected to the VID lines
 | |
| in this way. The driver assumes that the chips *is* connected this way to
 | |
| get a VID voltage.
 |