code:
Kernel driver lm93
==================

Supported chips:

  * National Semiconductor LM93

    Prefix 'lm93'

    Addresses scanned: I2C 0x2c-0x2e

    Datasheet: http://www.national.com/ds.cgi/LM/LM93.pdf

  * National Semiconductor LM94

    Prefix 'lm94'

    Addresses scanned: I2C 0x2c-0x2e

    Datasheet: http://www.national.com/ds.cgi/LM/LM94.pdf

Authors:
	- Mark M. Hoffman <mhoffman@lightlink.com>
	- Ported to 2.6 by Eric J. Bowersox <ericb@aspsys.com>
	- Adapted to 2.6.20 by Carsten Emde <ce@osadl.org>
	- Modified for mainline integration by Hans J. Koch <hjk@hansjkoch.de>

Module Parameters
-----------------

* init: integer
  Set to non-zero to force some initializations (default is 0).
* disable_block: integer
  A "0" allows SMBus block data transactions if the host supports them.  A "1"
  disables SMBus block data transactions.  The default is 0.
* vccp_limit_type: integer array (2)
  Configures in7 and in8 limit type, where 0 means absolute and non-zero
  means relative.  "Relative" here refers to "Dynamic Vccp Monitoring using
  VID" from the datasheet.  It greatly simplifies the interface to allow
  only one set of limits (absolute or relative) to be in operation at a
  time (even though the hardware is capable of enabling both).  There's
  not a compelling use case for enabling both at once, anyway.  The default
  is "0,0".
* vid_agtl: integer
  A "0" configures the VID pins for V(ih) = 2.1V min, V(il) = 0.8V max.
  A "1" configures the VID pins for V(ih) = 0.8V min, V(il) = 0.4V max.
  (The latter setting is referred to as AGTL+ Compatible in the datasheet.)
  I.e. this parameter controls the VID pin input thresholds; if your VID
  inputs are not working, try changing this.  The default value is "0".

Hardware Description
--------------------

(from the datasheet)

The LM93 hardware monitor has a two wire digital interface compatible with
SMBus 2.0. Using an 8-bit ADC, the LM93 measures the temperature of two remote
diode connected transistors as well as its own die and 16 power supply
voltages. To set fan speed, the LM93 has two PWM outputs that are each
controlled by up to four temperature zones. The fancontrol algorithm is lookup
table based. The LM93 includes a digital filter that can be invoked to smooth
temperature readings for better control of fan speed. The LM93 has four
tachometer inputs to measure fan speed. Limit and status registers for all
measured values are included. The LM93 builds upon the functionality of
previous motherboard management ASICs and uses some of the LM85's features
(i.e. smart tachometer mode). It also adds measurement and control support
for dynamic Vccp monitoring and PROCHOT. It is designed to monitor a dual
processor Xeon class motherboard with a minimum of external components.

LM94 is also supported in LM93 compatible mode. Extra sensors and features of
LM94 are not supported.

User Interface
--------------

#PROCHOT
^^^^^^^^

The LM93 can monitor two #PROCHOT signals.  The results are found in the
sysfs files prochot1, prochot2, prochot1_avg, prochot2_avg, prochot1_max,
and prochot2_max.  prochot1_max and prochot2_max contain the user limits
for #PROCHOT1 and #PROCHOT2, respectively.  prochot1 and prochot2 contain
the current readings for the most recent complete time interval.  The
value of prochot1_avg and prochot2_avg is something like a 2 period
exponential moving average (but not quite - check the datasheet). Note
that this third value is calculated by the chip itself.  All values range
from 0-255 where 0 indicates no throttling, and 255 indicates > 99.6%.

The monitoring intervals for the two #PROCHOT signals is also configurable.
These intervals can be found in the sysfs files prochot1_interval and
prochot2_interval.  The values in these files specify the intervals for
#P1_PROCHOT and #P2_PROCHOT, respectively.  Selecting a value not in this
list will cause the driver to use the next largest interval.  The available
intervals are (in seconds):

#PROCHOT intervals:
	0.73, 1.46, 2.9, 5.8, 11.7, 23.3, 46.6, 93.2, 186, 372

It is possible to configure the LM93 to logically short the two #PROCHOT
signals.  I.e. when #P1_PROCHOT is asserted, the LM93 will automatically
assert #P2_PROCHOT, and vice-versa.  This mode is enabled by writing a
non-zero integer to the sysfs file prochot_short.

The LM93 can also override the #PROCHOT pins by driving a PWM signal onto
one or both of them.  When overridden, the signal has a period of 3.56 ms,
a minimum pulse width of 5 clocks (at 22.5kHz => 6.25% duty cycle), and
a maximum pulse width of 80 clocks (at 22.5kHz => 99.88% duty cycle).

The sysfs files prochot1_override and prochot2_override contain boolean
integers which enable or disable the override function for #P1_PROCHOT and
#P2_PROCHOT, respectively.  The sysfs file prochot_override_duty_cycle
contains a value controlling the duty cycle for the PWM signal used when
the override function is enabled.  This value ranges from 0 to 15, with 0
indicating minimum duty cycle and 15 indicating maximum.

#VRD_HOT
^^^^^^^^

The LM93 can monitor two #VRD_HOT signals. The results are found in the
sysfs files vrdhot1 and vrdhot2. There is one value per file: a boolean for
which 1 indicates #VRD_HOT is asserted and 0 indicates it is negated. These
files are read-only.

Smart Tach Mode (from the datasheet)::

	If a fan is driven using a low-side drive PWM, the tachometer
	output of the fan is corrupted. The LM93 includes smart tachometer
	circuitry that allows an accurate tachometer reading to be
	achieved despite the signal corruption.  In smart tach mode all
	four signals are measured within 4 seconds.

Smart tach mode is enabled by the driver by writing 1 or 2 (associating the
fan tachometer with a pwm) to the sysfs file fan<n>_smart_tach.  A zero
will disable the function for that fan.  Note that Smart tach mode cannot be
enabled if the PWM output frequency is 22500 Hz (see below).

Manual PWM
^^^^^^^^^^

The LM93 has a fixed or override mode for the two PWM outputs (although, there
are still some conditions that will override even this mode - see section
15.10.6 of the datasheet for details.)  The sysfs files pwm1_override
and pwm2_override are used to enable this mode; each is a boolean integer
where 0 disables and 1 enables the manual control mode.  The sysfs files pwm1
and pwm2 are used to set the manual duty cycle; each is an integer (0-255)
where 0 is 0% duty cycle, and 255 is 100%.  Note that the duty cycle values
are constrained by the hardware. Selecting a value which is not available
will cause the driver to use the next largest value.  Also note: when manual
PWM mode is disabled, the value of pwm1 and pwm2 indicates the current duty
cycle chosen by the h/w.

PWM Output Frequency
^^^^^^^^^^^^^^^^^^^^

The LM93 supports several different frequencies for the PWM output channels.
The sysfs files pwm1_freq and pwm2_freq are used to select the frequency. The
frequency values are constrained by the hardware.  Selecting a value which is
not available will cause the driver to use the next largest value.  Also note
that this parameter has implications for the Smart Tach Mode (see above).

PWM Output Frequencies (in Hz):
	12, 36, 48, 60, 72, 84, 96, 22500 (default)

Automatic PWM
^^^^^^^^^^^^^

The LM93 is capable of complex automatic fan control, with many different
points of configuration.  To start, each PWM output can be bound to any
combination of eight control sources.  The final PWM is the largest of all
individual control sources to which the PWM output is bound.

The eight control sources are: temp1-temp4 (aka "zones" in the datasheet),
#PROCHOT 1 & 2, and #VRDHOT 1 & 2.  The bindings are expressed as a bitmask
in the sysfs files pwm<n>_auto_channels, where a "1" enables the binding, and
a "0" disables it. The h/w default is 0x0f (all temperatures bound).

	====== ===========
	0x01   Temp 1
	0x02   Temp 2
	0x04   Temp 3
	0x08   Temp 4
	0x10   #PROCHOT 1
	0x20   #PROCHOT 2
	0x40   #VRDHOT 1
	0x80   #VRDHOT 2
	====== ===========

The function y = f(x) takes a source temperature x to a PWM output y.  This
function of the LM93 is derived from a base temperature and a table of 12
temperature offsets.  The base temperature is expressed in degrees C in the
sysfs files temp<n>_auto_base.  The offsets are expressed in cumulative
degrees C, with the value of offset <i> for temperature value <n> being
contained in the file temp<n>_auto_offset<i>.  E.g. if the base temperature
is 40C:

     ========== ======================= =============== =======
     offset #	temp<n>_auto_offset<i>	range		pwm
     ========== ======================= =============== =======
	 1		0		-		 25.00%
	 2		0		-		 28.57%
	 3		1		40C - 41C	 32.14%
	 4		1		41C - 42C	 35.71%
	 5		2		42C - 44C	 39.29%
	 6		2		44C - 46C	 42.86%
	 7		2		48C - 50C	 46.43%
	 8		2		50C - 52C	 50.00%
	 9		2		52C - 54C	 53.57%
	10		2		54C - 56C	 57.14%
	11		2		56C - 58C	 71.43%
	12		2		58C - 60C	 85.71%
	-		-		> 60C		100.00%
     ========== ======================= =============== =======

Valid offsets are in the range 0C <= x <= 7.5C in 0.5C increments.

There is an independent base temperature for each temperature channel. Note,
however, there are only two tables of offsets: one each for temp[12] and
temp[34].  Therefore, any change to e.g. temp1_auto_offset<i> will also
affect temp2_auto_offset<i>.

The LM93 can also apply hysteresis to the offset table, to prevent unwanted
oscillation between two steps in the offsets table.  These values are found in
the sysfs files temp<n>_auto_offset_hyst.  The value in this file has the
same representation as in temp<n>_auto_offset<i>.

If a temperature reading falls below the base value for that channel, the LM93
will use the minimum PWM value.  These values are found in the sysfs files
temp<n>_auto_pwm_min.  Note, there are only two minimums: one each for temp[12]
and temp[34].  Therefore, any change to e.g. temp1_auto_pwm_min will also
affect temp2_auto_pwm_min.

PWM Spin-Up Cycle
^^^^^^^^^^^^^^^^^

A spin-up cycle occurs when a PWM output is commanded from 0% duty cycle to
some value > 0%.  The LM93 supports a minimum duty cycle during spin-up.  These
values are found in the sysfs files pwm<n>_auto_spinup_min. The value in this
file has the same representation as other PWM duty cycle values. The
duration of the spin-up cycle is also configurable.  These values are found in
the sysfs files pwm<n>_auto_spinup_time. The value in this file is
the spin-up time in seconds.  The available spin-up times are constrained by
the hardware.  Selecting a value which is not available will cause the driver
to use the next largest value.

Spin-up Durations:
	0 (disabled, h/w default), 0.1, 0.25, 0.4, 0.7, 1.0, 2.0, 4.0

#PROCHOT and #VRDHOT PWM Ramping
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If the #PROCHOT or #VRDHOT signals are asserted while bound to a PWM output
channel, the LM93 will ramp the PWM output up to 100% duty cycle in discrete
steps. The duration of each step is configurable. There are two files, with
one value each in seconds: pwm_auto_prochot_ramp and pwm_auto_vrdhot_ramp.
The available ramp times are constrained by the hardware.  Selecting a value
which is not available will cause the driver to use the next largest value.

Ramp Times:
	0 (disabled, h/w default) to 0.75 in 0.05 second intervals

Fan Boost
^^^^^^^^^

For each temperature channel, there is a boost temperature: if the channel
exceeds this limit, the LM93 will immediately drive both PWM outputs to 100%.
This limit is expressed in degrees C in the sysfs files temp<n>_auto_boost.
There is also a hysteresis temperature for this function: after the boost
limit is reached, the temperature channel must drop below this value before
the boost function is disabled.  This temperature is also expressed in degrees
C in the sysfs files temp<n>_auto_boost_hyst.

GPIO Pins
^^^^^^^^^

The LM93 can monitor the logic level of four dedicated GPIO pins as well as the
four tach input pins.  GPIO0-GPIO3 correspond to (fan) tach 1-4, respectively.
All eight GPIOs are read by reading the bitmask in the sysfs file gpio.  The
LSB is GPIO0, and the MSB is GPIO7.

LM93 Unique sysfs Files
-----------------------

=========================== ===============================================
file			    description
=========================== ===============================================
prochot<n>		    current #PROCHOT %
prochot<n>_avg		    moving average #PROCHOT %
prochot<n>_max		    limit #PROCHOT %
prochot_short		    enable or disable logical #PROCHOT pin short
prochot<n>_override	    force #PROCHOT assertion as PWM
prochot_override_duty_cycle duty cycle for the PWM signal used when
			    #PROCHOT is overridden
prochot<n>_interval	    #PROCHOT PWM sampling interval
vrdhot<n>		    0 means negated, 1 means asserted
fan<n>_smart_tach	    enable or disable smart tach mode
pwm<n>_auto_channels	    select control sources for PWM outputs
pwm<n>_auto_spinup_min	    minimum duty cycle during spin-up
pwm<n>_auto_spinup_time	    duration of spin-up
pwm_auto_prochot_ramp	    ramp time per step when #PROCHOT asserted
pwm_auto_vrdhot_ramp	    ramp time per step when #VRDHOT asserted
temp<n>_auto_base	    temperature channel base
temp<n>_auto_offset[1-12]   temperature channel offsets
temp<n>_auto_offset_hyst    temperature channel offset hysteresis
temp<n>_auto_boost	    temperature channel boost (PWMs to 100%)
			    limit
temp<n>_auto_boost_hyst     temperature channel boost hysteresis
gpio			    input state of 8 GPIO pins; read-only
=========================== ===============================================


code:
Kernel driver lm95234
=====================

Supported chips:

  * National Semiconductor / Texas Instruments LM95233

    Addresses scanned: I2C 0x18, 0x2a, 0x2b

    Datasheet: Publicly available at the Texas Instruments website

	       https://www.ti.com/product/lm95233

  * National Semiconductor / Texas Instruments LM95234

    Addresses scanned: I2C 0x18, 0x4d, 0x4e

    Datasheet: Publicly available at the Texas Instruments website

	       https://www.ti.com/product/lm95234

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

LM95233 and LM95234 are 11-bit digital temperature sensors with a 2-wire
System Management Bus (SMBus) interface and TrueTherm technology
that can very accurately monitor the temperature of two (LM95233)
or four (LM95234) remote diodes as well as its own temperature.
The remote diodes can be external devices such as microprocessors,
graphics processors or diode-connected 2N3904s. The chip's TruTherm
beta compensation technology allows sensing of 90 nm or 65 nm process
thermal diodes accurately.

All temperature values are given in millidegrees Celsius. Temperature
is provided within a range of -127 to +255 degrees (+127.875 degrees for
the internal sensor). Resolution depends on temperature input and range.

Each sensor has its own maximum limit, but the hysteresis is common to all
channels. The hysteresis is configurable with the tem1_max_hyst attribute and
affects the hysteresis on all channels. The first two external sensors also
have a critical limit.

The lm95234 driver can change its update interval to a fixed set of values.
It will round up to the next selectable interval. See the datasheet for exact
values. Reading sensor values more often will do no harm, but will return
'old' values.

repo_name: angery/linux


code:
Kernel driver lm95245
=====================

Supported chips:

  * TI LM95235

    Addresses scanned: I2C 0x18, 0x29, 0x4c

    Datasheet: Publicly available at the TI website

	       https://www.ti.com/lit/ds/symlink/lm95235.pdf

  * TI / National Semiconductor LM95245

    Addresses scanned: I2C 0x18, 0x19, 0x29, 0x4c, 0x4d

    Datasheet: Publicly available at the TI website

	       https://www.ti.com/lit/ds/symlink/lm95245.pdf

Author: Alexander Stein <alexander.stein@systec-electronic.com>

Description
-----------

LM95235 and LM95245 are 11-bit digital temperature sensors with a 2-wire System
Management Bus (SMBus) interface and TruTherm technology that can monitor
the temperature of a remote diode as well as its own temperature.
The chips can be used to very accurately monitor the temperature of
external devices such as microprocessors.

All temperature values are given in millidegrees Celsius. Local temperature
is given within a range of -127 to +127.875 degrees. Remote temperatures are
given within a range of -127 to +255 degrees. Resolution depends on
temperature input and range.

Each sensor has its own critical limit. Additionally, there is a relative
hysteresis value common to both critical limits. To make life easier to
user-space applications, two absolute values are exported, one for each
channel, but these values are of course linked. Only the local hysteresis
can be set from user-space, and the same delta applies to the remote
hysteresis.

The lm95245 driver can change its update interval to a fixed set of values.
It will round up to the next selectable interval. See the datasheet for exact
values. Reading sensor values more often will do no harm, but will return
'old' values.


code:
Kernel Driver Lochnagar
=======================

Supported systems:
  * Cirrus Logic : Lochnagar 2

Author: Lucas A. Tanure Alves

Description
-----------

Lochnagar 2 features built-in Current Monitor circuitry that allows for the
measurement of both voltage and current on up to eight of the supply voltage
rails provided to the minicards. The Current Monitor does not require any
hardware modifications or external circuitry to operate.

The current and voltage measurements are obtained through the standard register
map interface to the Lochnagar board controller, and can therefore be monitored
by software.

Sysfs attributes
----------------

======================= =======================================================
temp1_input             The Lochnagar board temperature (milliCelsius)
in0_input               Measured voltage for DBVDD1 (milliVolts)
in0_label               "DBVDD1"
curr1_input             Measured current for DBVDD1 (milliAmps)
curr1_label             "DBVDD1"
power1_average          Measured average power for DBVDD1 (microWatts)
power1_average_interval Power averaging time input valid from 1 to 1708mS
power1_label            "DBVDD1"
in1_input               Measured voltage for 1V8 DSP (milliVolts)
in1_label               "1V8 DSP"
curr2_input             Measured current for 1V8 DSP (milliAmps)
curr2_label             "1V8 DSP"
power2_average          Measured average power for 1V8 DSP (microWatts)
power2_average_interval Power averaging time input valid from 1 to 1708mS
power2_label            "1V8 DSP"
in2_input               Measured voltage for 1V8 CDC (milliVolts)
in2_label               "1V8 CDC"
curr3_input             Measured current for 1V8 CDC (milliAmps)
curr3_label             "1V8 CDC"
power3_average          Measured average power for 1V8 CDC (microWatts)
power3_average_interval Power averaging time input valid from 1 to 1708mS
power3_label            "1V8 CDC"
in3_input               Measured voltage for VDDCORE DSP (milliVolts)
in3_label               "VDDCORE DSP"
curr4_input             Measured current for VDDCORE DSP (milliAmps)
curr4_label             "VDDCORE DSP"
power4_average          Measured average power for VDDCORE DSP (microWatts)
power4_average_interval Power averaging time input valid from 1 to 1708mS
power4_label            "VDDCORE DSP"
in4_input               Measured voltage for AVDD 1V8 (milliVolts)
in4_label               "AVDD 1V8"
curr5_input             Measured current for AVDD 1V8 (milliAmps)
curr5_label             "AVDD 1V8"
power5_average          Measured average power for AVDD 1V8 (microWatts)
power5_average_interval Power averaging time input valid from 1 to 1708mS
power5_label            "AVDD 1V8"
curr6_input             Measured current for SYSVDD (milliAmps)
curr6_label             "SYSVDD"
power6_average          Measured average power for SYSVDD (microWatts)
power6_average_interval Power averaging time input valid from 1 to 1708mS
power6_label            "SYSVDD"
in6_input               Measured voltage for VDDCORE CDC (milliVolts)
in6_label               "VDDCORE CDC"
curr7_input             Measured current for VDDCORE CDC (milliAmps)
curr7_label             "VDDCORE CDC"
power7_average          Measured average power for VDDCORE CDC (microWatts)
power7_average_interval Power averaging time input valid from 1 to 1708mS
power7_label            "VDDCORE CDC"
in7_input               Measured voltage for MICVDD (milliVolts)
in7_label               "MICVDD"
curr8_input             Measured current for MICVDD (milliAmps)
curr8_label             "MICVDD"
power8_average          Measured average power for MICVDD (microWatts)
power8_average_interval Power averaging time input valid from 1 to 1708mS
power8_label            "MICVDD"
======================= =======================================================

Note:
    It is not possible to measure voltage on the SYSVDD rail.


code:
.. SPDX-License-Identifier: GPL-2.0

Kernel driver lt7182s
=====================

Supported chips:

  * ADI LT7182S

    Prefix: 'lt7182s'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/lt7182s.html

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

LT7182S is a Dual Channel 6A, 20V PolyPhase Step-Down Silent Switcher with
Digital Power System Management support.

Usage Notes
-----------

This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.

Example: the following commands will load the driver for a LT7182S
at address 0x4f on I2C bus #4::

    # modprobe lt7182s
    # echo lt7182s 0x4f > /sys/bus/i2c/devices/i2c-4/new_device

It can also be instantiated by declaring an entry in device tree.

Sysfs attributes
----------------

======================= ====================================
curr[1-2]_label		"iin[12]"
curr[1-2]_input		Measured input current
curr[1-2]_max		Maximum input current
curr[1-2]_max_alarm	Current high alarm

curr[3-4]_label		"iout[1-2]"
curr[3-4]_input		Measured output current
curr[3-4]_highest	Highest measured output current
curr[3-4]_max		Maximum output current
curr[3-4]_max_alarm	Output current high alarm

in[1-2]_label		"vin[12]"
in[1-2]_input		Measured input voltage
in[1-2]_highest		Highest measured input voltage
in[1-2]_crit		Critical maximum input voltage
in[1-2]_crit_alarm	Input voltage critical high alarm
in[1-2]_min		Minimum input voltage
in[1-2]_min_alarm	Input voltage low alarm
in[1-2]_rated_min	Rated minimum input voltage
in[1-2]_rated_max	Rated maximum input voltage
in1_reset_history	Write to reset history for all attributes

in[3-5]_label		"vmon[1-3]"
in[3-5]_input		Measured voltage on ITH1/ITH2/EXTVCC pins
			Only available if enabled with MFR_ADC_CONTROL_LT7182S
			command.

in[3-4|6-7]_label	"vout[1-2]"
in[3-4|6-7]_input	Measured output voltage
in[3-4|6-7]_highest	Highest measured output voltage
in[3-4|6-7]_lcrit	Critical minimum output voltage
in[3-4|6-7]_lcrit_alarm	Output voltage critical low alarm
in[3-4|6-7]_min		Minimum output voltage
in[3-4|6-7]_max_alarm	Output voltage low alarm
in[3-4|6-7]_max		Maximum output voltage
in[3-4|6-7]_max_alarm	Output voltage high alarm
in[3-4|6-7]_crit	Critical maximum output voltage
in[3-4|6-7]_crit_alarm	Output voltage critical high alarm

power[1-2]_label	"pout[1-2]"
power[1-2]_input	Measured output power

temp1_input		Measured temperature
temp1_crit		Critical high temperature
temp1_crit_alarm	Chip temperature critical high alarm
temp1_max		Maximum temperature
temp1_max_alarm		Chip temperature high alarm
======================= ====================================


code:
Kernel driver ltc2945
=====================

Supported chips:

  * Linear Technology LTC2945

    Prefix: 'ltc2945'

    Addresses scanned: -

    Datasheet:

	https://www.analog.com/media/en/technical-documentation/data-sheets/2945fb.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

The LTC2945  is a rail-to-rail system monitor that measures current, voltage,
and power consumption.

Usage Notes
-----------

This driver does not probe for LTC2945 devices, since there is no register
which can be safely used to identify the chip. You will have to instantiate
the devices explicitly.

Example: the following will load the driver for an LTC2945 at address 0x10
on I2C bus #1::

	$ modprobe ltc2945
	$ echo ltc2945 0x10 > /sys/bus/i2c/devices/i2c-1/new_device

Sysfs entries
-------------

Voltage readings provided by this driver are reported as obtained from the ADC
registers. If a set of voltage divider resistors is installed, calculate the
real voltage by multiplying the reported value with (R1+R2)/R2, where R1 is the
value of the divider resistor against the measured voltage and R2 is the value
of the divider resistor against Ground.

Current reading provided by this driver is reported as obtained from the ADC
Current Sense register. The reported value assumes that a 1 mOhm sense resistor
is installed. If a different sense resistor is installed, calculate the real
current by dividing the reported value by the sense resistor value in mOhm.

======================= ========================================================
in1_input		VIN voltage (mV). Voltage is measured either at
			SENSE+ or VDD pin depending on chip configuration.
in1_min			Undervoltage threshold
in1_max			Overvoltage threshold
in1_lowest		Lowest measured voltage
in1_highest		Highest measured voltage
in1_reset_history	Write 1 to reset in1 history
in1_min_alarm		Undervoltage alarm
in1_max_alarm		Overvoltage alarm

in2_input		ADIN voltage (mV)
in2_min			Undervoltage threshold
in2_max			Overvoltage threshold
in2_lowest		Lowest measured voltage
in2_highest		Highest measured voltage
in2_reset_history	Write 1 to reset in2 history
in2_min_alarm		Undervoltage alarm
in2_max_alarm		Overvoltage alarm

curr1_input		SENSE current (mA)
curr1_min		Undercurrent threshold
curr1_max		Overcurrent threshold
curr1_lowest		Lowest measured current
curr1_highest		Highest measured current
curr1_reset_history	Write 1 to reset curr1 history
curr1_min_alarm		Undercurrent alarm
curr1_max_alarm		Overcurrent alarm

power1_input		Power (in uW). Power is calculated based on SENSE+/VDD
			voltage or ADIN voltage depending on chip configuration.
power1_min		Low lower threshold
power1_max		High power threshold
power1_input_lowest	Historical minimum power use
power1_input_highest	Historical maximum power use
power1_reset_history	Write 1 to reset power1 history
power1_min_alarm	Low power alarm
power1_max_alarm	High power alarm
======================= ========================================================


code:
Kernel drivers ltc2947-i2c and ltc2947-spi
==========================================

Supported chips:

  * Analog Devices LTC2947

    Prefix: 'ltc2947'

    Addresses scanned: -

    Datasheet:

        https://www.analog.com/media/en/technical-documentation/data-sheets/LTC2947.pdf

Author: Nuno Sá <nuno.sa@analog.com>

Description
___________

The LTC2947 is a high precision power and energy monitor that measures current,
voltage, power, temperature, charge and energy. The device supports both SPI
and I2C depending on the chip configuration.
The device also measures accumulated quantities as energy. It has two banks of
register's to read/set energy related values. These banks can be configured
independently to have setups like: energy1 accumulates always and enrgy2 only
accumulates if current is positive (to check battery charging efficiency for
example). The device also supports a GPIO pin that can be configured as output
to control a fan as a function of measured temperature. Then, the GPIO becomes
active as soon as a temperature reading is higher than a defined threshold. The
temp2 channel is used to control this thresholds and to read the respective
alarms.

Sysfs entries
_____________

The following attributes are supported. Limits are read-write, reset_history
is write-only and all the other attributes are read-only.

======================= ==========================================
in0_input		VP-VM voltage (mV).
in0_min			Undervoltage threshold
in0_max			Overvoltage threshold
in0_lowest		Lowest measured voltage
in0_highest		Highest measured voltage
in0_reset_history	Write 1 to reset in1 history
in0_min_alarm		Undervoltage alarm
in0_max_alarm		Overvoltage alarm
in0_label		Channel label (VP-VM)

in1_input		DVCC voltage (mV)
in1_min			Undervoltage threshold
in1_max			Overvoltage threshold
in1_lowest		Lowest measured voltage
in1_highest		Highest measured voltage
in1_reset_history	Write 1 to reset in2 history
in1_min_alarm		Undervoltage alarm
in1_max_alarm		Overvoltage alarm
in1_label		Channel label (DVCC)

curr1_input		IP-IM Sense current (mA)
curr1_min		Undercurrent threshold
curr1_max		Overcurrent threshold
curr1_lowest		Lowest measured current
curr1_highest		Highest measured current
curr1_reset_history	Write 1 to reset curr1 history
curr1_min_alarm		Undercurrent alarm
curr1_max_alarm		Overcurrent alarm
curr1_label		Channel label (IP-IM)

power1_input		Power (in uW)
power1_min		Low power threshold
power1_max		High power threshold
power1_input_lowest	Historical minimum power use
power1_input_highest	Historical maximum power use
power1_reset_history	Write 1 to reset power1 history
power1_min_alarm	Low power alarm
power1_max_alarm	High power alarm
power1_label		Channel label (Power)

temp1_input		Chip Temperature (in milliC)
temp1_min		Low temperature threshold
temp1_max		High temperature threshold
temp1_input_lowest	Historical minimum temperature use
temp1_input_highest	Historical maximum temperature use
temp1_reset_history	Write 1 to reset temp1 history
temp1_min_alarm		Low temperature alarm
temp1_max_alarm		High temperature alarm
temp1_label		Channel label (Ambient)

temp2_min		Low temperature threshold for fan control
temp2_max		High temperature threshold for fan control
temp2_min_alarm		Low temperature fan control alarm
temp2_max_alarm		High temperature fan control alarm
temp2_label		Channel label (TEMPFAN)

energy1_input		Measured energy over time (in microJoule)

energy2_input		Measured energy over time (in microJoule)
======================= ==========================================


code:
Kernel driver ltc2978
=====================

Supported chips:

  * Linear Technology LTC2972

    Prefix: 'ltc2972'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc2972.html

  * Linear Technology LTC2974

    Prefix: 'ltc2974'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc2974

  * Linear Technology LTC2975

    Prefix: 'ltc2975'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc2975

  * Linear Technology LTC2977

    Prefix: 'ltc2977'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc2977

  * Linear Technology LTC2978, LTC2978A

    Prefix: 'ltc2978'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc2978

	       https://www.analog.com/en/products/ltc2978a

  * Linear Technology LTC2979

    Prefix: 'ltc2979'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc2979

  * Linear Technology LTC2980

    Prefix: 'ltc2980'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc2980

  * Linear Technology LTC3880

    Prefix: 'ltc3880'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc3880

  * Linear Technology LTC3882

    Prefix: 'ltc3882'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc3882

  * Linear Technology LTC3883

    Prefix: 'ltc3883'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc3883

  * Linear Technology LTC3884

    Prefix: 'ltc3884'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc3884

  * Linear Technology LTC3886

    Prefix: 'ltc3886'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc3886

  * Linear Technology LTC3887

    Prefix: 'ltc3887'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc3887

  * Linear Technology LTC3889

    Prefix: 'ltc3889'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc3889

  * Linear Technology LTC7880

    Prefix: 'ltc7880'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltc7880

  * Linear Technology LTM2987

    Prefix: 'ltm2987'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltm2987

  * Linear Technology LTM4644

    Prefix: 'ltm4644'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltm4644

   * Linear Technology LTM4675

    Prefix: 'ltm4675'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltm4675

  * Linear Technology LTM4676

    Prefix: 'ltm4676'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltm4676

  * Linear Technology LTM4677

    Prefix: 'ltm4677'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltm4677

  * Linear Technology LTM4678

    Prefix: 'ltm4678'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltm4678

  * Analog Devices LTM4680

    Prefix: 'ltm4680'

    Addresses scanned: -

    Datasheet: https://www.analog.com/ltm4680

  * Analog Devices LTM4686

    Prefix: 'ltm4686'

    Addresses scanned: -

    Datasheet: https://www.analog.com/ltm4686

  * Analog Devices LTM4700

    Prefix: 'ltm4700'

    Addresses scanned: -

    Datasheet: https://www.analog.com/ltm4700

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

- LTC2974 and LTC2975 are quad digital power supply managers.
- LTC2978 is an octal power supply monitor.
- LTC2977 is a pin compatible replacement for LTC2978.
- LTC2980 is a 16-channel Power System Manager, consisting of two LTC2977
- in a single die. The chip is instantiated and reported as two separate chips
- on two different I2C bus addresses.
- LTC3880, LTC3882, LTC3886, and LTC3887 are dual output poly-phase step-down
- DC/DC controllers.
- LTC3883 is a single phase step-down DC/DC controller.
- LTM2987 is a 16-channel Power System Manager with two LTC2977 plus
- additional components on a single die. The chip is instantiated and reported
- as two separate chips on two different I2C bus addresses.
- LTM4675 is a dual 9A or single 18A μModule regulator
- LTM4676 is a dual 13A or single 26A uModule regulator.
- LTM4686 is a dual 10A or single 20A uModule regulator.

Usage Notes
-----------

This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.

Example: the following commands will load the driver for an LTC2978 at address
0x60 on I2C bus #1::

	# modprobe ltc2978
	# echo ltc2978 0x60 > /sys/bus/i2c/devices/i2c-1/new_device

Sysfs attributes
----------------

======================= ========================================================
in1_label		"vin"

in1_input		Measured input voltage.

in1_min			Minimum input voltage.

in1_max			Maximum input voltage.

			LTC2974, LTC2975, LTC2977, LTC2980, LTC2978,
			LTC2979 and LTM2987 only.

in1_lcrit		Critical minimum input voltage.

			LTC2972, LTC2974, LTC2975, LTC2977, LTC2980, LTC2978,
			LTC2979 and LTM2987 only.

in1_crit		Critical maximum input voltage.

in1_min_alarm		Input voltage low alarm.

in1_max_alarm		Input voltage high alarm.

			LTC2972, LTC2974, LTC2975, LTC2977, LTC2980, LTC2978,
			LTC2979 and LTM2987 only.

in1_lcrit_alarm		Input voltage critical low alarm.

			LTC2972, LTC2974, LTC2975, LTC2977, LTC2980, LTC2978,
			LTC2979 and LTM2987 only.

in1_crit_alarm		Input voltage critical high alarm.

in1_lowest		Lowest input voltage.

			LTC2972, LTC2974, LTC2975, LTC2977, LTC2980, LTC2978,
			and LTM2987 only.

in1_highest		Highest input voltage.

in1_reset_history	Reset input voltage history.

in[N]_label		"vout[1-8]".

			- LTC2972: N=2-3
			- LTC2974, LTC2975: N=2-5
			- LTC2977, LTC2979, LTC2980, LTM2987: N=2-9
			- LTC2978: N=2-9
			- LTC3880, LTC3882, LTC3884, LTC23886 LTC3887, LTC3889,
			  LTC7880, LTM4644, LTM4675, LTM4676, LTM4677, LTM4678,
			  LTM4680, LTM4700: N=2-3
			- LTC3883: N=2

in[N]_input		Measured output voltage.

in[N]_min		Minimum output voltage.

in[N]_max		Maximum output voltage.

in[N]_lcrit		Critical minimum output voltage.

in[N]_crit		Critical maximum output voltage.

in[N]_min_alarm		Output voltage low alarm.

in[N]_max_alarm		Output voltage high alarm.

in[N]_lcrit_alarm	Output voltage critical low alarm.

in[N]_crit_alarm	Output voltage critical high alarm.

in[N]_lowest		Lowest output voltage.

			LTC2972, LTC2974, LTC2975,and LTC2978 only.

in[N]_highest		Highest output voltage.

in[N]_reset_history	Reset output voltage history.

temp[N]_input		Measured temperature.

			- On LTC2972, temp[1-2] report external temperatures,
			  and temp 3 reports the chip temperature.
			- On LTC2974 and LTC2975, temp[1-4] report external
			  temperatures, and temp5 reports the chip temperature.
			- On LTC2977, LTC2979, LTC2980, LTC2978, and LTM2987,
			  only one temperature measurement is supported and
			  reports the chip temperature.
			- On LTC3880, LTC3882, LTC3886, LTC3887, LTC3889,
			  LTM4664, LTM4675, LTM4676, LTM4677, LTM4678, LTM4680,
			  and LTM4700, temp1 and temp2 report external
			  temperatures, and temp3 reports the chip temperature.
			- On LTC3883, temp1 reports an external temperature,
			  and temp2 reports the chip temperature.

temp[N]_min		Mimimum temperature.

			LTC2972, LTC2974, LCT2977, LTM2980, LTC2978,
			LTC2979, and LTM2987 only.

temp[N]_max		Maximum temperature.

temp[N]_lcrit		Critical low temperature.

temp[N]_crit		Critical high temperature.

temp[N]_min_alarm	Temperature low alarm.

			LTC2972, LTC2974, LTC2975, LTC2977, LTM2980, LTC2978,
			LTC2979, and LTM2987 only.

temp[N]_max_alarm	Temperature high alarm.

temp[N]_lcrit_alarm	Temperature critical low alarm.

temp[N]_crit_alarm	Temperature critical high alarm.

temp[N]_lowest		Lowest measured temperature.

			- LTC2972, LTC2974, LTC2975, LTC2977, LTM2980, LTC2978,
			  LTC2979, and LTM2987 only.
			- Not supported for chip temperature sensor on LTC2974
			  and LTC2975.

temp[N]_highest		Highest measured temperature.

			Not supported for chip temperature sensor on
			LTC2974 and LTC2975.

temp[N]_reset_history	Reset temperature history.

			Not supported for chip temperature sensor on
			LTC2974 and LTC2975.

power1_label		"pin". LTC3883 and LTC3886 only.

power1_input		Measured input power.

power[N]_label		"pout[1-4]".

			- LTC2972: N=1-2
			- LTC2974, LTC2975: N=1-4
			- LTC2977, LTC2979, LTC2980, LTM2987: Not supported
			- LTC2978: Not supported
			- LTC3880, LTC3882, LTC3884, LTC3886, LTC3887, LTC3889,
			  LTM4664, LTM4675, LTM4676, LTM4677, LTM4678, LTM4680,
			  LTM4700: N=1-2
			- LTC3883: N=2

power[N]_input		Measured output power.

curr1_label		"iin".

			LTC3880, LTC3883, LTC3884, LTC3886, LTC3887, LTC3889,
			LTM4644, LTM4675, LTM4676, LTM4677, LTM4678, LTM4680,
			and LTM4700 only.

curr1_input		Measured input current.

curr1_max		Maximum input current.

curr1_max_alarm		Input current high alarm.

curr1_highest		Highest input current.

			LTC3883 and LTC3886 only.

curr1_reset_history	Reset input current history.

			LTC3883 and LTC3886 only.

curr[N]_label		"iout[1-4]".

			- LTC2972: N-1-2
			- LTC2974, LTC2975: N=1-4
			- LTC2977, LTC2979, LTC2980, LTM2987: not supported
			- LTC2978: not supported
			- LTC3880, LTC3882, LTC3884, LTC3886, LTC3887, LTC3889,
			  LTM4664, LTM4675, LTM4676, LTM4677, LTM4678, LTM4680,
			  LTM4700: N=2-3
			- LTC3883: N=2

curr[N]_input		Measured output current.

curr[N]_max		Maximum output current.

curr[N]_crit		Critical high output current.

curr[N]_lcrit		Critical low output current.

			LTC2972, LTC2974 and LTC2975 only.

curr[N]_max_alarm	Output current high alarm.

curr[N]_crit_alarm	Output current critical high alarm.

curr[N]_lcrit_alarm	Output current critical low alarm.

			LTC2972, LTC2974 and LTC2975 only.

curr[N]_lowest		Lowest output current.

			LTC2972, LTC2974 and LTC2975 only.

curr[N]_highest		Highest output current.

curr[N]_reset_history	Reset output current history.
======================= ========================================================


code:
Kernel driver ltc2990
=====================

Supported chips:

  * Linear Technology LTC2990

    Prefix: 'ltc2990'

    Addresses scanned: -

    Datasheet: http://www.linear.com/product/ltc2990

Author:

	- Mike Looijmans <mike.looijmans@topic.nl>
	- Tom Levens <tom.levens@cern.ch>

Description
-----------

LTC2990 is a Quad I2C Voltage, Current and Temperature Monitor.
The chip's inputs can measure 4 voltages, or two inputs together (1+2 and 3+4)
can be combined to measure a differential voltage, which is typically used to
measure current through a series resistor, or a temperature with an external
diode.

Usage Notes
-----------

This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.

Sysfs attributes
----------------

============= ==================================================
in0_input     Voltage at Vcc pin in millivolt (range 2.5V to 5V)
temp1_input   Internal chip temperature in millidegrees Celsius
============= ==================================================

A subset of the following attributes are visible, depending on the measurement
mode of the chip.

============= ==========================================================
in[1-4]_input Voltage at V[1-4] pin in millivolt
temp2_input   External temperature sensor TR1 in millidegrees Celsius
temp3_input   External temperature sensor TR2 in millidegrees Celsius
curr1_input   Current in mA across V1-V2 assuming a 1mOhm sense resistor
curr2_input   Current in mA across V3-V4 assuming a 1mOhm sense resistor
============= ==========================================================

The "curr*_input" measurements actually report the voltage drop across the
input pins in microvolts. This is equivalent to the current through a 1mOhm
sense resistor. Divide the reported value by the actual sense resistor value
in mOhm to get the actual value.


code:
.. SPDX-License-Identifier: GPL-2.0

Kernel driver ltc2992
=====================

Supported chips:
  * Linear Technology LTC2992
    Prefix: 'ltc2992'
    Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ltc2992.pdf

Author: Alexandru Tachici <alexandru.tachici@analog.com>

Description
-----------

This driver supports hardware monitoring for Linear Technology LTC2992 power monitor.

LTC2992 is a rail-to-rail system monitor that measures current,
voltage, and power of two supplies.

Two ADCs simultaneously measure each supply's current. A third ADC monitors
the input voltages and four auxiliary external voltages.

Sysfs entries
-------------

The following attributes are supported. Limits are read-write,
all other attributes are read-only.

in_reset_history	Reset all highest/lowest values.

inX_input		Measured voltage.
inX_lowest		Minimum measured voltage.
inX_highest		Maximum measured voltage.
inX_min			Minimum voltage allowed.
inX_max			Maximum voltage allowed.
inX_min_alarm		An undervoltage occurred. Cleared on read.
inX_max_alarm		An overvoltage occurred. Cleared on read.

currX_input		Measured current.
currX_lowest		Minimum measured current.
currX_highest		Maximum measured current.
currX_min		Minimum current allowed.
currX_max		Maximum current allowed.
currX_min_alarm		An undercurrent occurred. Cleared on read.
currX_max_alarm		An overcurrent occurred. Cleared on read.

powerX_input		Measured power.
powerX_input_lowest	Minimum measured voltage.
powerX_input_highest	Maximum measured voltage.
powerX_min		Minimum power.
powerX_max		Maximum power.
powerX_min_alarm	An underpower occurred. Cleared on read.
powerX_max_alarm	An overpower occurred. Cleared on read.


code:
Kernel driver ltc3815
=====================

Supported chips:

  * Linear Technology LTC3815

    Prefix: 'ltc3815'

    Addresses scanned: -

    Datasheet: http://www.linear.com/product/ltc3815

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

LTC3815 is a Monolithic Synchronous DC/DC Step-Down Converter.

Usage Notes
-----------

This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.

Example: the following commands will load the driver for an LTC3815
at address 0x20 on I2C bus #1::

	# modprobe ltc3815
	# echo ltc3815 0x20 > /sys/bus/i2c/devices/i2c-1/new_device

Sysfs attributes
----------------

======================= =======================================================
in1_label		"vin"
in1_input		Measured input voltage.
in1_alarm		Input voltage alarm.
in1_highest		Highest input voltage.
in1_reset_history	Reset input voltage history.

in2_label		"vout1".
in2_input		Measured output voltage.
in2_alarm		Output voltage alarm.
in2_highest		Highest output voltage.
in2_reset_history	Reset output voltage history.

temp1_input		Measured chip temperature.
temp1_alarm		Temperature alarm.
temp1_highest		Highest measured temperature.
temp1_reset_history	Reset temperature history.

curr1_label		"iin".
curr1_input		Measured input current.
curr1_highest		Highest input current.
curr1_reset_history	Reset input current history.

curr2_label		"iout1".
curr2_input		Measured output current.
curr2_alarm		Output current alarm.
curr2_highest		Highest output current.
curr2_reset_history	Reset output current history.
======================= =======================================================


code:
Kernel driver ltc4151
=====================

Supported chips:

  * Linear Technology LTC4151

    Prefix: 'ltc4151'

    Addresses scanned: -

    Datasheet:

	http://www.linear.com/docs/Datasheet/4151fc.pdf

Author: Per Dalen <per.dalen@appeartv.com>

Description
-----------

The LTC4151 is a High Voltage I2C Current and Voltage Monitor.

Usage Notes
-----------

This driver does not probe for LTC4151 devices, since there is no register
which can be safely used to identify the chip. You will have to instantiate
the devices explicitly.

Example: the following will load the driver for an LTC4151 at address 0x6f
on I2C bus #0::

	# modprobe ltc4151
	# echo ltc4151 0x6f > /sys/bus/i2c/devices/i2c-0/new_device

Sysfs entries
-------------

Voltage readings provided by this driver are reported as obtained from the ADIN
and VIN registers.

Current reading provided by this driver is reported as obtained from the Current
Sense register. The reported value assumes that a 1 mOhm sense resistor is
installed.

======================= ==================
in1_input		VDIN voltage (mV)

in2_input		ADIN voltage (mV)

curr1_input		SENSE current (mA)
======================= ==================


code:
Kernel driver ltc4215
=====================

Supported chips:

  * Linear Technology LTC4215

    Prefix: 'ltc4215'

    Addresses scanned: 0x44

    Datasheet:

	http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1003,C1006,C1163,P17572,D12697

Author: Ira W. Snyder <iws@ovro.caltech.edu>

Description
-----------

The LTC4215 controller allows a board to be safely inserted and removed
from a live backplane.

Usage Notes
-----------

This driver does not probe for LTC4215 devices, due to the fact that some
of the possible addresses are unfriendly to probing. You will have to
instantiate the devices explicitly.

Example: the following will load the driver for an LTC4215 at address 0x44
on I2C bus #0::

	$ modprobe ltc4215
	$ echo ltc4215 0x44 > /sys/bus/i2c/devices/i2c-0/new_device

Sysfs entries
-------------

The LTC4215 has built-in limits for overvoltage, undervoltage, and
undercurrent warnings. This makes it very likely that the reference
circuit will be used.

======================= =========================
in1_input		input voltage
in2_input		output voltage

in1_min_alarm		input undervoltage alarm
in1_max_alarm		input overvoltage alarm

curr1_input		current
curr1_max_alarm		overcurrent alarm

power1_input		power usage
power1_alarm		power bad alarm
======================= =========================


code:
Kernel driver ltc4245
=====================

Supported chips:

  * Linear Technology LTC4245

    Prefix: 'ltc4245'

    Addresses scanned: 0x20-0x3f

    Datasheet:

	http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1003,C1006,C1140,P19392,D13517

Author: Ira W. Snyder <iws@ovro.caltech.edu>

Description
-----------

The LTC4245 controller allows a board to be safely inserted and removed
from a live backplane in multiple supply systems such as CompactPCI and
PCI Express.

Usage Notes
-----------

This driver does not probe for LTC4245 devices, due to the fact that some
of the possible addresses are unfriendly to probing. You will have to
instantiate the devices explicitly.

Example: the following will load the driver for an LTC4245 at address 0x23
on I2C bus #1::

	$ modprobe ltc4245
	$ echo ltc4245 0x23 > /sys/bus/i2c/devices/i2c-1/new_device

Sysfs entries
-------------

The LTC4245 has built-in limits for over and under current warnings. This
makes it very likely that the reference circuit will be used.

This driver uses the values in the datasheet to change the register values
into the values specified in the sysfs-interface document. The current readings
rely on the sense resistors listed in Table 2: "Sense Resistor Values".

======================= =======================================================
in1_input		12v input voltage (mV)
in2_input		5v  input voltage (mV)
in3_input		3v  input voltage (mV)
in4_input		Vee (-12v) input voltage (mV)

in1_min_alarm		12v input undervoltage alarm
in2_min_alarm		5v  input undervoltage alarm
in3_min_alarm		3v  input undervoltage alarm
in4_min_alarm		Vee (-12v) input undervoltage alarm

curr1_input		12v current (mA)
curr2_input		5v  current (mA)
curr3_input		3v  current (mA)
curr4_input		Vee (-12v) current (mA)

curr1_max_alarm		12v overcurrent alarm
curr2_max_alarm		5v  overcurrent alarm
curr3_max_alarm		3v  overcurrent alarm
curr4_max_alarm		Vee (-12v) overcurrent alarm

in5_input		12v output voltage (mV)
in6_input		5v  output voltage (mV)
in7_input		3v  output voltage (mV)
in8_input		Vee (-12v) output voltage (mV)

in5_min_alarm		12v output undervoltage alarm
in6_min_alarm		5v  output undervoltage alarm
in7_min_alarm		3v  output undervoltage alarm
in8_min_alarm		Vee (-12v) output undervoltage alarm

in9_input		GPIO voltage data (see note 1)
in10_input		GPIO voltage data (see note 1)
in11_input		GPIO voltage data (see note 1)

power1_input		12v power usage (mW)
power2_input		5v  power usage (mW)
power3_input		3v  power usage (mW)
power4_input		Vee (-12v) power usage (mW)
======================= =======================================================

Note 1
------

If you have NOT configured the driver to sample all GPIO pins as analog
voltages, then the in10_input and in11_input sysfs attributes will not be
created. The driver will sample the GPIO pin that is currently connected to the
ADC as an analog voltage, and report the value in in9_input.

If you have configured the driver to sample all GPIO pins as analog voltages,
then they will be sampled in round-robin fashion. If userspace reads too
slowly, -EAGAIN will be returned when you read the sysfs attribute containing
the sensor reading.

The LTC4245 chip can be configured to sample all GPIO pins with two methods:

1) platform data -- see include/linux/platform_data/ltc4245.h
2) OF device tree -- add the "ltc4245,use-extra-gpios" property to each chip

The default mode of operation is to sample a single GPIO pin.


code:
Kernel driver ltc4260
=====================

Supported chips:

  * Linear Technology LTC4260

    Prefix: 'ltc4260'

    Addresses scanned: -

    Datasheet:

	http://cds.linear.com/docs/en/datasheet/4260fc.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

The LTC4260 Hot Swap controller allows a board to be safely inserted
and removed from a live backplane.

Usage Notes
-----------

This driver does not probe for LTC4260 devices, since there is no register
which can be safely used to identify the chip. You will have to instantiate
the devices explicitly.

Example: the following will load the driver for an LTC4260 at address 0x10
on I2C bus #1::

	$ modprobe ltc4260
	$ echo ltc4260 0x10 > /sys/bus/i2c/devices/i2c-1/new_device

Sysfs entries
-------------

Voltage readings provided by this driver are reported as obtained from the ADC
registers. If a set of voltage divider resistors is installed, calculate the
real voltage by multiplying the reported value with (R1+R2)/R2, where R1 is the
value of the divider resistor against the measured voltage and R2 is the value
of the divider resistor against Ground.

Current reading provided by this driver is reported as obtained from the ADC
Current Sense register. The reported value assumes that a 1 mOhm sense resistor
is installed. If a different sense resistor is installed, calculate the real
current by dividing the reported value by the sense resistor value in mOhm.

======================= =======================
in1_input		SOURCE voltage (mV)
in1_min_alarm		Undervoltage alarm
in1_max_alarm		Overvoltage alarm

in2_input		ADIN voltage (mV)
in2_alarm		Power bad alarm

curr1_input		SENSE current (mA)
curr1_alarm		SENSE overcurrent alarm
======================= =======================


code:
Kernel driver ltc4261
=====================

Supported chips:

  * Linear Technology LTC4261

    Prefix: 'ltc4261'

    Addresses scanned: -

    Datasheet:

	http://cds.linear.com/docs/Datasheet/42612fb.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

The LTC4261/LTC4261-2 negative voltage Hot Swap controllers allow a board
to be safely inserted and removed from a live backplane.

Usage Notes
-----------

This driver does not probe for LTC4261 devices, since there is no register
which can be safely used to identify the chip. You will have to instantiate
the devices explicitly.

Example: the following will load the driver for an LTC4261 at address 0x10
on I2C bus #1::

	$ modprobe ltc4261
	$ echo ltc4261 0x10 > /sys/bus/i2c/devices/i2c-1/new_device

Sysfs entries
-------------

Voltage readings provided by this driver are reported as obtained from the ADC
registers. If a set of voltage divider resistors is installed, calculate the
real voltage by multiplying the reported value with (R1+R2)/R2, where R1 is the
value of the divider resistor against the measured voltage and R2 is the value
of the divider resistor against Ground.

Current reading provided by this driver is reported as obtained from the ADC
Current Sense register. The reported value assumes that a 1 mOhm sense resistor
is installed. If a different sense resistor is installed, calculate the real
current by dividing the reported value by the sense resistor value in mOhm.

The chip has two voltage sensors, but only one set of voltage alarm status bits.
In many many designs, those alarms are associated with the ADIN2 sensor, due to
the proximity of the ADIN2 pin to the OV pin. ADIN2 is, however, not available
on all chip variants. To ensure that the alarm condition is reported to the user,
report it with both voltage sensors.

======================= =============================
in1_input		ADIN2 voltage (mV)
in1_min_alarm		ADIN/ADIN2 Undervoltage alarm
in1_max_alarm		ADIN/ADIN2 Overvoltage alarm

in2_input		ADIN voltage (mV)
in2_min_alarm		ADIN/ADIN2 Undervoltage alarm
in2_max_alarm		ADIN/ADIN2 Overvoltage alarm

curr1_input		SENSE current (mA)
curr1_alarm		SENSE overcurrent alarm
======================= =============================


code:
.. SPDX-License-Identifier: GPL-2.0-or-later

Kernel driver max127
====================

Author:

  * Tao Ren <rentao.bupt@gmail.com>

Supported chips:

  * Maxim MAX127

    Prefix: 'max127'

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX127-MAX128.pdf

Description
-----------

The MAX127 is a multirange, 12-bit data acquisition system (DAS) providing
8 analog input channels that are independently software programmable for
a variety of ranges. The available ranges are {0,5V}, {0,10V}, {-5,5V}
and {-10,10V}.

The MAX127 features a 2-wire, I2C-compatible serial interface that allows
communication among multiple devices using SDA and SCL lines.

Sysfs interface
---------------

  ============== ==============================================================
  in[0-7]_input  The input voltage (in mV) of the corresponding channel.
		 RO

  in[0-7]_min    The lower input limit (in mV) for the corresponding channel.
		 ADC range and LSB will be updated when the limit is changed.
		 For the MAX127, it will be adjusted to -10000, -5000, or 0.
		 RW

  in[0-7]_max    The higher input limit (in mV) for the corresponding channel.
		 ADC range and LSB will be updated when the limit is changed.
		 For the MAX127, it will be adjusted to 0, 5000, or 10000.
		 RW
  ============== ==============================================================


code:
.. SPDX-License-Identifier: GPL-2.0

Kernel driver max15301
======================

Supported chips:

  * Maxim MAX15301

    Prefix: 'max15301', 'bmr461'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX15301.pdf

Author: Erik Rosen <erik.rosen@metormote.com>

Description
-----------

This driver supports hardware monitoring for Maxim MAX15301 controller chip and
compatible modules.

The driver is a client driver to the core PMBus driver. Please see
Documentation/hwmon/pmbus.rst and Documentation.hwmon/pmbus-core for details
on PMBus client drivers.

Usage Notes
-----------

This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.

Platform data support
---------------------

The driver supports standard PMBus driver platform data.

Module parameters
-----------------

delay
-----

The controller requires a minimum interval between I2C bus accesses.
The default interval is set to 100 us. For manual override, the driver
provides a writeable module parameter, 'delay', which can be used to
set the interval to a value between 0 and 65,535 microseconds.

Sysfs entries
-------------

The following attributes are supported. Limits are read-write; all other
attributes are read-only.

======================= ========================================================
in1_label		"vin"
in1_input		Measured input voltage.
in1_lcrit		Critical minimum input voltage.
in1_crit		Critical maximum input voltage.
in1_lcrit_alarm		Input voltage critical low alarm.
in1_crit_alarm		Input voltage critical high alarm.

in2_label		"vout1"
in2_input		Measured output voltage.
in2_lcrit		Critical minimum output Voltage.
in2_crit		Critical maximum output voltage.
in2_lcrit_alarm		Critical output voltage critical low alarm.
in2_crit_alarm		Critical output voltage critical high alarm.

curr1_label		"iout1"
curr1_input		Measured output current.
curr1_crit		Critical maximum output current.
curr1_crit_alarm	Output current critical high alarm.

temp1_input		Measured maximum temperature of all phases.
temp1_max		Maximum temperature limit.
temp1_max_alarm		High temperature alarm.
temp1_crit		Critical maximum temperature limit.
temp1_crit_alarm	Critical maximum temperature alarm.
======================= ========================================================


code:
Kernel driver max16064
======================

Supported chips:

  * Maxim MAX16064

    Prefix: 'max16064'

    Addresses scanned: -

    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX16064.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

This driver supports hardware monitoring for Maxim MAX16064 Quad Power-Supply
Controller with Active-Voltage Output Control and PMBus Interface.

The driver is a client driver to the core PMBus driver.
Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.

Usage Notes
-----------

This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.

Platform data support
---------------------

The driver supports standard PMBus driver platform data.

Sysfs entries
-------------

The following attributes are supported. Limits are read-write; all other
attributes are read-only.

======================= ========================================================
in[1-4]_label		"vout[1-4]"
in[1-4]_input		Measured voltage. From READ_VOUT register.
in[1-4]_min		Minimum Voltage. From VOUT_UV_WARN_LIMIT register.
in[1-4]_max		Maximum voltage. From VOUT_OV_WARN_LIMIT register.
in[1-4]_lcrit		Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register.
in[1-4]_crit		Critical maximum voltage. From VOUT_OV_FAULT_LIMIT
			register.
in[1-4]_min_alarm	Voltage low alarm. From VOLTAGE_UV_WARNING status.
in[1-4]_max_alarm	Voltage high alarm. From VOLTAGE_OV_WARNING status.
in[1-4]_lcrit_alarm	Voltage critical low alarm. From VOLTAGE_UV_FAULT
			status.
in[1-4]_crit_alarm	Voltage critical high alarm. From VOLTAGE_OV_FAULT
			status.
in[1-4]_highest		Historical maximum voltage.
in[1-4]_reset_history	Write any value to reset history.

temp1_input		Measured temperature. From READ_TEMPERATURE_1 register.
temp1_max		Maximum temperature. From OT_WARN_LIMIT register.
temp1_crit		Critical high temperature. From OT_FAULT_LIMIT register.
temp1_max_alarm		Chip temperature high alarm. Set by comparing
			READ_TEMPERATURE_1 with OT_WARN_LIMIT if TEMP_OT_WARNING
			status is set.
temp1_crit_alarm	Chip temperature critical high alarm. Set by comparing
			READ_TEMPERATURE_1 with OT_FAULT_LIMIT if TEMP_OT_FAULT
			status is set.
temp1_highest		Historical maximum temperature.
temp1_reset_history	Write any value to reset history.
======================= ========================================================


code:
Kernel driver max16065
======================

Supported chips:

  * Maxim MAX16065, MAX16066

    Prefixes: 'max16065', 'max16066'

    Addresses scanned: -

    Datasheet:

	http://datasheets.maxim-ic.com/en/ds/MAX16065-MAX16066.pdf

 *  Maxim MAX16067

    Prefix: 'max16067'

    Addresses scanned: -

    Datasheet:

	http://datasheets.maxim-ic.com/en/ds/MAX16067.pdf

 *  Maxim MAX16068

    Prefix: 'max16068'

    Addresses scanned: -

    Datasheet:

	http://datasheets.maxim-ic.com/en/ds/MAX16068.pdf

 *  Maxim MAX16070/MAX16071

    Prefixes: 'max16070', 'max16071'

    Addresses scanned: -

    Datasheet:

	http://datasheets.maxim-ic.com/en/ds/MAX16070-MAX16071.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

[From datasheets] The MAX16065/MAX16066 flash-configurable system managers
monitor and sequence multiple system voltages. The MAX16065/MAX16066 can also
accurately monitor (+/-2.5%) one current channel using a dedicated high-side
current-sense amplifier. The MAX16065 manages up to twelve system voltages
simultaneously, and the MAX16066 manages up to eight supply voltages.

The MAX16067 flash-configurable system manager monitors and sequences multiple
system voltages. The MAX16067 manages up to six system voltages simultaneously.

The MAX16068 flash-configurable system manager monitors and manages up to six
system voltages simultaneously.

The MAX16070/MAX16071 flash-configurable system monitors supervise multiple
system voltages. The MAX16070/MAX16071 can also accurately monitor (+/-2.5%)
one current channel using a dedicated high-side current-sense amplifier. The
MAX16070 monitors up to twelve system voltages simultaneously, and the MAX16071
monitors up to eight supply voltages.

Each monitored channel has its own low and high critical limits. MAX16065,
MAX16066, MAX16070, and MAX16071 support an additional limit which is
configurable as either low or high secondary limit. MAX16065, MAX16066,
MAX16070, and MAX16071 also support supply current monitoring.

Usage Notes
-----------

This driver does not probe for devices, since there is no register which
can be safely used to identify the chip. You will have to instantiate
the devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.

WARNING: Do not access chip registers using the i2cdump command, and do not use
any of the i2ctools commands on a command register (0xa5 to 0xac). The chips
supported by this driver interpret any access to a command register (including
read commands) as request to execute the command in question. This may result in
power loss, board resets, and/or Flash corruption. Worst case, your board may
turn into a brick.

Sysfs entries
-------------

======================= ========================================================
in[0-11]_input		Input voltage measurements.

in12_input		Voltage on CSP (Current Sense Positive) pin.
			Only if the chip supports current sensing and if
			current sensing is enabled.

in[0-11]_min		Low warning limit.
			Supported on MAX16065, MAX16066, MAX16070, and MAX16071
			only.

in[0-11]_max		High warning limit.
			Supported on MAX16065, MAX16066, MAX16070, and MAX16071
			only.

			Either low or high warning limits are supported
			(depending on chip configuration), but not both.

in[0-11]_lcrit		Low critical limit.

in[0-11]_crit		High critical limit.

in[0-11]_alarm		Input voltage alarm.

curr1_input		Current sense input; only if the chip supports current
			sensing and if current sensing is enabled.
			Displayed current assumes 0.001 Ohm current sense
			resistor.

curr1_alarm		Overcurrent alarm; only if the chip supports current
			sensing and if current sensing is enabled.
======================= ========================================================


code:
Kernel driver max1619
=====================

Supported chips:

  * Maxim MAX1619

    Prefix: 'max1619'

    Addresses scanned: I2C 0x18-0x1a, 0x29-0x2b, 0x4c-0x4e

    Datasheet: Publicly available at the Maxim website

	       http://pdfserv.maxim-ic.com/en/ds/MAX1619.pdf

Authors:
       - Oleksij Rempel <bug-track@fisher-privat.net>,
       - Jean Delvare <jdelvare@suse.de>

Description
-----------

The MAX1619 is a digital temperature sensor. It senses its own temperature as
well as the temperature of up to one external diode.

All temperature values are given in degrees Celsius. Resolution
is 1.0 degree for the local temperature and for the remote temperature.

Only the external sensor has high and low limits.

The max1619 driver will not update its values more frequently than every
other second; reading them more often will do no harm, but will return
'old' values.


code:
.. SPDX-License-Identifier: GPL-2.0

Kernel driver max16601
======================

Supported chips:

  * Maxim MAX16508

    Prefix: 'max16508'

    Addresses scanned: -

    Datasheet: Not published

  * Maxim MAX16601

    Prefix: 'max16601'

    Addresses scanned: -

    Datasheet: Not published

  * Maxim MAX16602

    Prefix: 'max16602'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX16602.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

This driver supports the MAX16508 VR13 Dual-Output Voltage Regulator
as well as the MAX16601 VR13.HC Dual-Output Voltage Regulator chipsets.

The driver is a client driver to the core PMBus driver.
Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.

Usage Notes
-----------

This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.

Platform data support
---------------------

The driver supports standard PMBus driver platform data.

Sysfs entries
-------------

The following attributes are supported.

=============================== ===============================================
in1_label			"vin1"
in1_input			VCORE input voltage.
in1_alarm			Input voltage alarm.

in2_label			"vout1"
in2_input			VCORE output voltage.
in2_alarm			Output voltage alarm.

curr1_label			"iin1"
curr1_input			VCORE input current, derived from duty cycle
				and output current.
curr1_max			Maximum input current.
curr1_max_alarm			Current high alarm.

curr[P+2]_label			"iin1.P"
curr[P+2]_input			VCORE phase P input current.

curr[N+2]_label			"iin2"
curr[N+2]_input			VCORE input current, derived from sensor
				element.
				'N' is the number of enabled/populated phases.

curr[N+3]_label			"iin3"
curr[N+3]_input			VSA input current.

curr[N+4]_label			"iout1"
curr[N+4]_input			VCORE output current.
curr[N+4]_crit			Critical output current.
curr[N+4]_crit_alarm		Output current critical alarm.
curr[N+4]_max			Maximum output current.
curr[N+4]_max_alarm		Output current high alarm.

curr[N+P+5]_label		"iout1.P"
curr[N+P+5]_input		VCORE phase P output current.

curr[2*N+5]_label		"iout3"
curr[2*N+5]_input		VSA output current.
curr[2*N+5]_highest		Historical maximum VSA output current.
curr[2*N+5]_reset_history	Write any value to reset curr21_highest.
curr[2*N+5]_crit		Critical output current.
curr[2*N+5]_crit_alarm		Output current critical alarm.
curr[2*N+5]_max			Maximum output current.
curr[2*N+5]_max_alarm		Output current high alarm.

power1_label			"pin1"
power1_input			Input power, derived from duty cycle and output
				current.
power1_alarm			Input power alarm.

power2_label			"pin2"
power2_input			Input power, derived from input current sensor.

power3_label			"pout"
power3_input			Output power.

temp1_input			VCORE temperature.
temp1_crit			Critical high temperature.
temp1_crit_alarm		Chip temperature critical high alarm.
temp1_max			Maximum temperature.
temp1_max_alarm			Chip temperature high alarm.

temp2_input			TSENSE_0 temperature
temp3_input			TSENSE_1 temperature
temp4_input			TSENSE_2 temperature
temp5_input			TSENSE_3 temperature

temp6_input			VSA temperature.
temp6_crit			Critical high temperature.
temp6_crit_alarm		Chip temperature critical high alarm.
temp6_max			Maximum temperature.
temp6_max_alarm			Chip temperature high alarm.
=============================== ===============================================


code:
Kernel driver max1668
=====================

Supported chips:

  * Maxim MAX1668, MAX1805 and MAX1989

    Prefix: 'max1668'

    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e

    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX1668-MAX1989.pdf

Author:

    David George <david.george@ska.ac.za>

Description
-----------

This driver implements support for the Maxim MAX1668, MAX1805 and MAX1989
chips.

The three devices are very similar, but the MAX1805 has a reduced feature
set; only two remote temperature inputs vs the four available on the other
two ICs.

The driver is able to distinguish between the devices and creates sysfs
entries as follows:

- MAX1805, MAX1668 and MAX1989:

=============== == ============================================================
temp1_input     ro local (ambient) temperature
temp1_max       rw local temperature maximum threshold for alarm
temp1_max_alarm ro local temperature maximum threshold alarm
temp1_min       rw local temperature minimum threshold for alarm
temp1_min_alarm ro local temperature minimum threshold alarm
temp2_input     ro remote temperature 1
temp2_max       rw remote temperature 1 maximum threshold for alarm
temp2_max_alarm ro remote temperature 1 maximum threshold alarm
temp2_min       rw remote temperature 1 minimum threshold for alarm
temp2_min_alarm ro remote temperature 1 minimum threshold alarm
temp3_input     ro remote temperature 2
temp3_max       rw remote temperature 2 maximum threshold for alarm
temp3_max_alarm ro remote temperature 2 maximum threshold alarm
temp3_min       rw remote temperature 2 minimum threshold for alarm
temp3_min_alarm ro remote temperature 2 minimum threshold alarm
=============== == ============================================================

- MAX1668 and MAX1989 only:

=============== == ============================================================
temp4_input     ro remote temperature 3
temp4_max       rw remote temperature 3 maximum threshold for alarm
temp4_max_alarm ro remote temperature 3 maximum threshold alarm
temp4_min       rw remote temperature 3 minimum threshold for alarm
temp4_min_alarm ro remote temperature 3 minimum threshold alarm
temp5_input     ro remote temperature 4
temp5_max       rw remote temperature 4 maximum threshold for alarm
temp5_max_alarm ro remote temperature 4 maximum threshold alarm
temp5_min       rw remote temperature 4 minimum threshold for alarm
temp5_min_alarm ro remote temperature 4 minimum threshold alarm
=============== == ============================================================

Module Parameters
-----------------

* read_only: int
  Set to non-zero if you wish to prevent write access to alarm thresholds.


code:
Kernel driver max197
====================

Author:

  * Vivien Didelot <vivien.didelot@savoirfairelinux.com>

Supported chips:

  * Maxim MAX197

    Prefix: 'max197'

    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX197.pdf

  * Maxim MAX199

    Prefix: 'max199'

    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX199.pdf

Description
-----------

The A/D converters MAX197, and MAX199 are both 8-Channel, Multi-Range, 5V,
12-Bit DAS with 8+4 Bus Interface and Fault Protection.

The available ranges for the MAX197 are {0,-5V} to 5V, and {0,-10V} to 10V,
while they are {0,-2V} to 2V, and {0,-4V} to 4V on the MAX199.

Platform data
-------------

The MAX197 platform data (defined in linux/platform_data/max197.h) should be
filled with a pointer to a conversion function, defined like::

    int convert(u8 ctrl);

ctrl is the control byte to write to start a new conversion.
On success, the function must return the 12-bit raw value read from the chip,
or a negative error code otherwise.

Control byte format:

======= ========== ============================================
Bit     Name       Description
7,6     PD1,PD0    Clock and Power-Down modes
5       ACQMOD     Internal or External Controlled Acquisition
4       RNG        Full-scale voltage magnitude at the input
3       BIP        Unipolar or Bipolar conversion mode
2,1,0   A2,A1,A0   Channel
======= ========== ============================================

Sysfs interface
---------------

  ============== ==============================================================
  in[0-7]_input  The conversion value for the corresponding channel.
		 RO

  in[0-7]_min    The lower limit (in mV) for the corresponding channel.
		 For the MAX197, it will be adjusted to -10000, -5000, or 0.
		 For the MAX199, it will be adjusted to -4000, -2000, or 0.
		 RW

  in[0-7]_max    The higher limit (in mV) for the corresponding channel.
		 For the MAX197, it will be adjusted to 0, 5000, or 10000.
		 For the MAX199, it will be adjusted to 0, 2000, or 4000.
		 RW
  ============== ==============================================================


code:
.. SPDX-License-Identifier: GPL-2.0-or-later

Kernel driver max20730
======================

Supported chips:

  * Maxim MAX20710

    Prefix: 'max20710'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX20710.pdf

  * Maxim MAX20730

    Prefix: 'max20730'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX20730.pdf

  * Maxim MAX20734

    Prefix: 'max20734'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX20734.pdf

  * Maxim MAX20743

    Prefix: 'max20743'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX20743.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

This driver implements support for Maxim MAX20710, MAX20730, MAX20734, and MAX20743
Integrated, Step-Down Switching Regulators with PMBus support.

The driver is a client driver to the core PMBus driver.
Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.

Usage Notes
-----------

This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.

Sysfs entries
-------------

=================== ===== =======================================================
curr1_crit          RW/RO Critical output current. Please see datasheet for
                          supported limits. Read-only if the chip is
                          write protected; read-write otherwise.
curr1_crit_alarm    RO    Output current critical alarm
curr1_input         RO    Output current
curr1_label         RO    'iout1'
in1_alarm           RO    Input voltage alarm
in1_input           RO    Input voltage
in1_label           RO    'vin'
in2_alarm           RO    Output voltage alarm
in2_input           RO    Output voltage
in2_label           RO    'vout1'
temp1_crit          RW/RO Critical temeperature. Supported values are 130 or 150
                          degrees C. Read-only if the chip is write protected;
                          read-write otherwise.
temp1_crit_alarm    RO    Temperature critical alarm
temp1_input         RO    Chip temperature
=================== ===== =======================================================


code:
Kernel driver max20751
======================

Supported chips:

  * maxim MAX20751

    Prefix: 'max20751'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX20751.pdf

    Application note: https://pdfserv.maximintegrated.com/en/an/AN5941.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

This driver supports MAX20751 Multiphase Master with PMBus Interface
and Internal Buck Converter.

The driver is a client driver to the core PMBus driver.
Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.

Usage Notes
-----------

This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.

Platform data support
---------------------

The driver supports standard PMBus driver platform data.

Sysfs entries
-------------

The following attributes are supported.

======================= =======================================================
in1_label		"vin1"
in1_input		Measured voltage.
in1_min			Minimum input voltage.
in1_max			Maximum input voltage.
in1_lcrit		Critical minimum input voltage.
in1_crit		Critical maximum input voltage.
in1_min_alarm		Input voltage low alarm.
in1_lcrit_alarm		Input voltage critical low alarm.
in1_min_alarm		Input voltage low alarm.
in1_max_alarm		Input voltage high alarm.

in2_label		"vout1"
in2_input		Measured voltage.
in2_min			Minimum output voltage.
in2_max			Maximum output voltage.
in2_lcrit		Critical minimum output voltage.
in2_crit		Critical maximum output voltage.
in2_min_alarm		Output voltage low alarm.
in2_lcrit_alarm		Output voltage critical low alarm.
in2_min_alarm		Output voltage low alarm.
in2_max_alarm		Output voltage high alarm.

curr1_input		Measured output current.
curr1_label		"iout1"
curr1_max		Maximum output current.
curr1_alarm		Current high alarm.

temp1_input		Measured temperature.
temp1_max		Maximum temperature.
temp1_crit		Critical high temperature.
temp1_max_alarm		Chip temperature high alarm.
temp1_crit_alarm	Chip temperature critical high alarm.

power1_input		Output power.
power1_label		"pout1"
======================= =======================================================


code:
Kernel driver max31722
======================

Supported chips:

  * Maxim Integrated MAX31722

    Prefix: 'max31722'

    ACPI ID: MAX31722

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX31722-MAX31723.pdf

  * Maxim Integrated MAX31723

    Prefix: 'max31723'

    ACPI ID: MAX31723

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX31722-MAX31723.pdf

Author: Tiberiu Breana <tiberiu.a.breana@intel.com>

Description
-----------

This driver adds support for the Maxim Integrated MAX31722/MAX31723 thermometers
and thermostats running over an SPI interface.

Usage Notes
-----------

This driver uses ACPI to auto-detect devices. See ACPI IDs in the above section.

Sysfs entries
-------------

The following attribute is supported:

======================= =======================================================
temp1_input		Measured temperature. Read-only.
======================= =======================================================


code:
Kernel driver max31790
======================

Supported chips:

  * Maxim MAX31730

    Prefix: 'max31730'

    Addresses scanned: 0x1c, 0x1d, 0x1e, 0x1f, 0x4c, 0x4d, 0x4e, 0x4f

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX31730.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

This driver implements support for Maxim MAX31730.

The MAX31730 temperature sensor monitors its own temperature and the
temperatures of three external diode-connected transistors. The operating
supply voltage is from 3.0V to 3.6V. Resistance cancellation compensates
for high series resistance in circuit-board traces and the external thermal
diode, while beta compensation corrects for temperature-measurement
errors due to low-beta sensing transistors.

Sysfs entries
-------------

=================== == =======================================================
temp[1-4]_enable    RW Temperature enable/disable
                       Set to 0 to enable channel, 0 to disable
temp[1-4]_input     RO Temperature input
temp[2-4]_fault     RO Fault indicator for remote channels
temp[1-4]_max       RW Maximum temperature
temp[1-4]_max_alarm RW Maximum temperature alarm
temp[1-4]_min       RW Minimum temperature. Common for all channels.
                       Only temp1_min is writeable.
temp[1-4]_min_alarm RO Minimum temperature alarm
temp[2-4]_offset    RW Temperature offset for remote channels
=================== == =======================================================


code:
.. SPDX-License-Identifier: GPL-2.0-or-later

Kernel driver max31760
======================

Supported chips:
  * Analog Devices MAX31760

    Prefix: 'max31760'

    Addresses scanned: none

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX31760.pdf

Author: Ibrahim Tilki <Ibrahim.Tilki@analog.com>

Description
-----------

The MAX31760 integrates temperature sensing along with precision PWM fan
control. It accurately measures its local die temperature and the remote
temperature of a discrete diode-connected transistor, such as a 2N3906,
or a thermal diode commonly found on CPUs, graphics processor units (GPUs),
and other ASICs. Multiple temperature thresholds, such as local
high/overtemperature (OT) and remote high/overtemperature, can be set by an
I2C-compatible interface. Fan speed is controlled based on the temperature
reading as an index to a 48-byte lookup table (LUT) containing
user-programmed PWM values. The flexible LUT-based architecture enables
the user to program a smooth nonlinear fan speed vs. temperature transfer
function to minimize acoustic fan noise. Two tachometer inputs allow
measuring the speeds of two fans independently. When the local or remote
OT threshold is exceeded, the SHDN pin is asserted low and can be used to
shut down the system. A dedicated ALERT pin reports that either a local or
remote high-temperature threshold has been exceeded.

Temperature measurement range: from -55°C to 125°C

Temperature Resolution: 11 Bits, ±0.125°C

Please refer how to instantiate this driver: Documentation/i2c/instantiating-devices.rst

Lookup table for auto fan control
---------------------------------

========= =================================
LUT Index Name
========= =================================
1         PWM value for T < +18°C
2         PWM value for +18°C ≤ T < +20°C
3         PWM value for +20°C ≤ T < +22°C
...       ...
47        PWM value for +108°C ≤ T < +110°C
48        PWM value for T ≥ +110°C
========= =================================

Sysfs entries
-------------

=============================== =================================================================================
fan[1-2]_input                  Fan speed (in RPM)
fan[1-2]_enable                 Enable fan readings and fan fault alarms
fan[1-2]_fault                  Fan fault status
temp[1-2]_label                 "Remote" and "Local" temperature channel labels
temp[1-2]_input                 Temperature sensor readings (in millidegrees Celsius)
temp1_fault                     Remote temperature sensor fault status
temp[1-2]_max                   Temperature max value. Asserts "ALERT" pin when exceeded
temp[1-2]_max_alarm             Temperature max alarm status
temp[1-2]_crit                  Temperature critical value. Asserts "SHDN" pin when exceeded
temp[1-2]_crit_alarm            Temperature critical alarm status
pwm1                            PWM value for direct fan control
pwm1_enable                     1: direct fan control, 2: temperature based auto fan control
pwm1_freq                       PWM frequency in hertz
pwm1_auto_channels_temp         Temperature source for auto fan control. 1: temp1, 2: temp2, 3: max(temp1, temp2)
pwm1_auto_point[1-48]_pwm       PWM value for LUT point
pwm1_auto_point_temp_hyst       Temperature hysteresis for auto fan control. Can be either 2000mC or 4000mC
=============================== =================================================================================


code:
Kernel driver max31785
======================

Supported chips:

  * Maxim MAX31785, MAX31785A

    Prefix: 'max31785' or 'max31785a'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX31785.pdf

Author: Andrew Jeffery <andrew@aj.id.au>

Description
-----------

The Maxim MAX31785 is a PMBus device providing closed-loop, multi-channel fan
management with temperature and remote voltage sensing. Various fan control
features are provided, including PWM frequency control, temperature hysteresis,
dual tachometer measurements, and fan health monitoring.

For dual-rotor configurations the MAX31785A exposes the second rotor tachometer
readings in attributes fan[5-8]_input. By contrast the MAX31785 only exposes
the slowest rotor measurement, and does so in the fan[1-4]_input attributes.

Usage Notes
-----------

This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.

Sysfs attributes
----------------

======================= =======================================================
fan[1-4]_alarm		Fan alarm.
fan[1-4]_fault		Fan fault.
fan[1-8]_input		Fan RPM. On the MAX31785A, inputs 5-8 correspond to the
			second rotor of fans 1-4
fan[1-4]_target		Fan input target

in[1-6]_crit		Critical maximum output voltage
in[1-6]_crit_alarm	Output voltage critical high alarm
in[1-6]_input		Measured output voltage
in[1-6]_label		"vout[18-23]"
in[1-6]_lcrit		Critical minimum output voltage
in[1-6]_lcrit_alarm	Output voltage critical low alarm
in[1-6]_max		Maximum output voltage
in[1-6]_max_alarm	Output voltage high alarm
in[1-6]_min		Minimum output voltage
in[1-6]_min_alarm	Output voltage low alarm

pwm[1-4]		Fan target duty cycle (0..255)
pwm[1-4]_enable		0: Full-speed
			1: Manual PWM control
			2: Automatic PWM (tach-feedback RPM fan-control)
			3: Automatic closed-loop (temp-feedback fan-control)

temp[1-11]_crit		Critical high temperature
temp[1-11]_crit_alarm	Chip temperature critical high alarm
temp[1-11]_input	Measured temperature
temp[1-11]_max		Maximum temperature
temp[1-11]_max_alarm	Chip temperature high alarm
======================= =======================================================


code:
Kernel driver max31790
======================

Supported chips:

  * Maxim MAX31790

    Prefix: 'max31790'

    Addresses scanned: -

    Datasheet: https://pdfserv.maximintegrated.com/en/ds/MAX31790.pdf

Author: Il Han <corone.il.han@gmail.com>

Description
-----------

This driver implements support for the Maxim MAX31790 chip.

The MAX31790 controls the speeds of up to six fans using six independent
PWM outputs. The desired fan speeds (or PWM duty cycles) are written
through the I2C interface. The outputs drive "4-wire" fans directly,
or can be used to modulate the fan's power terminals using an external
pass transistor.

Tachometer inputs monitor fan tachometer logic outputs for precise (+/-1%)
monitoring and control of fan RPM as well as detection of fan failure.
Six pins are dedicated tachometer inputs. Any of the six PWM outputs can
also be configured to serve as tachometer inputs.

Sysfs entries
-------------

================== === =======================================================
fan[1-12]_input    RO  fan tachometer speed in RPM
fan[1-12]_fault    RO  fan experienced fault
fan[1-6]_target    RW  desired fan speed in RPM
fan[1-6]_enable    RW  enable or disable the tachometer input
pwm[1-6]_enable    RW  regulator mode, 0=disabled (duty cycle=0%), 1=manual mode, 2=rpm mode
pwm[1-6]           RW  read: current pwm duty cycle,
                       write: target pwm duty cycle (0-255)
================== === =======================================================


code:
Kernel driver max34440
======================

Supported chips:

  * Maxim MAX34440

    Prefixes: 'max34440'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX34440.pdf

  * Maxim MAX34441

    PMBus 5-Channel Power-Supply Manager and Intelligent Fan Controller

    Prefixes: 'max34441'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX34441.pdf

  * Maxim MAX34446

    PMBus Power-Supply Data Logger

    Prefixes: 'max34446'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX34446.pdf

  * Maxim MAX34451

    PMBus 16-Channel V/I Monitor and 12-Channel Sequencer/Marginer

    Prefixes: 'max34451'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX34451.pdf

  * Maxim MAX34460

    PMBus 12-Channel Voltage Monitor & Sequencer

    Prefix: 'max34460'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX34460.pdf

  * Maxim MAX34461

    PMBus 16-Channel Voltage Monitor & Sequencer

    Prefix: 'max34461'

    Addresses scanned: -

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX34461.pdf

Author: Guenter Roeck <linux@roeck-us.net>

Description
-----------

This driver supports hardware monitoring for Maxim MAX34440 PMBus 6-Channel
Power-Supply Manager, MAX34441 PMBus 5-Channel Power-Supply Manager
and Intelligent Fan Controller, and MAX34446 PMBus Power-Supply Data Logger.
It also supports the MAX34451, MAX34460, and MAX34461 PMBus Voltage Monitor &
Sequencers. The MAX34451 supports monitoring voltage or current of 12 channels
based on GIN pins. The MAX34460 supports 12 voltage channels, and the MAX34461
supports 16 voltage channels.

The driver is a client driver to the core PMBus driver. Please see
Documentation/hwmon/pmbus.rst for details on PMBus client drivers.

Usage Notes
-----------

This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.

For MAX34446, the value of the currX_crit attribute determines if current or
voltage measurement is enabled for a given channel. Voltage measurement is
enabled if currX_crit is set to 0; current measurement is enabled if the
attribute is set to a positive value. Power measurement is only enabled if
channel 1 (3) is configured for voltage measurement, and channel 2 (4) is
configured for current measurement.

Platform data support
---------------------

The driver supports standard PMBus driver platform data.

Sysfs entries
-------------

The following attributes are supported. Limits are read-write; all other
attributes are read-only.

In
~~

======================= =======================================================
in[1-6]_label		"vout[1-6]".
in[1-6]_input		Measured voltage. From READ_VOUT register.
in[1-6]_min		Minimum Voltage. From VOUT_UV_WARN_LIMIT register.
in[1-6]_max		Maximum voltage. From VOUT_OV_WARN_LIMIT register.
in[1-6]_lcrit		Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register.
in[1-6]_crit		Critical maximum voltage. From VOUT_OV_FAULT_LIMIT
			register.
in[1-6]_min_alarm	Voltage low alarm. From VOLTAGE_UV_WARNING status.
in[1-6]_max_alarm	Voltage high alarm. From VOLTAGE_OV_WARNING status.
in[1-6]_lcrit_alarm	Voltage critical low alarm. From VOLTAGE_UV_FAULT
			status.
in[1-6]_crit_alarm	Voltage critical high alarm. From VOLTAGE_OV_FAULT
			status.
in[1-6]_lowest		Historical minimum voltage.
in[1-6]_highest		Historical maximum voltage.
in[1-6]_reset_history	Write any value to reset history.
======================= =======================================================

.. note:: MAX34446 only supports in[1-4].

Curr
~~~~

======================= ========================================================
curr[1-6]_label		"iout[1-6]".
curr[1-6]_input		Measured current. From READ_IOUT register.
curr[1-6]_max		Maximum current. From IOUT_OC_WARN_LIMIT register.
curr[1-6]_crit		Critical maximum current. From IOUT_OC_FAULT_LIMIT
			register.
curr[1-6]_max_alarm	Current high alarm. From IOUT_OC_WARNING status.
curr[1-6]_crit_alarm	Current critical high alarm. From IOUT_OC_FAULT status.
curr[1-4]_average	Historical average current (MAX34446/34451 only).
curr[1-6]_highest	Historical maximum current.
curr[1-6]_reset_history	Write any value to reset history.
======================= ========================================================

.. note::

    - in6 and curr6 attributes only exist for MAX34440.
    - MAX34446 only supports curr[1-4].

Power
~~~~~

======================= ========================================================
power[1,3]_label	"pout[1,3]"
power[1,3]_input	Measured power.
power[1,3]_average	Historical average power.
power[1,3]_highest	Historical maximum power.
======================= ========================================================

.. note:: Power attributes only exist for MAX34446.

Temp
~~~~

======================= ========================================================
temp[1-8]_input		Measured temperatures. From READ_TEMPERATURE_1 register.
			temp1 is the chip's internal temperature. temp2..temp5
			are remote I2C temperature sensors. For MAX34441, temp6
			is a remote thermal-diode sensor. For MAX34440, temp6..8
			are remote I2C temperature sensors.
temp[1-8]_max		Maximum temperature. From OT_WARN_LIMIT register.
temp[1-8]_crit		Critical high temperature. From OT_FAULT_LIMIT register.
temp[1-8]_max_alarm	Temperature high alarm.
temp[1-8]_crit_alarm	Temperature critical high alarm.
temp[1-8]_average	Historical average temperature (MAX34446 only).
temp[1-8]_highest	Historical maximum temperature.
temp[1-8]_reset_history	Write any value to reset history.
======================= ========================================================

.. note::
   - temp7 and temp8 attributes only exist for MAX34440.
   - MAX34446 only supports temp[1-3].

.. note::

   - MAX34451 supports attribute groups in[1-16] (or curr[1-16] based on
     input pins) and temp[1-5].
   - MAX34460 supports attribute groups in[1-12] and temp[1-5].
   - MAX34461 supports attribute groups in[1-16] and temp[1-5].


code:
.. SPDX-License-Identifier: GPL-2.0-or-later

Kernel driver max6620
=====================

Supported chips:

    Maxim MAX6620

    Prefix: 'max6620'

    Addresses scanned: none

    Datasheet: http://pdfserv.maxim-ic.com/en/ds/MAX6620.pdf

Authors:
    - L\. Grunenberg <contact@lgrunenberg.de>
    - Cumulus Networks <support@cumulusnetworks.com>
    - Shuotian Cheng <shuche@microsoft.com>
    - Arun Saravanan Balachandran <Arun_Saravanan_Balac@dell.com>

Description
-----------

This driver implements support for Maxim MAX6620 fan controller.

The driver configures the fan controller in RPM mode. To give the readings more
range or accuracy, the desired value can be set by a programmable register
(1, 2, 4, 8, 16 or 32). Set higher values for larger speeds.

The driver provides the following sensor access in sysfs:

================ ======= =====================================================
fan[1-4]_alarm   ro      Fan alarm.
fan[1-4]_div     rw      Sets the nominal RPM range of the fan. Valid values
                         are 1, 2, 4, 8, 16 and 32.
fan[1-4]_input   ro      Fan speed in RPM.
fan[1-4]_target  rw      Desired fan speed in RPM.
================ ======= =====================================================

Usage notes
-----------

This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.


code:
Kernel driver max6639
=====================

Supported chips:

  * Maxim MAX6639

    Prefix: 'max6639'

    Addresses scanned: I2C 0x2c, 0x2e, 0x2f

    Datasheet: https://datasheets.maximintegrated.com/en/ds/MAX6639-MAX6639F.pdf

Authors:
    - He Changqing <hechangqing@semptian.com>
    - Roland Stigge <stigge@antcom.de>

Description
-----------

This driver implements support for the Maxim MAX6639. This chip is a 2-channel
temperature monitor with dual PWM fan speed controller. It can monitor its own
temperature and one external diode-connected transistor or two external
diode-connected transistors.

The following device attributes are implemented via sysfs:

====================== ==== ===================================================
Attribute              R/W  Contents
====================== ==== ===================================================
temp1_input            R    Temperature channel 1 input (0..150 C)
temp2_input            R    Temperature channel 2 input (0..150 C)
temp1_fault            R    Temperature channel 1 diode fault
temp2_fault            R    Temperature channel 2 diode fault
temp1_max              RW   Set THERM temperature for input 1
			    (in C, see datasheet)
temp2_max              RW   Set THERM temperature for input 2
temp1_crit             RW   Set ALERT temperature for input 1
temp2_crit             RW   Set ALERT temperature for input 2
temp1_emergency        RW   Set OT temperature for input 1
			    (in C, see datasheet)
temp2_emergency        RW   Set OT temperature for input 2
pwm1                   RW   Fan 1 target duty cycle (0..255)
pwm2                   RW   Fan 2 target duty cycle (0..255)
fan1_input             R    TACH1 fan tachometer input (in RPM)
fan2_input             R    TACH2 fan tachometer input (in RPM)
fan1_fault             R    Fan 1 fault
fan2_fault             R    Fan 2 fault
temp1_max_alarm        R    Alarm on THERM temperature on channel 1
temp2_max_alarm        R    Alarm on THERM temperature on channel 2
temp1_crit_alarm       R    Alarm on ALERT temperature on channel 1
temp2_crit_alarm       R    Alarm on ALERT temperature on channel 2
temp1_emergency_alarm  R    Alarm on OT temperature on channel 1
temp2_emergency_alarm  R    Alarm on OT temperature on channel 2
====================== ==== ===================================================