.. SPDX-License-Identifier: GPL-2.0-only Kernel drivers ltc4283 ========================================== Supported chips: * Analog Devices LTC4283 Prefix: 'ltc4283' Addresses scanned: - Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ltc4283.pdf Author: Nuno Sá 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: ======================= ========================================== power1_failed_fault_log Set to 1 by a power1 fault occurring. power1_good_input_fault_log Set to 1 by a power1 good input fault occurring at PGIO3. in11_fet_short_fault_log Set to 1 when a FET-short fault occurs. in11_fet_bad_fault_log Set to 1 when a FET-BAD fault occurs. in0_lcrit_fault_log Set to 1 by a VIN undervoltage fault occurring. in0_crit_fault_log Set to 1 by a VIN overvoltage fault occurring. curr1_crit_fault_log Set to 1 by an overcurrent fault occurring. ======================= ==========================================