mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	 06923f8442
			
		
	
	
		06923f8442
		
	
	
	
	
		
			
			EMC6D103S is similar to EMC6D103, only it does not support registers 62[5:7], 6D[0:7], and 6E[0:7]. Register respective sysfs attributes and update affected registers for all other chips only. Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com> Acked-by: Jean Delvare <khali@linux-fr.org>
		
			
				
	
	
		
			231 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Kernel driver lm85
 | |
| ==================
 | |
| 
 | |
| Supported chips:
 | |
|   * National Semiconductor LM85 (B and C versions)
 | |
|     Prefix: 'lm85'
 | |
|     Addresses scanned: I2C 0x2c, 0x2d, 0x2e
 | |
|     Datasheet: http://www.national.com/pf/LM/LM85.html
 | |
|   * Analog Devices ADM1027
 | |
|     Prefix: 'adm1027'
 | |
|     Addresses scanned: I2C 0x2c, 0x2d, 0x2e
 | |
|     Datasheet: http://www.onsemi.com/PowerSolutions/product.do?id=ADM1027
 | |
|   * Analog Devices ADT7463
 | |
|     Prefix: 'adt7463'
 | |
|     Addresses scanned: I2C 0x2c, 0x2d, 0x2e
 | |
|     Datasheet: http://www.onsemi.com/PowerSolutions/product.do?id=ADT7463
 | |
|   * Analog Devices ADT7468
 | |
|     Prefix: 'adt7468'
 | |
|     Addresses scanned: I2C 0x2c, 0x2d, 0x2e
 | |
|     Datasheet: http://www.onsemi.com/PowerSolutions/product.do?id=ADT7468
 | |
|   * SMSC EMC6D100, SMSC EMC6D101
 | |
|     Prefix: 'emc6d100'
 | |
|     Addresses scanned: I2C 0x2c, 0x2d, 0x2e
 | |
|     Datasheet: http://www.smsc.com/media/Downloads_Public/discontinued/6d100.pdf 
 | |
|   * SMSC EMC6D102
 | |
|     Prefix: 'emc6d102'
 | |
|     Addresses scanned: I2C 0x2c, 0x2d, 0x2e
 | |
|     Datasheet: http://www.smsc.com/main/catalog/emc6d102.html
 | |
|   * SMSC EMC6D103
 | |
|     Prefix: 'emc6d103'
 | |
|     Addresses scanned: I2C 0x2c, 0x2d, 0x2e
 | |
|     Datasheet: http://www.smsc.com/main/catalog/emc6d103.html
 | |
|   * SMSC EMC6D103S
 | |
|     Prefix: 'emc6d103s'
 | |
|     Addresses scanned: I2C 0x2c, 0x2d, 0x2e
 | |
|     Datasheet: http://www.smsc.com/main/catalog/emc6d103s.html
 | |
| 
 | |
| Authors:
 | |
|         Philip Pokorny <ppokorny@penguincomputing.com>,
 | |
|         Frodo Looijaard <frodol@dds.nl>,
 | |
|         Richard Barrington <rich_b_nz@clear.net.nz>,
 | |
|         Margit Schubert-While <margitsw@t-online.de>,
 | |
|         Justin Thiessen <jthiessen@penguincomputing.com>
 | |
| 
 | |
| Description
 | |
| -----------
 | |
| 
 | |
| This driver implements support for the National Semiconductor LM85 and
 | |
| compatible chips including the Analog Devices ADM1027, ADT7463, ADT7468 and
 | |
| SMSC EMC6D10x chips family.
 | |
| 
 | |
| The LM85 uses the 2-wire interface compatible with the SMBUS 2.0
 | |
| specification. Using an analog to digital converter it measures three (3)
 | |
| temperatures and five (5) voltages. It has four (4) 16-bit counters for
 | |
| measuring fan speed. Five (5) digital inputs are provided for sampling the
 | |
| VID signals from the processor to the VRM. Lastly, there are three (3) PWM
 | |
| outputs that can be used to control fan speed.
 | |
| 
 | |
| The voltage inputs have internal scaling resistors so that the following
 | |
| voltage can be measured without external resistors:
 | |
| 
 | |
|   2.5V, 3.3V, 5V, 12V, and CPU core voltage (2.25V)
 | |
| 
 | |
| The temperatures measured are one internal diode, and two remote diodes.
 | |
| Remote 1 is generally the CPU temperature. These inputs are designed to
 | |
| measure a thermal diode like the one in a Pentium 4 processor in a socket
 | |
| 423 or socket 478 package. They can also measure temperature using a
 | |
| transistor like the 2N3904.
 | |
| 
 | |
| A sophisticated control system for the PWM outputs is designed into the
 | |
| LM85 that allows fan speed to be adjusted automatically based on any of the
 | |
| three temperature sensors. Each PWM output is individually adjustable and
 | |
| programmable. Once configured, the LM85 will adjust the PWM outputs in
 | |
| response to the measured temperatures without further host intervention.
 | |
| This feature can also be disabled for manual control of the PWM's.
 | |
| 
 | |
| Each of the measured inputs (voltage, temperature, fan speed) has
 | |
| corresponding high/low limit values. The LM85 will signal an ALARM if any
 | |
| measured value exceeds either limit.
 | |
| 
 | |
| The LM85 samples all inputs continuously. The lm85 driver will not read
 | |
| the registers more often than once a second. Further, configuration data is
 | |
| only read once each 5 minutes. There is twice as much config data as
 | |
| measurements, so this would seem to be a worthwhile optimization.
 | |
| 
 | |
| Special Features
 | |
| ----------------
 | |
| 
 | |
| The LM85 has four fan speed monitoring modes. The ADM1027 has only two.
 | |
| Both have special circuitry to compensate for PWM interactions with the
 | |
| TACH signal from the fans. The ADM1027 can be configured to measure the
 | |
| speed of a two wire fan, but the input conditioning circuitry is different
 | |
| for 3-wire and 2-wire mode. For this reason, the 2-wire fan modes are not
 | |
| exposed to user control. The BIOS should initialize them to the correct
 | |
| mode. If you've designed your own ADM1027, you'll have to modify the
 | |
| init_client function and add an insmod parameter to set this up.
 | |
| 
 | |
| To smooth the response of fans to changes in temperature, the LM85 has an
 | |
| optional filter for smoothing temperatures. The ADM1027 has the same
 | |
| config option but uses it to rate limit the changes to fan speed instead.
 | |
| 
 | |
| The ADM1027, ADT7463 and ADT7468 have a 10-bit ADC and can therefore
 | |
| measure temperatures with 0.25 degC resolution. They also provide an offset
 | |
| to the temperature readings that is automatically applied during
 | |
| measurement. This offset can be used to zero out any errors due to traces
 | |
| and placement. The documentation says that the offset is in 0.25 degC
 | |
| steps, but in initial testing of the ADM1027 it was 1.00 degC steps. Analog
 | |
| Devices has confirmed this "bug". The ADT7463 is reported to work as
 | |
| described in the documentation. The current lm85 driver does not show the
 | |
| offset register.
 | |
| 
 | |
| The ADT7468 has a high-frequency PWM mode, where all PWM outputs are
 | |
| driven by a 22.5 kHz clock. This is a global mode, not per-PWM output,
 | |
| which means that setting any PWM frequency above 11.3 kHz will switch
 | |
| all 3 PWM outputs to a 22.5 kHz frequency. Conversely, setting any PWM
 | |
| frequency below 11.3 kHz will switch all 3 PWM outputs to a frequency
 | |
| between 10 and 100 Hz, which can then be tuned separately.
 | |
| 
 | |
| See the vendor datasheets for more information. There is application note
 | |
| from National (AN-1260) with some additional information about the LM85.
 | |
| The Analog Devices datasheet is very detailed and describes a procedure for
 | |
| determining an optimal configuration for the automatic PWM control.
 | |
| 
 | |
| The SMSC EMC6D100 & EMC6D101 monitor external voltages, temperatures, and
 | |
| fan speeds. They use this monitoring capability to alert the system to out
 | |
| of limit conditions and can automatically control the speeds of multiple
 | |
| fans in a PC or embedded system. The EMC6D101, available in a 24-pin SSOP
 | |
| package, and the EMC6D100, available in a 28-pin SSOP package, are designed
 | |
| to be register compatible. The EMC6D100 offers all the features of the
 | |
| EMC6D101 plus additional voltage monitoring and system control features.
 | |
| Unfortunately it is not possible to distinguish between the package
 | |
| versions on register level so these additional voltage inputs may read
 | |
| zero. EMC6D102 and EMC6D103 feature additional ADC bits thus extending precision
 | |
| of voltage and temperature channels.
 | |
| 
 | |
| SMSC EMC6D103S is similar to EMC6D103, but does not support pwm#_auto_pwm_minctl
 | |
| and temp#_auto_temp_off.
 | |
| 
 | |
| Hardware Configurations
 | |
| -----------------------
 | |
| 
 | |
| The LM85 can be jumpered for 3 different SMBus addresses. There are
 | |
| no other hardware configuration options for the LM85.
 | |
| 
 | |
| The lm85 driver detects both LM85B and LM85C revisions of the chip. See the
 | |
| datasheet for a complete description of the differences. Other than
 | |
| identifying the chip, the driver behaves no differently with regard to
 | |
| these two chips. The LM85B is recommended for new designs.
 | |
| 
 | |
| The ADM1027, ADT7463 and ADT7468 chips have an optional SMBALERT output
 | |
| that can be used to signal the chipset in case a limit is exceeded or the
 | |
| temperature sensors fail. Individual sensor interrupts can be masked so
 | |
| they won't trigger SMBALERT. The SMBALERT output if configured replaces one
 | |
| of the other functions (PWM2 or IN0). This functionality is not implemented
 | |
| in current driver.
 | |
| 
 | |
| The ADT7463 and ADT7468 also have an optional THERM output/input which can
 | |
| be connected to the processor PROC_HOT output. If available, the autofan
 | |
| control dynamic Tmin feature can be enabled to keep the system temperature
 | |
| within spec (just?!) with the least possible fan noise.
 | |
| 
 | |
| Configuration Notes
 | |
| -------------------
 | |
| 
 | |
| Besides standard interfaces driver adds following:
 | |
| 
 | |
| * Temperatures and Zones
 | |
| 
 | |
| Each temperature sensor is associated with a Zone. There are three
 | |
| sensors and therefore three zones (# 1, 2 and 3). Each zone has the following
 | |
| temperature configuration points:
 | |
| 
 | |
| * temp#_auto_temp_off - temperature below which fans should be off or spinning very low.
 | |
| * temp#_auto_temp_min - temperature over which fans start to spin.
 | |
| * temp#_auto_temp_max - temperature when fans spin at full speed.
 | |
| * temp#_auto_temp_crit - temperature when all fans will run full speed.
 | |
| 
 | |
| * PWM Control
 | |
| 
 | |
| There are three PWM outputs. The LM85 datasheet suggests that the
 | |
| pwm3 output control both fan3 and fan4. Each PWM can be individually
 | |
| configured and assigned to a zone for its control value. Each PWM can be
 | |
| configured individually according to the following options.
 | |
| 
 | |
| * pwm#_auto_pwm_min - this specifies the PWM value for temp#_auto_temp_off
 | |
|                       temperature. (PWM value from 0 to 255)
 | |
| 
 | |
| * pwm#_auto_pwm_minctl - this flags selects for temp#_auto_temp_off temperature
 | |
|                          the behaviour of fans. Write 1 to let fans spinning at
 | |
| 			 pwm#_auto_pwm_min or write 0 to let them off.
 | |
| 
 | |
| NOTE: It has been reported that there is a bug in the LM85 that causes the flag
 | |
| to be associated with the zones not the PWMs. This contradicts all the
 | |
| published documentation. Setting pwm#_min_ctl in this case actually affects all
 | |
| PWMs controlled by zone '#'.
 | |
| 
 | |
| * PWM Controlling Zone selection
 | |
| 
 | |
| * pwm#_auto_channels - controls zone that is associated with PWM
 | |
| 
 | |
| Configuration choices:
 | |
| 
 | |
|    Value     Meaning
 | |
|   ------  ------------------------------------------------
 | |
|       1    Controlled by Zone 1
 | |
|       2    Controlled by Zone 2
 | |
|       3    Controlled by Zone 3
 | |
|      23    Controlled by higher temp of Zone 2 or 3
 | |
|     123    Controlled by highest temp of Zone 1, 2 or 3
 | |
|       0    PWM always 0%  (off)
 | |
|      -1    PWM always 100%  (full on)
 | |
|      -2    Manual control (write to 'pwm#' to set)
 | |
| 
 | |
| The National LM85's have two vendor specific configuration
 | |
| features. Tach. mode and Spinup Control. For more details on these,
 | |
| see the LM85 datasheet or Application Note AN-1260. These features
 | |
| are not currently supported by the lm85 driver.
 | |
| 
 | |
| The Analog Devices ADM1027 has several vendor specific enhancements.
 | |
| The number of pulses-per-rev of the fans can be set, Tach monitoring
 | |
| can be optimized for PWM operation, and an offset can be applied to
 | |
| the temperatures to compensate for systemic errors in the
 | |
| measurements. These features are not currently supported by the lm85
 | |
| driver.
 | |
| 
 | |
| In addition to the ADM1027 features, the ADT7463 and ADT7468 also have
 | |
| Tmin control and THERM asserted counts. Automatic Tmin control acts to
 | |
| adjust the Tmin value to maintain the measured temperature sensor at a
 | |
| specified temperature. There isn't much documentation on this feature in
 | |
| the ADT7463 data sheet. This is not supported by current driver.
 |