cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

adm1026.rst (4582B)


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