Kernel drivers ltc4283

Supported chips:

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

Description

The LTC4283 negative voltage hot swap controller drives an external N-channel MOSFET to allow a board to be safely inserted and removed from a live backplane. The device features programmable current limit with foldback and independently adjustable inrush current to optimize the MOSFET safe operating area (SOA). The SOA timer limits MOSFET temperature rise for reliable protection against overstresses. An I2C interface and onboard gear-shift ADC allow monitoring of board current, voltage, power, energy, and fault status. Additional features respond to input UV/OV, interrupt the host when a fault has occurred, notify when output power is good, detect insertion of a board, turn off the MOSFET if an external supply monitor fails to indicate power good within a timeout period, and auto-reboot after a programmable delay following a host commanded turn-off.

Sysfs entries

The following attributes are supported. Limits are read-write and all the other attributes are read-only. Note that the VADIOx channels might not be available if the ADIO pins are used as GPIOs (naturally also affects the respective differential channels).

in0_lcrit_alarm

Critical Undervoltage alarm

in0_crit_alarm

Critical Overvoltage alarm

in0_reset_history

Clears Under and Overvoltage fault logs.

in0_label

Channel label (VIN)

in1_input

Output 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 history.

in1_min_alarm

Undervoltage alarm

in1_max_alarm

Overvoltage alarm

in1_label

Channel label (VPWR)

in2_input

Output 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 history.

in2_min_alarm

Undervoltage alarm

in2_max_alarm

Overvoltage alarm

in2_enable

Enable/Disable monitoring.

in2_label

Channel label (VADI1)

in3_input

Output voltage (mV).

in3_min

Undervoltage threshold

in3_max

Overvoltage threshold

in3_lowest

Lowest measured voltage

in3_highest

Highest measured voltage

in3_reset_history

Write 1 to reset history.

in3_min_alarm

Undervoltage alarm

in3_max_alarm

Overvoltage alarm

in3_enable

Enable/Disable monitoring.

in3_label

Channel label (VADI2)

in4_input

Output voltage (mV).

in4_min

Undervoltage threshold

in4_max

Overvoltage threshold

in4_lowest

Lowest measured voltage

in4_highest

Highest measured voltage

in4_reset_history

Write 1 to reset history.

in4_min_alarm

Undervoltage alarm

in4_max_alarm

Overvoltage alarm

in4_enable

Enable/Disable monitoring.

in4_label

Channel label (VADI3)

in5_input

Output voltage (mV).

in5_min

Undervoltage threshold

in5_max

Overvoltage threshold

in5_lowest

Lowest measured voltage

in5_highest

Highest measured voltage

in5_reset_history

Write 1 to reset history.

in5_min_alarm

Undervoltage alarm

in5_max_alarm

Overvoltage alarm

in5_enable

Enable/Disable monitoring.

in5_label

Channel label (VADI4)

in6_input

Output voltage (mV).

in6_min

Undervoltage threshold

in6_max

Overvoltage threshold

in6_lowest

Lowest measured voltage

in6_highest

Highest measured voltage

in6_reset_history

Write 1 to reset history.

in6_min_alarm

Undervoltage alarm

in6_max_alarm

Overvoltage alarm

in6_enable

Enable/Disable monitoring.

in6_label

Channel label (VADIO1)

in7_input

Output voltage (mV).

in7_min

Undervoltage threshold

in7_max

Overvoltage threshold

in7_lowest

Lowest measured voltage

in7_highest

Highest measured voltage

in7_reset_history

Write 1 to reset history.

in7_min_alarm

Undervoltage alarm

in7_max_alarm

Overvoltage alarm

in7_enable

Enable/Disable monitoring.

in7_label

Channel label (VADIO2)

in8_input

Output voltage (mV).

in8_min

Undervoltage threshold

in8_max

Overvoltage threshold

in8_lowest

Lowest measured voltage

in8_highest

Highest measured voltage

in8_reset_history

Write 1 to reset history.

in8_min_alarm

Undervoltage alarm

in8_max_alarm

Overvoltage alarm

in8_enable

Enable/Disable monitoring.

in8_label

Channel label (VADIO3)

in9_input

Output voltage (mV).

in9_min

Undervoltage threshold

in9_max

Overvoltage threshold

in9_lowest

Lowest measured voltage

in9_highest

Highest measured voltage

in9_reset_history

Write 1 to reset history.

in9_min_alarm

Undervoltage alarm

in9_max_alarm

Overvoltage alarm

in9_enable

Enable/Disable monitoring.

in9_label

Channel label (VADIO4)

in10_input

Output voltage (mV).

in10_min

Undervoltage threshold

in10_max

Overvoltage threshold

in10_lowest

Lowest measured voltage

in10_highest

Highest measured voltage

in10_reset_history

Write 1 to reset history.

in10_min_alarm

Undervoltage alarm

in10_max_alarm

Overvoltage alarm

in10_enable

Enable/Disable monitoring.

in10_label

Channel label (DRNS)

in11_input

Output voltage (mV).

in11_min

Undervoltage threshold

in11_max

Overvoltage threshold

in11_lowest

Lowest measured voltage

in11_highest

Highest measured voltage

in11_reset_history

Write 1 to reset history. Also clears fet bad and short fault logs.

in11_min_alarm

Undervoltage alarm

in11_max_alarm

Overvoltage alarm

in11_enable

Enable/Disable monitoring

in11_fault

Failure in the MOSFET. Either bad or shorted FET.

in11_label

Channel label (DRAIN)

in12_input

Output voltage (mV).

in12_min

Undervoltage threshold

in12_max

Overvoltage threshold

in12_lowest

Lowest measured voltage

in12_highest

Highest measured voltage

in12_reset_history

Write 1 to reset history.

in12_min_alarm

Undervoltage alarm

in12_max_alarm

Overvoltage alarm

in12_enable

Enable/Disable monitoring.

in12_label

Channel label (ADIN2-ADIN1)

in13_input

Output voltage (mV).

in13_min

Undervoltage threshold

in13_max

Overvoltage threshold

in13_lowest

Lowest measured voltage

in13_highest

Highest measured voltage

in13_reset_history

Write 1 to reset history.

in13_min_alarm

Undervoltage alarm

in13_max_alarm

Overvoltage alarm

in13_enable

Enable/Disable monitoring.

in13_label

Channel label (ADIN4-ADIN3)

in14_input

Output voltage (mV).

in14_min

Undervoltage threshold

in14_max

Overvoltage threshold

in14_lowest

Lowest measured voltage

in14_highest

Highest measured voltage

in14_reset_history

Write 1 to reset history.

in14_min_alarm

Undervoltage alarm

in14_max_alarm

Overvoltage alarm

in14_enable

Enable/Disable monitoring.

in14_label

Channel label (ADIO2-ADIO1)

in15_input

Output voltage (mV).

in15_min

Undervoltage threshold

in15_max

Overvoltage threshold

in15_lowest

Lowest measured voltage

in15_highest

Highest measured voltage

in15_reset_history

Write 1 to reset history.

in15_min_alarm

Undervoltage alarm

in15_max_alarm

Overvoltage alarm

in15_enable

Enable/Disable monitoring.

in15_label

Channel label (ADIO4-ADIO3)

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 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/i2c/i2c-[X]/[X]-addr/ contains the following attributes: