1Kernel driver adm1026 2===================== 3 4Supported chips: 5 * Analog Devices ADM1026 6 Prefix: 'adm1026' 7 Addresses scanned: I2C 0x2c, 0x2d, 0x2e 8 Datasheet: Publicly available at the Analog Devices website 9 http://www.onsemi.com/PowerSolutions/product.do?id=ADM1026 10 11Authors: 12 Philip Pokorny <ppokorny@penguincomputing.com> for Penguin Computing 13 Justin Thiessen <jthiessen@penguincomputing.com> 14 15Module Parameters 16----------------- 17 18* gpio_input: int array (min = 1, max = 17) 19 List of GPIO pins (0-16) to program as inputs 20* gpio_output: int array (min = 1, max = 17) 21 List of GPIO pins (0-16) to program as outputs 22* gpio_inverted: int array (min = 1, max = 17) 23 List of GPIO pins (0-16) to program as inverted 24* gpio_normal: int array (min = 1, max = 17) 25 List of GPIO pins (0-16) to program as normal/non-inverted 26* gpio_fan: int array (min = 1, max = 8) 27 List of GPIO pins (0-7) to program as fan tachs 28 29 30Description 31----------- 32 33This driver implements support for the Analog Devices ADM1026. Analog 34Devices calls it a "complete thermal system management controller." 35 36The ADM1026 implements three (3) temperature sensors, 17 voltage sensors, 3716 general purpose digital I/O lines, eight (8) fan speed sensors (8-bit), 38an analog output and a PWM output along with limit, alarm and mask bits for 39all of the above. There is even 8k bytes of EEPROM memory on chip. 40 41Temperatures are measured in degrees Celsius. There are two external 42sensor inputs and one internal sensor. Each sensor has a high and low 43limit. If the limit is exceeded, an interrupt (#SMBALERT) can be 44generated. The interrupts can be masked. In addition, there are over-temp 45limits for each sensor. If this limit is exceeded, the #THERM output will 46be asserted. The current temperature and limits have a resolution of 1 47degree. 48 49Fan rotation speeds are reported in RPM (rotations per minute) but measured 50in counts of a 22.5kHz internal clock. Each fan has a high limit which 51corresponds to a minimum fan speed. If the limit is exceeded, an interrupt 52can be generated. Each fan can be programmed to divide the reference clock 53by 1, 2, 4 or 8. Not all RPM values can accurately be represented, so some 54rounding is done. With a divider of 8, the slowest measurable speed of a 55two pulse per revolution fan is 661 RPM. 56 57There are 17 voltage sensors. An alarm is triggered if the voltage has 58crossed a programmable minimum or maximum limit. Note that minimum in this 59case always means 'closest to zero'; this is important for negative voltage 60measurements. Several inputs have integrated attenuators so they can measure 61higher voltages directly. 3.3V, 5V, 12V, -12V and battery voltage all have 62dedicated inputs. There are several inputs scaled to 0-3V full-scale range 63for SCSI terminator power. The remaining inputs are not scaled and have 64a 0-2.5V full-scale range. A 2.5V or 1.82V reference voltage is provided 65for negative voltage measurements. 66 67If an alarm triggers, it will remain triggered until the hardware register 68is read at least once. This means that the cause for the alarm may already 69have disappeared! Note that in the current implementation, all hardware 70registers are read whenever any data is read (unless it is less than 2.0 71seconds since the last update). This means that you can easily miss 72once-only alarms. 73 74The ADM1026 measures continuously. Analog inputs are measured about 4 75times a second. Fan speed measurement time depends on fan speed and 76divisor. It can take as long as 1.5 seconds to measure all fan speeds. 77 78The ADM1026 has the ability to automatically control fan speed based on the 79temperature sensor inputs. Both the PWM output and the DAC output can be 80used to control fan speed. Usually only one of these two outputs will be 81used. Write the minimum PWM or DAC value to the appropriate control 82register. Then set the low temperature limit in the tmin values for each 83temperature sensor. The range of control is fixed at 20 °C, and the 84largest difference between current and tmin of the temperature sensors sets 85the control output. See the datasheet for several example circuits for 86controlling fan speed with the PWM and DAC outputs. The fan speed sensors 87do not have PWM compensation, so it is probably best to control the fan 88voltage from the power lead rather than on the ground lead. 89 90The datasheet shows an example application with VID signals attached to 91GPIO lines. Unfortunately, the chip may not be connected to the VID lines 92in this way. The driver assumes that the chips *is* connected this way to 93get a VID voltage. 94