#
# PMBus chip drivers configuration
#

menuconfig PMBUS
	tristate "PMBus support"
	depends on I2C
	default n
	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, BMR453, BMR454,
	  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_ADM1275
	tristate "Analog Devices ADM1275 and compatibles"
	default n
	help
	  If you say yes here you get hardware monitoring support for Analog
	  Devices ADM1075, ADM1275, ADM1276, ADM1278, 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_IBM_CFFPS
	tristate "IBM Common Form Factor Power Supply"
	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_IR35221
	tristate "Infineon IR35221"
	default n
	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 ir35521.

config SENSORS_LM25066
	tristate "National Semiconductor LM25066 and compatibles"
	default n
	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_LTC2978
	tristate "Linear Technologies LTC2978 and compatibles"
	default n
	help
	  If you say yes here you get hardware monitoring support for Linear
	  Technology LTC2974, LTC2975, LTC2977, LTC2978, LTC2980, LTC3880,
	  LTC3883, LTC3886, LTC3887, LTCM2987, LTM4675, and LTM4676.

	  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 LTC2974, LTC2977, LTC2978, LTC3880, LTC3883, and LTM4676.

config SENSORS_LTC3815
	tristate "Linear Technologies LTC3815"
	default n
	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_MAX16064
	tristate "Maxim MAX16064"
	default n
	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_MAX20751
	tristate "Maxim MAX20751"
	default n
	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"
	default n
	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"
	default n
	help
	  If you say yes here you get hardware monitoring support for Maxim
	  MAX34440, MAX34441, MAX34446, 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"
	default n
	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_TPS40422
	tristate "TI TPS40422"
	default n
	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 TPS53679"
	help
	  If you say yes here you get hardware monitoring support for TI
	  TPS53679.

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

config SENSORS_UCD9000
	tristate "TI UCD90120, UCD90124, UCD90160, UCD9090, UCD90910"
	default n
	help
	  If you say yes here you get hardware monitoring support for TI
	  UCD90120, UCD90124, UCD90160, 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"
	default n
	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_ZL6100
	tristate "Intersil ZL6100 and compatibles"
	default n
	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
