# SPDX-License-Identifier: GPL-2.0-only
#
# PMBus chip drivers configuration
#

menuconfig PMBUS
	tristate "PMBus support"
	depends on I2C
	help
	  Say yes here if you want to enable PMBus support.

	  This driver can also be built as a module. If so, the module will
	  be called pmbus_core.

if PMBUS

config SENSORS_PMBUS
	tristate "Generic PMBus devices"
	default y
	help
	  If you say yes here you get hardware monitoring support for generic
	  PMBus devices, including but not limited to ADP4000, BMR310, BMR453,
	  BMR454, BMR456, BMR457, BMR458, BMR480, BMR490, BMR491, BMR492,
	  MAX20796, MDT040, NCP4200, NCP4208, PDT003, PDT006, PDT012,
	  TPS40400, TPS544B20, TPS544B25, TPS544C20, TPS544C25, and UDT020.

	  This driver can also be built as a module. If so, the module will
	  be called pmbus.

config SENSORS_ACBEL_FSG032
	tristate "ACBEL FSG032 Power Supply"
	help
	  If you say yes here you get hardware monitoring support for the ACBEL
	  FSG032 Power Supply.

	  This driver can also be built as a module. If so, the module will
	  be called acbel-fsg032.

config SENSORS_ADM1266
	tristate "Analog Devices ADM1266 Sequencer"
	select CRC8
	depends on GPIOLIB
	help
	  If you say yes here you get hardware monitoring support for Analog
	  Devices ADM1266 Cascadable Super Sequencer.

	  This driver can also be built as a module. If so, the module will
	  be called adm1266.

config SENSORS_ADM1275
	tristate "Analog Devices ADM1275 and compatibles"
	help
	  If you say yes here you get hardware monitoring support for Analog
	  Devices ADM1075, ADM1272, ADM1275, ADM1276, ADM1278, ADM1281,
	  ADM1293, and ADM1294 Hot-Swap Controller and Digital Power Monitors.

	  This driver can also be built as a module. If so, the module will
	  be called adm1275.

config SENSORS_ADP1050
	tristate "Analog Devices ADP1050 digital controller for Power Supplies"
	help
	  If you say yes here you get hardware monitoring support for Analog
	  Devices ADP1050 digital controller for isolated power supply with
	  PMBus interface.

	  This driver can also be built as a module. If so, the module will
	  be called adp1050.

config SENSORS_BEL_PFE
	tristate "Bel PFE Compatible Power Supplies"
	help
	  If you say yes here you get hardware monitoring support for BEL
	  PFE1100 and PFE3000 Power Supplies.

	  This driver can also be built as a module. If so, the module will
	  be called bel-pfe.

config SENSORS_BPA_RS600
	tristate "BluTek BPA-RS600 Power Supplies"
	help
	  If you say yes here you get hardware monitoring support for BluTek
	  BPA-RS600 Power Supplies.

	  This driver can also be built as a module. If so, the module will
	  be called bpa-rs600.

config SENSORS_DELTA_AHE50DC_FAN
	tristate "Delta AHE-50DC fan control module"
	help
	  If you say yes here you get hardware monitoring support for
	  the integrated fan control module of the Delta AHE-50DC
	  Open19 power shelf.

	  This driver can also be built as a module. If so, the module
	  will be called delta-ahe50dc-fan.

config SENSORS_FSP_3Y
	tristate "FSP/3Y-Power power supplies"
	help
	  If you say yes here you get hardware monitoring support for
	  FSP/3Y-Power hot-swap power supplies.
	  Supported models: YH-5151E, YM-2151E

	  This driver can also be built as a module. If so, the module will
	  be called fsp-3y.

config SENSORS_IBM_CFFPS
	tristate "IBM Common Form Factor Power Supply"
	depends on LEDS_CLASS
	help
	  If you say yes here you get hardware monitoring support for the IBM
	  Common Form Factor power supply.

	  This driver can also be built as a module. If so, the module will
	  be called ibm-cffps.

config SENSORS_DPS920AB
	tristate "Delta DPS920AB Power Supply"
	help
	  If you say yes here you get hardware monitoring support for Delta
	  DPS920AB Power Supplies.

	  This driver can also be built as a module. If so, the module will
	  be called dps920ab.

config SENSORS_INSPUR_IPSPS
	tristate "INSPUR Power System Power Supply"
	help
	  If you say yes here you get hardware monitoring support for the INSPUR
	  Power System power supply.

	  This driver can also be built as a module. If so, the module will
	  be called inspur-ipsps.

config SENSORS_IR35221
	tristate "Infineon IR35221"
	help
	  If you say yes here you get hardware monitoring support for the
	  Infineon IR35221 controller.

	  This driver can also be built as a module. If so, the module will
	  be called ir35221.

config SENSORS_IR36021
	tristate "Infineon IR36021"
	help
	  If you say yes here you get hardware monitoring support for Infineon
	  IR36021.

	  This driver can also be built as a module. If so, the module will
	  be called ir36021.

config SENSORS_IR38064
	tristate "Infineon IR38064 and compatibles"
	help
	  If you say yes here you get hardware monitoring support for Infineon
	  IR38060, IR38064, IR38164 and IR38263.

	  This driver can also be built as a module. If so, the module will
	  be called ir38064.

config SENSORS_IR38064_REGULATOR
	bool "Regulator support for IR38064 and compatibles"
	depends on SENSORS_IR38064 && REGULATOR
	help
	  Uses the IR38064 or compatible as regulator.

config SENSORS_IRPS5401
	tristate "Infineon IRPS5401"
	help
	  If you say yes here you get hardware monitoring support for the
	  Infineon IRPS5401 controller.

	  This driver can also be built as a module. If so, the module will
	  be called irps5401.

config SENSORS_ISL68137
	tristate "Renesas Digital Multiphase Voltage Regulators"
	help
	  If you say yes here you get hardware monitoring support for Renesas
	  digital multiphase voltage regulators.

	  This driver can also be built as a module. If so, the module will
	  be called isl68137.

config SENSORS_LM25066
	tristate "National Semiconductor LM25066 and compatibles"
	help
	  If you say yes here you get hardware monitoring support for National
	  Semiconductor LM25056, LM25066, LM5064, and LM5066.

	  This driver can also be built as a module. If so, the module will
	  be called lm25066.

config SENSORS_LM25066_REGULATOR
	bool "Regulator support for LM25066 and compatibles"
	depends on SENSORS_LM25066 && REGULATOR
	help
	  If you say yes here you get regulator support for National
	  Semiconductor LM25066, LM5064, and LM5066.

config SENSORS_LT7182S
	tristate "Analog Devices LT7182S"
	help
	  If you say yes here you get hardware monitoring support for Analog
	  Devices LT7182S.

	  This driver can also be built as a module. If so, the module will
	  be called lt7182s.

config SENSORS_LTC2978
	tristate "Linear Technologies LTC2978 and compatibles"
	help
	  If you say yes here you get hardware monitoring support for Linear
	  Technology LTC2972, LTC2974, LTC2975, LTC2977, LTC2978, LTC2979,
	  LTC2980, and LTM2987.

	  This driver can also be built as a module. If so, the module will
	  be called ltc2978.

config SENSORS_LTC2978_REGULATOR
	bool "Regulator support for LTC2978 and compatibles"
	depends on SENSORS_LTC2978 && REGULATOR
	help
	  If you say yes here you get regulator support for Linear Technology
	  LTC3880, LTC3883, LTC3884, LTC3886, LTC3887, LTC3889, LTC7880,
	  LTM4644, LTM4675, LTM4676, LTM4677, LTM4678, LTM4680, LTM4686,
	  and LTM4700.

config SENSORS_LTC3815
	tristate "Linear Technologies LTC3815"
	help
	  If you say yes here you get hardware monitoring support for Linear
	  Technology LTC3815.

	  This driver can also be built as a module. If so, the module will
	  be called ltc3815.

config SENSORS_LTC4286
	bool "Analog Devices LTC4286"
	help
	  LTC4286 is an integrated solution for hot swap applications that
	  allows a board to be safely inserted and removed from a live
	  backplane.
	  This chip could be used to monitor voltage, current, ...etc.
	  If you say yes here you get hardware monitoring support for Analog
	  Devices LTC4286.

config SENSORS_MAX15301
	tristate "Maxim MAX15301"
	help
	  If you say yes here you get hardware monitoring support for Maxim
	  MAX15301, as well as for Flex BMR461.

	  This driver can also be built as a module. If so, the module will
	  be called max15301.

config SENSORS_MAX16064
	tristate "Maxim MAX16064"
	help
	  If you say yes here you get hardware monitoring support for Maxim
	  MAX16064.

	  This driver can also be built as a module. If so, the module will
	  be called max16064.

config SENSORS_MAX16601
	tristate "Maxim MAX16508, MAX16600, MAX16601, and MAX16602"
	help
	  If you say yes here you get hardware monitoring support for Maxim
	  MAX16508, MAX16600, MAX16601, and MAX16602.

	  This driver can also be built as a module. If so, the module will
	  be called max16601.

config SENSORS_MAX20730
	tristate "Maxim MAX20710, MAX20730, MAX20734, MAX20743"
	help
	  If you say yes here you get hardware monitoring support for Maxim
	  MAX20710, MAX20730, MAX20734, and MAX20743.

	  This driver can also be built as a module. If so, the module will
	  be called max20730.

config SENSORS_MAX20751
	tristate "Maxim MAX20751"
	help
	  If you say yes here you get hardware monitoring support for Maxim
	  MAX20751.

	  This driver can also be built as a module. If so, the module will
	  be called max20751.

config SENSORS_MAX31785
	tristate "Maxim MAX31785 and compatibles"
	help
	  If you say yes here you get hardware monitoring support for Maxim
	  MAX31785.

	  This driver can also be built as a module. If so, the module will
	  be called max31785.

config SENSORS_MAX34440
	tristate "Maxim MAX34440 and compatibles"
	help
	  If you say yes here you get hardware monitoring support for Maxim
	  MAX34440, MAX34441, MAX34446, MAX34451, MAX34460, and MAX34461.

	  This driver can also be built as a module. If so, the module will
	  be called max34440.

config SENSORS_MAX8688
	tristate "Maxim MAX8688"
	help
	  If you say yes here you get hardware monitoring support for Maxim
	  MAX8688.

	  This driver can also be built as a module. If so, the module will
	  be called max8688.

config SENSORS_MP2856
	tristate "MPS MP2856"
	help
	  If you say yes here you get hardware monitoring support for MPS
	  MP2856 MP2857 Dual Loop Digital Multi-Phase Controller.

	  This driver can also be built as a module. If so, the module will
	  be called mp2856.

config SENSORS_MP2888
	tristate "MPS MP2888"
	help
	  If you say yes here you get hardware monitoring support for MPS
	  MP2888 Digital, Multi-Phase, Pulse-Width Modulation Controller.

	  This driver can also be built as a module. If so, the module will
	  be called mp2888.

config SENSORS_MP2891
    tristate "MPS MP2891"
    help
      If you say yes here you get hardware monitoring support for MPS
      MP2891 Dual Loop Digital Multi-Phase Controller.

      This driver can also be built as a module. If so, the module will
      be called mp2891.

config SENSORS_MP2975
	tristate "MPS MP2975"
	help
	  If you say yes here you get hardware monitoring support for MPS
	  MP2975 Dual Loop Digital Multi-Phase Controller.

	  This driver can also be built as a module. If so, the module will
	  be called mp2975.

config SENSORS_MP2993
	tristate "MPS MP2993"
	help
	  If you say yes here you get hardware monitoring support for MPS
	  MP2993 Dual Loop Digital Multi-Phase Controller.

	  This driver can also be built as a module. If so, the module will
	  be called mp2993.

config SENSORS_MP2975_REGULATOR
	depends on SENSORS_MP2975 && REGULATOR
	bool "Regulator support for MPS MP2975"
	help
	  If you say yes here you get regulator support for MPS MP2975
	  Dual Loop Digital Multi-Phase Controller.

config SENSORS_MP5023
	tristate "MPS MP5023"
	help
	  If you say yes here you get hardware monitoring support for MPS
	  MP5023.

	  This driver can also be built as a module. If so, the module will
	  be called mp5023.

config SENSORS_MP5920
	tristate "MPS MP5920"
	help
	  If you say yes here you get hardware monitoring support for Monolithic
	  MP5920.

	  This driver can also be built as a module. If so, the module will
	  be called mp5920.

config SENSORS_MP5990
	tristate "MPS MP5990"
	help
	  If you say yes here you get hardware monitoring support for MPS
	  MP5990.

	  This driver can also be built as a module. If so, the module will
	  be called mp5990.

config SENSORS_MP9941
	tristate "MPS MP9941"
	help
	  If you say yes here you get hardware monitoring support for MPS
	  MP9941.

	  This driver can also be built as a module. If so, the module will
	  be called mp9941.

config SENSORS_MPQ7932_REGULATOR
	bool "Regulator support for MPQ7932"
	depends on SENSORS_MPQ7932 && REGULATOR
	help
	  If you say yes here you get six integrated buck converter regulator
	  support for power management IC MPS MPQ7932.

config SENSORS_MPQ7932
	tristate "MPS MPQ7932"
	help
	  If you say yes here you get hardware monitoring functionality support
	  for power management IC MPS MPQ7932.

	  This driver can also be built as a module. If so, the module will
	  be called mpq7932.

config SENSORS_MPQ8785
	tristate "MPS MPQ8785"
	help
	  If you say yes here you get hardware monitoring functionality support
	  for power management IC MPS MPQ8785.

	  This driver can also be built as a module. If so, the module will
	  be called mpq8785.

config SENSORS_PIM4328
	tristate "Flex PIM4328 and compatibles"
	help
	  If you say yes here you get hardware monitoring support for Flex
	  PIM4328, PIM4820 and PIM4006 Power Interface Modules.

	  This driver can also be built as a module. If so, the module will
	  be called pim4328.

config SENSORS_PLI1209BC
	tristate "Vicor PLI1209BC"
	help
	  If you say yes here you get hardware monitoring support for Vicor
	  PLI1209BC Digital Supervisor.

	  This driver can also be built as a module. If so, the module will
	  be called pli1209bc.

config SENSORS_PLI1209BC_REGULATOR
	bool "Regulator support for PLI1209BC"
	depends on SENSORS_PLI1209BC && REGULATOR
	help
	  If you say yes here you get regulator support for Vicor PLI1209BC
	  Digital Supervisor.

config SENSORS_PM6764TR
	tristate "ST PM6764TR"
	help
	  If you say yes here you get hardware monitoring support for ST
	  PM6764TR.

	  This driver can also be built as a module. If so, the module will
	  be called pm6764tr.

config SENSORS_PXE1610
	tristate "Infineon PXE1610"
	help
	  If you say yes here you get hardware monitoring support for Infineon
	  PXE1610.

	  This driver can also be built as a module. If so, the module will
	  be called pxe1610.

config SENSORS_Q54SJ108A2
	tristate "Delta Power Supplies Q54SJ108A2"
	help
	  If you say yes here you get hardware monitoring support for Delta
	  Q54SJ108A2 series Power Supplies.

	  This driver can also be built as a module. If so, the module will
	  be called q54sj108a2.

config SENSORS_STPDDC60
	tristate "ST STPDDC60"
	help
	  If you say yes here you get hardware monitoring support for ST
	  STPDDC60 Universal Digital Multicell Controller, as well as for
	  Flex BMR481.

	  This driver can also be built as a module. If so, the module will
	  be called stpddc60.

config SENSORS_TDA38640
	tristate "Infineon TDA38640"
	help
	  If you say yes here you get hardware monitoring support for Infineon
	  TDA38640.

	  This driver can also be built as a module. If so, the module will
	  be called tda38640.

config SENSORS_TDA38640_REGULATOR
	bool "Regulator support for TDA38640 and compatibles"
	depends on SENSORS_TDA38640 && REGULATOR
	help
	  If you say yes here you get regulator support for Infineon
	  TDA38640 as regulator.

config SENSORS_TPS40422
	tristate "TI TPS40422"
	help
	  If you say yes here you get hardware monitoring support for TI
	  TPS40422.

	  This driver can also be built as a module. If so, the module will
	  be called tps40422.

config SENSORS_TPS53679
	tristate "TI TPS53647, TPS53667, TPS53676, TPS53679, TPS53681, TPS53688"
	help
	  If you say yes here you get hardware monitoring support for TI
	  TPS53647, TPS53667, TPS53676, TPS53679, TPS53681, and TPS53688.

	  This driver can also be built as a module. If so, the module will
	  be called tps53679.

config SENSORS_TPS546D24
	tristate "TPS546D24"
	help
	  If you say yes here you get hardware monitoring support for TEXAS
	  TPS546D24.

	  This driver can also be built as a module. If so, the module will
	  be called tps546d24

config SENSORS_UCD9000
	tristate "TI UCD90120, UCD90124, UCD90160, UCD90320, UCD9090, UCD90910"
	help
	  If you say yes here you get hardware monitoring support for TI
	  UCD90120, UCD90124, UCD90160, UCD90320, UCD9090, UCD90910, Sequencer
	  and System Health Controllers.

	  This driver can also be built as a module. If so, the module will
	  be called ucd9000.

config SENSORS_UCD9200
	tristate "TI UCD9220, UCD9222, UCD9224, UCD9240, UCD9244, UCD9246, UCD9248"
	help
	  If you say yes here you get hardware monitoring support for TI
	  UCD9220, UCD9222, UCD9224, UCD9240, UCD9244, UCD9246, and UCD9248
	  Digital PWM System Controllers.

	  This driver can also be built as a module. If so, the module will
	  be called ucd9200.

config SENSORS_XDP710
	tristate "Infineon XDP710 family"
	help
	  If you say yes here you get hardware monitoring support for Infineon
	  XDP710.

	  This driver can also be built as a module. If so, the module will
	  be called xdp710.

config SENSORS_XDPE152
	tristate "Infineon XDPE152 family"
	help
	  If you say yes here you get hardware monitoring support for Infineon
	  XDPE15284, XDPE152C4, device.

	  This driver can also be built as a module. If so, the module will
	  be called xdpe152c4.

config SENSORS_XDPE122
	tristate "Infineon XDPE122 family"
	help
	  If you say yes here you get hardware monitoring support for Infineon
	  XDPE12254, XDPE12284, device.

	  This driver can also be built as a module. If so, the module will
	  be called xdpe12284.

config SENSORS_XDPE122_REGULATOR
	bool "Regulator support for XDPE122 and compatibles"
	depends on SENSORS_XDPE122 && REGULATOR
	help
	  Uses the xdpe12284 or compatible as regulator.

config SENSORS_ZL6100
	tristate "Intersil ZL6100 and compatibles"
	help
	  If you say yes here you get hardware monitoring support for Intersil
	  ZL2004, ZL2005, ZL2006, ZL2008, ZL2105, ZL2106, ZL6100, ZL6105,
	  ZL9101M, and ZL9117M Digital DC/DC Controllers, as well as for
	  Ericsson BMR450, BMR451, BMR462, BMR463, and BMR464.

	  This driver can also be built as a module. If so, the module will
	  be called zl6100.

endif # PMBUS
