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

Kernel drivers ltc4282
==========================================

Supported chips:

  * Analog Devices LTC4282

    Prefix: 'ltc4282'

    Addresses scanned: - I2C 0x40 - 0x5A (7-bit)
    Addresses scanned: - I2C 0x80 - 0xB4 with a step of 2 (8-bit)

    Datasheet:

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

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

Description
___________

The LTC4282 hot swap controller allows a board to be safely inserted and removed
from a live backplane. Using one or more external N-channel pass transistors,
board supply voltage and inrush current are ramped up at an adjustable rate. An
I2C interface and onboard ADC allows for monitoring of board current, voltage,
power, energy and fault status. The device features analog foldback current
limiting and supply monitoring for applications from 2.9V to 33V. Dual 12V gate
drive allows high power applications to either share safe operating area across
parallel MOSFETs or support a 2-stage start-up that first charges the load
capacitance followed by enabling a low on-resistance path to the load. The
LTC4282 is well suited to high power applications because the precise monitoring
capability and accurate current limiting reduce the extremes in which both loads
and power supplies must safely operate. Non-volatile configuration allows for
flexibility in the autonomous generation of alerts and response to faults.

Sysfs entries
_____________

The following attributes are supported. Limits are read-write and all the other
attributes are read-only. Note that in0 and in1 are mutually exclusive. Enabling
one disables the other and disabling one enables the other.

======================= ==========================================
in0_input		Output 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 in0 history.
			Also clears fet bad and short fault logs.
in0_min_alarm		Undervoltage alarm
in0_max_alarm           Overvoltage alarm
in0_enable		Enable/Disable VSOURCE monitoring
in0_fault		Failure in the MOSFETs. Either bad or shorted FET.
in0_label		Channel label (VSOURCE)

in1_input		Input 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 in1 history.
			Also clears over/undervoltage fault logs.
in1_min_alarm		Undervoltage alarm
in1_max_alarm           Overvoltage alarm
in1_lcrit_alarm         Critical Undervoltage alarm
in1_crit_alarm          Critical Overvoltage alarm
in1_enable		Enable/Disable VDD monitoring
in1_label		Channel label (VDD)

in2_input		GPIO 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
in2_label		Channel label (VGPIO)

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.
			Also clears overcurrent fault logs.
curr1_min_alarm		Undercurrent alarm
curr1_max_alarm		Overcurrent alarm
curr1_crit_alarm        Critical Overcurrent alarm
curr1_label		Channel label (ISENSE)

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.
			Also clears power bad fault logs.
power1_min_alarm	Low power alarm
power1_max_alarm	High power alarm
power1_label		Channel label (Power)

energy1_input		Measured energy over time (in microJoule)
energy1_enable		Enable/Disable Energy accumulation
======================= ==========================================

DebugFs entries
_______________

The chip also has a fault log register where failures can be logged. Hence,
as these are logging events, we give access to them in debugfs. Note that
even if some failure is detected in these logs, it does necessarily mean
that the failure is still present. As mentioned in the proper Sysfs entries,
these logs can be cleared by writing in the proper reset_history attribute.

.. warning:: The debugfs interface is subject to change without notice
             and is only available when the kernel is compiled with
             ``CONFIG_DEBUG_FS`` defined.

``/sys/kernel/debug/ltc4282-hwmon[X]/``
contains the following attributes:

=======================  ==========================================
power1_bad_fault_log     Set to 1 by a power1 bad fault occurring.
in0_fet_short_fault_log	 Set to 1 when the ADC detects a FET-short fault.
in0_fet_bad_fault_log    Set to 1 when a FET-BAD fault occurs.
in1_crit_fault_log       Set to 1 by a VDD overvoltage fault occurring.
in1_lcrit_fault_log      Set to 1 by a VDD undervoltage fault occurring.
curr1_crit_fault_log	 Set to 1 by an overcurrent fault occurring.
=======================  ==========================================
