brintos

brintos / linux-shallow public Read only

0
0
Text · 10.9 KiB · 55e1d9c Raw
287 lines · plain
1Kernel driver lm852==================3 4Supported chips:5 6  * National Semiconductor LM85 (B and C versions)7 8    Prefix: 'lm85b' or 'lm85c'9 10    Addresses scanned: I2C 0x2c, 0x2d, 0x2e11 12    Datasheet: http://www.national.com/pf/LM/LM85.html13 14  * Texas Instruments LM9600015 16    Prefix: 'lm9600'17 18    Addresses scanned: I2C 0x2c, 0x2d, 0x2e19 20    Datasheet: https://www.ti.com/lit/ds/symlink/lm96000.pdf21 22  * Analog Devices ADM102723 24    Prefix: 'adm1027'25 26    Addresses scanned: I2C 0x2c, 0x2d, 0x2e27 28    Datasheet: https://www.onsemi.com/PowerSolutions/product.do?id=ADM102729 30  * Analog Devices ADT746331 32    Prefix: 'adt7463'33 34    Addresses scanned: I2C 0x2c, 0x2d, 0x2e35 36    Datasheet: https://www.onsemi.com/PowerSolutions/product.do?id=ADT746337 38  * Analog Devices ADT746839 40    Prefix: 'adt7468'41 42    Addresses scanned: I2C 0x2c, 0x2d, 0x2e43 44    Datasheet: https://www.onsemi.com/PowerSolutions/product.do?id=ADT746845 46  * SMSC EMC6D100, SMSC EMC6D10147 48    Prefix: 'emc6d100'49 50    Addresses scanned: I2C 0x2c, 0x2d, 0x2e51 52    Datasheet: http://www.smsc.com/media/Downloads_Public/discontinued/6d100.pdf53 54  * SMSC EMC6D10255 56    Prefix: 'emc6d102'57 58    Addresses scanned: I2C 0x2c, 0x2d, 0x2e59 60    Datasheet: http://www.smsc.com/main/catalog/emc6d102.html61 62  * SMSC EMC6D10363 64    Prefix: 'emc6d103'65 66    Addresses scanned: I2C 0x2c, 0x2d, 0x2e67 68    Datasheet: http://www.smsc.com/main/catalog/emc6d103.html69 70  * SMSC EMC6D103S71 72    Prefix: 'emc6d103s'73 74    Addresses scanned: I2C 0x2c, 0x2d, 0x2e75 76    Datasheet: http://www.smsc.com/main/catalog/emc6d103s.html77 78Authors:79       - Philip Pokorny <ppokorny@penguincomputing.com>,80       - Frodo Looijaard <frodol@dds.nl>,81       - Richard Barrington <rich_b_nz@clear.net.nz>,82       - Margit Schubert-While <margitsw@t-online.de>,83       - Justin Thiessen <jthiessen@penguincomputing.com>84 85Description86-----------87 88This driver implements support for the National Semiconductor LM85 and89compatible chips including the Analog Devices ADM1027, ADT7463, ADT7468 and90SMSC EMC6D10x chips family.91 92The LM85 uses the 2-wire interface compatible with the SMBUS 2.093specification. Using an analog to digital converter it measures three (3)94temperatures and five (5) voltages. It has four (4) 16-bit counters for95measuring fan speed. Five (5) digital inputs are provided for sampling the96VID signals from the processor to the VRM. Lastly, there are three (3) PWM97outputs that can be used to control fan speed.98 99The voltage inputs have internal scaling resistors so that the following100voltage can be measured without external resistors:101 102  2.5V, 3.3V, 5V, 12V, and CPU core voltage (2.25V)103 104The temperatures measured are one internal diode, and two remote diodes.105Remote 1 is generally the CPU temperature. These inputs are designed to106measure a thermal diode like the one in a Pentium 4 processor in a socket107423 or socket 478 package. They can also measure temperature using a108transistor like the 2N3904.109 110A sophisticated control system for the PWM outputs is designed into the111LM85 that allows fan speed to be adjusted automatically based on any of the112three temperature sensors. Each PWM output is individually adjustable and113programmable. Once configured, the LM85 will adjust the PWM outputs in114response to the measured temperatures without further host intervention.115This feature can also be disabled for manual control of the PWM's.116 117Each of the measured inputs (voltage, temperature, fan speed) has118corresponding high/low limit values. The LM85 will signal an ALARM if any119measured value exceeds either limit.120 121The LM85 samples all inputs continuously. The lm85 driver will not read122the registers more often than once a second. Further, configuration data is123only read once each 5 minutes. There is twice as much config data as124measurements, so this would seem to be a worthwhile optimization.125 126Special Features127----------------128 129The LM85 has four fan speed monitoring modes. The ADM1027 has only two.130Both have special circuitry to compensate for PWM interactions with the131TACH signal from the fans. The ADM1027 can be configured to measure the132speed of a two wire fan, but the input conditioning circuitry is different133for 3-wire and 2-wire mode. For this reason, the 2-wire fan modes are not134exposed to user control. The BIOS should initialize them to the correct135mode. If you've designed your own ADM1027, you'll have to modify the136init_client function and add an insmod parameter to set this up.137 138To smooth the response of fans to changes in temperature, the LM85 has an139optional filter for smoothing temperatures. The ADM1027 has the same140config option but uses it to rate limit the changes to fan speed instead.141 142The ADM1027, ADT7463 and ADT7468 have a 10-bit ADC and can therefore143measure temperatures with 0.25 degC resolution. They also provide an offset144to the temperature readings that is automatically applied during145measurement. This offset can be used to zero out any errors due to traces146and placement. The documentation says that the offset is in 0.25 degC147steps, but in initial testing of the ADM1027 it was 1.00 degC steps. Analog148Devices has confirmed this "bug". The ADT7463 is reported to work as149described in the documentation. The current lm85 driver does not show the150offset register.151 152The ADT7468 has a high-frequency PWM mode, where all PWM outputs are153driven by a 22.5 kHz clock. This is a global mode, not per-PWM output,154which means that setting any PWM frequency above 11.3 kHz will switch155all 3 PWM outputs to a 22.5 kHz frequency. Conversely, setting any PWM156frequency below 11.3 kHz will switch all 3 PWM outputs to a frequency157between 10 and 100 Hz, which can then be tuned separately.158 159See the vendor datasheets for more information. There is application note160from National (AN-1260) with some additional information about the LM85.161The Analog Devices datasheet is very detailed and describes a procedure for162determining an optimal configuration for the automatic PWM control.163 164The SMSC EMC6D100 & EMC6D101 monitor external voltages, temperatures, and165fan speeds. They use this monitoring capability to alert the system to out166of limit conditions and can automatically control the speeds of multiple167fans in a PC or embedded system. The EMC6D101, available in a 24-pin SSOP168package, and the EMC6D100, available in a 28-pin SSOP package, are designed169to be register compatible. The EMC6D100 offers all the features of the170EMC6D101 plus additional voltage monitoring and system control features.171Unfortunately it is not possible to distinguish between the package172versions on register level so these additional voltage inputs may read173zero. EMC6D102 and EMC6D103 feature additional ADC bits thus extending precision174of voltage and temperature channels.175 176SMSC EMC6D103S is similar to EMC6D103, but does not support pwm#_auto_pwm_minctl177and temp#_auto_temp_off.178 179The LM96000 supports additional high frequency PWM modes (22.5 kHz, 24 kHz,18025.7 kHz, 27.7 kHz and 30 kHz), which can be configured on a per-PWM basis.181 182Hardware Configurations183-----------------------184 185The LM85 can be jumpered for 3 different SMBus addresses. There are186no other hardware configuration options for the LM85.187 188The lm85 driver detects both LM85B and LM85C revisions of the chip. See the189datasheet for a complete description of the differences. Other than190identifying the chip, the driver behaves no differently with regard to191these two chips. The LM85B is recommended for new designs.192 193The ADM1027, ADT7463 and ADT7468 chips have an optional SMBALERT output194that can be used to signal the chipset in case a limit is exceeded or the195temperature sensors fail. Individual sensor interrupts can be masked so196they won't trigger SMBALERT. The SMBALERT output if configured replaces one197of the other functions (PWM2 or IN0). This functionality is not implemented198in current driver.199 200The ADT7463 and ADT7468 also have an optional THERM output/input which can201be connected to the processor PROC_HOT output. If available, the autofan202control dynamic Tmin feature can be enabled to keep the system temperature203within spec (just?!) with the least possible fan noise.204 205Configuration Notes206-------------------207 208Besides standard interfaces driver adds following:209 210* Temperatures and Zones211 212Each temperature sensor is associated with a Zone. There are three213sensors and therefore three zones (# 1, 2 and 3). Each zone has the following214temperature configuration points:215 216* temp#_auto_temp_off217	- temperature below which fans should be off or spinning very low.218* temp#_auto_temp_min219	- temperature over which fans start to spin.220* temp#_auto_temp_max221	- temperature when fans spin at full speed.222* temp#_auto_temp_crit223	- temperature when all fans will run full speed.224 225PWM Control226^^^^^^^^^^^227 228There are three PWM outputs. The LM85 datasheet suggests that the229pwm3 output control both fan3 and fan4. Each PWM can be individually230configured and assigned to a zone for its control value. Each PWM can be231configured individually according to the following options.232 233* pwm#_auto_pwm_min234	- this specifies the PWM value for temp#_auto_temp_off235	  temperature. (PWM value from 0 to 255)236 237* pwm#_auto_pwm_minctl238	- this flags selects for temp#_auto_temp_off temperature239	  the behaviour of fans. Write 1 to let fans spinning at240	  pwm#_auto_pwm_min or write 0 to let them off.241 242.. note::243 244	It has been reported that there is a bug in the LM85 that causes245	the flag to be associated with the zones not the PWMs. This246	contradicts all the published documentation. Setting pwm#_min_ctl247	in this case actually affects all PWMs controlled by zone '#'.248 249PWM Controlling Zone selection250^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^251 252* pwm#_auto_channels253	- controls zone that is associated with PWM254 255Configuration choices:256 257========== =============================================258Value      Meaning259========== =============================================260      1    Controlled by Zone 1261      2    Controlled by Zone 2262      3    Controlled by Zone 3263     23    Controlled by higher temp of Zone 2 or 3264    123    Controlled by highest temp of Zone 1, 2 or 3265      0    PWM always 0%  (off)266     -1    PWM always 100%  (full on)267     -2    Manual control (write to 'pwm#' to set)268========== =============================================269 270The National LM85's have two vendor specific configuration271features. Tach. mode and Spinup Control. For more details on these,272see the LM85 datasheet or Application Note AN-1260. These features273are not currently supported by the lm85 driver.274 275The Analog Devices ADM1027 has several vendor specific enhancements.276The number of pulses-per-rev of the fans can be set, Tach monitoring277can be optimized for PWM operation, and an offset can be applied to278the temperatures to compensate for systemic errors in the279measurements. These features are not currently supported by the lm85280driver.281 282In addition to the ADM1027 features, the ADT7463 and ADT7468 also have283Tmin control and THERM asserted counts. Automatic Tmin control acts to284adjust the Tmin value to maintain the measured temperature sensor at a285specified temperature. There isn't much documentation on this feature in286the ADT7463 data sheet. This is not supported by current driver.287