#
# Hardware monitoring chip drivers configuration
#

menuconfig HWMON
	tristate "Hardware Monitoring support"
	depends on HAS_IOMEM
	default y
	help
	  Hardware monitoring devices let you monitor the hardware health
	  of a system. Most modern motherboards include such a device. It
	  can include temperature sensors, voltage sensors, fan speed
	  sensors and various additional features such as the ability to
	  control the speed of the fans.  If you want this support you
	  should say Y here and also to the specific driver(s) for your
	  sensors chip(s) below.

	  To find out which specific driver(s) you need, use the
	  sensors-detect script from the lm_sensors package.  Read
	  <file:Documentation/hwmon/userspace-tools> for details.

	  This support can also be built as a module.  If so, the module
	  will be called hwmon.

if HWMON

config THERMAL_SENSOR_KW2
	bool "KW2 Thermal Sensor"
	default y
	help
	  Enable chip temperature monitoring via sysfs.

config HWMON_VID
	tristate
	default n

config HWMON_DEBUG_CHIP
	bool "Hardware Monitoring Chip debugging messages"
	default n
	help
	  Say Y here if you want the I2C chip drivers to produce a bunch of
	  debug messages to the system log.  Select this if you are having
	  a problem with I2C support and want to see more of what is going
	  on.

comment "Native drivers"

config SENSORS_ABITUGURU
	tristate "Abit uGuru (rev 1 & 2)"
	depends on X86 && EXPERIMENTAL
	help
	  If you say yes here you get support for the sensor part of the first
	  and second revision of the Abit uGuru chip. The voltage and frequency
	  control parts of the Abit uGuru are not supported. The Abit uGuru
	  chip can be found on Abit uGuru featuring motherboards (most modern
	  Abit motherboards from before end 2005). For more info and a list
	  of which motherboards have which revision see
	  Documentation/hwmon/abituguru

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

config SENSORS_ABITUGURU3
	tristate "Abit uGuru (rev 3)"
	depends on X86 && EXPERIMENTAL
	help
	  If you say yes here you get support for the sensor part of the
	  third revision of the Abit uGuru chip. Only reading the sensors
	  and their settings is supported. The third revision of the Abit
	  uGuru chip can be found on recent Abit motherboards (since end
	  2005). For more info and a list of which motherboards have which
	  revision see Documentation/hwmon/abituguru3

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

config SENSORS_AD7414
	tristate "Analog Devices AD7414"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the Analog Devices
	  AD7414 temperature monitoring chip.

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

config SENSORS_AD7418
	tristate "Analog Devices AD7416, AD7417 and AD7418"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the Analog Devices
	  AD7416, AD7417 and AD7418 temperature monitoring chips.

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

config SENSORS_ADCXX
	tristate "National Semiconductor ADCxxxSxxx"
	depends on SPI_MASTER && EXPERIMENTAL
	help
	  If you say yes here you get support for the National Semiconductor
	  ADC<bb><c>S<sss> chip family, where
	  * bb  is the resolution in number of bits (8, 10, 12)
	  * c   is the number of channels (1, 2, 4, 8)
	  * sss is the maximum conversion speed (021 for 200 kSPS, 051 for 500
	    kSPS and 101 for 1 MSPS)

	  Examples : ADC081S101, ADC124S501, ...

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

config SENSORS_ADM1021
	tristate "Analog Devices ADM1021 and compatibles"
	depends on I2C
	help
	  If you say yes here you get support for Analog Devices ADM1021
	  and ADM1023 sensor chips and clones: Maxim MAX1617 and MAX1617A,
	  Genesys Logic GL523SM, National Semiconductor LM84, TI THMC10,
	  and the XEON processor built-in sensor.

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

config SENSORS_ADM1025
	tristate "Analog Devices ADM1025 and compatibles"
	depends on I2C
	select HWMON_VID
	help
	  If you say yes here you get support for Analog Devices ADM1025
	  and Philips NE1619 sensor chips.

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

config SENSORS_ADM1026
	tristate "Analog Devices ADM1026 and compatibles"
	depends on I2C && EXPERIMENTAL
	select HWMON_VID
	help
	  If you say yes here you get support for Analog Devices ADM1026
	  sensor chip.

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

config SENSORS_ADM1029
	tristate "Analog Devices ADM1029"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for Analog Devices ADM1029
	  sensor chip.
	  Very rare chip, please let us know you use it.

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

config SENSORS_ADM1031
	tristate "Analog Devices ADM1031 and compatibles"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for Analog Devices ADM1031
	  and ADM1030 sensor chips.

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

config SENSORS_ADM9240
	tristate "Analog Devices ADM9240 and compatibles"
	depends on I2C
	select HWMON_VID
	help
	  If you say yes here you get support for Analog Devices ADM9240,
	  Dallas DS1780, National Semiconductor LM81 sensor chips.

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

config SENSORS_ADT7462
	tristate "Analog Devices ADT7462"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the Analog Devices
	  ADT7462 temperature monitoring chips.

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

config SENSORS_ADT7470
	tristate "Analog Devices ADT7470"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the Analog Devices
	  ADT7470 temperature monitoring chips.

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

config SENSORS_ADT7473
	tristate "Analog Devices ADT7473"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the Analog Devices
	  ADT7473 temperature monitoring chips.

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

config SENSORS_ADT7475
	tristate "Analog Devices ADT7475"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the Analog Devices
	  ADT7475 hardware monitoring chips.

	  This driver can also be build as a module.  If so, the module
	  will be called adt7475.

config SENSORS_K8TEMP
	tristate "AMD Athlon64/FX or Opteron temperature sensor"
	depends on X86 && PCI && EXPERIMENTAL
	help
	  If you say yes here you get support for the temperature
	  sensor(s) inside your CPU. Supported is whole AMD K8
	  microarchitecture. Please note that you will need at least
	  lm-sensors 2.10.1 for proper userspace support.

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

config SENSORS_AMS
	tristate "Apple Motion Sensor driver"
	depends on PPC_PMAC && !PPC64 && INPUT && ((ADB_PMU && I2C = y) || (ADB_PMU && !I2C) || I2C) && EXPERIMENTAL
	select INPUT_POLLDEV
	help
	  Support for the motion sensor included in PowerBooks. Includes
	  implementations for PMU and I2C.

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

config SENSORS_AMS_PMU
	bool "PMU variant"
	depends on SENSORS_AMS && ADB_PMU
	default y
	help
	  PMU variant of motion sensor, found in late 2005 PowerBooks.

config SENSORS_AMS_I2C
	bool "I2C variant"
	depends on SENSORS_AMS && I2C
	default y
	help
	  I2C variant of motion sensor, found in early 2005 PowerBooks and
	  iBooks.

config SENSORS_ASB100
	tristate "Asus ASB100 Bach"
	depends on X86 && I2C && EXPERIMENTAL
	select HWMON_VID
	help
	  If you say yes here you get support for the ASB100 Bach sensor
	  chip found on some Asus mainboards.

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

config SENSORS_ATXP1
	tristate "Attansic ATXP1 VID controller"
	depends on I2C && EXPERIMENTAL
	select HWMON_VID
	help
	  If you say yes here you get support for the Attansic ATXP1 VID
	  controller.

	  If your board have such a chip, you are able to control your CPU
	  core and other voltages.

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

config SENSORS_DS1621
	tristate "Dallas Semiconductor DS1621 and DS1625"
	depends on I2C
	help
	  If you say yes here you get support for Dallas Semiconductor
	  DS1621 and DS1625 sensor chips.

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

config SENSORS_I5K_AMB
	tristate "FB-DIMM AMB temperature sensor on Intel 5000 series chipsets"
	depends on PCI && EXPERIMENTAL
	help
	  If you say yes here you get support for FB-DIMM AMB temperature
	  monitoring chips on systems with the Intel 5000 series chipset.

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

config SENSORS_F71805F
	tristate "Fintek F71805F/FG, F71806F/FG and F71872F/FG"
	depends on EXPERIMENTAL
	help
	  If you say yes here you get support for hardware monitoring
	  features of the Fintek F71805F/FG, F71806F/FG and F71872F/FG
	  Super-I/O chips.

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

config SENSORS_F71882FG
	tristate "Fintek F71858FG, F71862FG, F71882FG and F8000"
	depends on EXPERIMENTAL
	help
	  If you say yes here you get support for hardware monitoring
	  features of the Fintek F71858FG, F71862FG/71863FG, F71882FG/F71883FG
	  and F8000 Super-I/O chips.

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

config SENSORS_F75375S
	tristate "Fintek F75375S/SP and F75373";
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for hardware monitoring
	  features of the Fintek F75375S/SP and F75373

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

config SENSORS_FSCHMD
	tristate "Fujitsu Siemens Computers sensor chips"
	depends on X86 && I2C
	help
	  If you say yes here you get support for the following Fujitsu
	  Siemens Computers (FSC) sensor chips: Poseidon, Scylla, Hermes,
	  Heimdall, Heracles, Hades and Syleus including support for the
	  integrated watchdog.

	  This is a merged driver for FSC sensor chips replacing the fscpos,
	  fscscy and fscher drivers and adding support for several other FSC
	  sensor chips.

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

config SENSORS_G760A
	tristate "GMT G760A"
	depends on I2C
	help
	  If you say yes here you get support for Global Mixed-mode
	  Technology Inc G760A fan speed PWM controller chips.

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

config SENSORS_GL518SM
	tristate "Genesys Logic GL518SM"
	depends on I2C
	help
	  If you say yes here you get support for Genesys Logic GL518SM
	  sensor chips.

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

config SENSORS_GL520SM
	tristate "Genesys Logic GL520SM"
	depends on I2C
	select HWMON_VID
	help
	  If you say yes here you get support for Genesys Logic GL520SM
	  sensor chips.

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

config SENSORS_CORETEMP
	tristate "Intel Core/Core2/Atom temperature sensor"
	depends on X86 && PCI && EXPERIMENTAL
	help
	  If you say yes here you get support for the temperature
	  sensor inside your CPU. Most of the family 6 CPUs
	  are supported. Check documentation/driver for details.

config SENSORS_IBMAEM
	tristate "IBM Active Energy Manager temperature/power sensors and control"
	select IPMI_SI
	depends on IPMI_HANDLER
	help
	  If you say yes here you get support for the temperature and
	  power sensors and capping hardware in various IBM System X
	  servers that support Active Energy Manager.  This includes
	  the x3350, x3550, x3650, x3655, x3755, x3850 M2, x3950 M2,
	  and certain HC10/HS2x/LS2x/QS2x blades.

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

config SENSORS_IBMPEX
	tristate "IBM PowerExecutive temperature/power sensors"
	select IPMI_SI
	depends on IPMI_HANDLER
	help
	  If you say yes here you get support for the temperature and
	  power sensors in various IBM System X servers that support
	  PowerExecutive.  So far this includes the x3350, x3550, x3650,
	  x3655, and x3755; the x3800, x3850, and x3950 models that have
	  PCI Express; and some of the HS2x, LS2x, and QS2x blades.

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

config SENSORS_IT87
	tristate "ITE IT87xx and compatibles"
	select HWMON_VID
	help
	  If you say yes here you get support for ITE IT8705F, IT8712F,
	  IT8716F, IT8718F, IT8720F and IT8726F sensor chips, and the
	  SiS960 clone.

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

config SENSORS_LM63
	tristate "National Semiconductor LM63"
	depends on I2C
	help
	  If you say yes here you get support for the National Semiconductor
	  LM63 remote diode digital temperature sensor with integrated fan
	  control.  Such chips are found on the Tyan S4882 (Thunder K8QS Pro)
	  motherboard, among others.

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

config SENSORS_LM70
	tristate "National Semiconductor LM70 / Texas Instruments TMP121"
	depends on SPI_MASTER && EXPERIMENTAL
	help
	  If you say yes here you get support for the National Semiconductor
	  LM70 and Texas Instruments TMP121/TMP123 digital temperature
	  sensor chips.

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

config SENSORS_LM75
	tristate "National Semiconductor LM75 and compatibles"
	depends on I2C
	help
	  If you say yes here you get support for one common type of
	  temperature sensor chip, with models including:

		- Dallas Semiconductor DS75 and DS1775
		- Maxim MAX6625 and MAX6626
		- Microchip MCP980x
		- National Semiconductor LM75
		- NXP's LM75A
		- ST Microelectronics STDS75
		- TelCom (now Microchip) TCN75
		- Texas Instruments TMP100, TMP101, TMP75, TMP175, TMP275

	  This driver supports driver model based binding through board
	  specific I2C device tables.

	  It also supports the "legacy" style of driver binding.  To use
	  that with some chips which don't replicate LM75 quirks exactly,
	  you may need the "force" module parameter.

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

config SENSORS_LM77
	tristate "National Semiconductor LM77"
	depends on I2C
	help
	  If you say yes here you get support for National Semiconductor LM77
	  sensor chips.

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

config SENSORS_LM78
	tristate "National Semiconductor LM78 and compatibles"
	depends on I2C
	select HWMON_VID
	help
	  If you say yes here you get support for National Semiconductor LM78,
	  LM78-J and LM79.

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

config SENSORS_LM80
	tristate "National Semiconductor LM80"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for National Semiconductor
	  LM80 sensor chips.

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

config SENSORS_LM83
	tristate "National Semiconductor LM83 and compatibles"
	depends on I2C
	help
	  If you say yes here you get support for National Semiconductor
	  LM82 and LM83 sensor chips.

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

config SENSORS_LM85
	tristate "National Semiconductor LM85 and compatibles"
	depends on I2C && EXPERIMENTAL
	select HWMON_VID
	help
	  If you say yes here you get support for National Semiconductor LM85
	  sensor chips and clones: ADT7463, EMC6D100, EMC6D102 and ADM1027.

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

config SENSORS_LM87
	tristate "National Semiconductor LM87 and compatibles"
	depends on I2C
	select HWMON_VID
	help
	  If you say yes here you get support for National Semiconductor LM87
	  and Analog Devices ADM1024 sensor chips.

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

config SENSORS_LM90
	tristate "National Semiconductor LM90 and compatibles"
	depends on I2C
	help
	  If you say yes here you get support for National Semiconductor LM90,
	  LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, and Maxim
	  MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659,
	  MAX6680, MAX6681 and MAX6692 sensor chips.

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

config SENSORS_LM92
	tristate "National Semiconductor LM92 and compatibles"
	depends on I2C
	help
	  If you say yes here you get support for National Semiconductor LM92
	  and Maxim MAX6635 sensor chips.

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

config SENSORS_LM93
	tristate "National Semiconductor LM93 and compatibles"
	depends on I2C
	select HWMON_VID
	help
	  If you say yes here you get support for National Semiconductor LM93
	  sensor chips.

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

config SENSORS_LTC4215
	tristate "Linear Technology LTC4215"
	depends on I2C && EXPERIMENTAL
	default n
	help
	  If you say yes here you get support for Linear Technology LTC4215
	  Hot Swap Controller I2C interface.

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

config SENSORS_LTC4245
	tristate "Linear Technology LTC4245"
	depends on I2C && EXPERIMENTAL
	default n
	help
	  If you say yes here you get support for Linear Technology LTC4245
	  Multiple Supply Hot Swap Controller I2C interface.

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

config SENSORS_LM95241
	tristate "National Semiconductor LM95241 sensor chip"
	depends on I2C
	help
	  If you say yes here you get support for LM95241 sensor chip.

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

config SENSORS_MAX1111
	tristate "Maxim MAX1111 Multichannel, Serial 8-bit ADC chip"
	depends on SPI_MASTER
	help
	  Say y here to support Maxim's MAX1111 ADC chips.

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

config SENSORS_MAX1619
	tristate "Maxim MAX1619 sensor chip"
	depends on I2C
	help
	  If you say yes here you get support for MAX1619 sensor chip.

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

config SENSORS_MAX6650
	tristate "Maxim MAX6650 sensor chip"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the MAX6650 / MAX6651
	  sensor chips.

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

config SENSORS_PC87360
	tristate "National Semiconductor PC87360 family"
	select HWMON_VID
	help
	  If you say yes here you get access to the hardware monitoring
	  functions of the National Semiconductor PC8736x Super-I/O chips.
	  The PC87360, PC87363 and PC87364 only have fan monitoring and
	  control.  The PC87365 and PC87366 additionally have voltage and
	  temperature monitoring.

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

config SENSORS_PC87427
	tristate "National Semiconductor PC87427"
	depends on EXPERIMENTAL
	help
	  If you say yes here you get access to the hardware monitoring
	  functions of the National Semiconductor PC87427 Super-I/O chip.
	  The chip has two distinct logical devices, one for fan speed
	  monitoring and control, and one for voltage and temperature
	  monitoring. Only fan speed monitoring is supported right now.

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

config SENSORS_PCF8591
	tristate "Philips PCF8591 ADC/DAC"
	depends on I2C
	default n
	help
	  If you say yes here you get support for Philips PCF8591 4-channel
	  ADC, 1-channel DAC chips.

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

	  These devices are hard to detect and rarely found on mainstream
	  hardware.  If unsure, say N.

config SENSORS_SHT15
	tristate "Sensiron humidity and temperature sensors. SHT15 and compat."
	depends on GENERIC_GPIO
	help
	  If you say yes here you get support for the Sensiron SHT10, SHT11,
	  SHT15, SHT71, SHT75 humidity and temperature sensors.

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

config SENSORS_S3C
	tristate "S3C24XX/S3C64XX Inbuilt ADC"
	depends on ARCH_S3C2410
	help
	  If you say yes here you get support for the on-board ADCs of
	  the Samsung S3C24XX or S3C64XX series of SoC

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

config SENSORS_S3C_RAW
	bool "Include raw channel attributes in sysfs"
	depends on SENSORS_S3C
	help
	  Say Y here if you want to include raw copies of all the ADC
	  channels in sysfs.

config SENSORS_SIS5595
	tristate "Silicon Integrated Systems Corp. SiS5595"
	depends on PCI
	help
	  If you say yes here you get support for the integrated sensors in
	  SiS5595 South Bridges.

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

config SENSORS_DME1737
	tristate "SMSC DME1737, SCH311x and compatibles"
	depends on I2C && EXPERIMENTAL
	select HWMON_VID
	help
	  If you say yes here you get support for the hardware monitoring
	  and fan control features of the SMSC DME1737, SCH311x, SCH5027, and
	  Asus A8000 Super-I/O chips.

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

config SENSORS_SMSC47M1
	tristate "SMSC LPC47M10x and compatibles"
	help
	  If you say yes here you get support for the integrated fan
	  monitoring and control capabilities of the SMSC LPC47B27x,
	  LPC47M10x, LPC47M112, LPC47M13x, LPC47M14x, LPC47M15x,
	  LPC47M192, LPC47M292 and LPC47M997 chips.

	  The temperature and voltage sensor features of the LPC47M15x,
	  LPC47M192, LPC47M292 and LPC47M997 are supported by another
	  driver, select also "SMSC LPC47M192 and compatibles" below for
	  those.

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

config SENSORS_SMSC47M192
	tristate "SMSC LPC47M192 and compatibles"
	depends on I2C && EXPERIMENTAL
	select HWMON_VID
	help
	  If you say yes here you get support for the temperature and
	  voltage sensors of the SMSC LPC47M192, LPC47M15x, LPC47M292
	  and LPC47M997 chips.

	  The fan monitoring and control capabilities of these chips
	  are supported by another driver, select
	  "SMSC LPC47M10x and compatibles" above. You need both drivers
	  if you want fan control and voltage/temperature sensor support.

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

config SENSORS_SMSC47B397
	tristate "SMSC LPC47B397-NC"
	depends on EXPERIMENTAL
	help
	  If you say yes here you get support for the SMSC LPC47B397-NC
	  sensor chip.

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

config SENSORS_ADS7828
	tristate "Texas Instruments ADS7828"
	depends on I2C
	help
	  If you say yes here you get support for Texas Instruments ADS7828
	  12-bit 8-channel ADC device.

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

config SENSORS_THMC50
	tristate "Texas Instruments THMC50 / Analog Devices ADM1022"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for Texas Instruments THMC50
	  sensor chips and clones: the Analog Devices ADM1022.

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

config SENSORS_TMP401
	tristate "Texas Instruments TMP401 and compatibles"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for Texas Instruments TMP401 and
	  TMP411 temperature sensor chips.

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

config SENSORS_TMP421
	tristate "Texas Instruments TMP421 and compatible"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for Texas Instruments TMP421,
	  TMP422 and TMP423 temperature sensor chips.

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

config SENSORS_VIA686A
	tristate "VIA686A"
	depends on PCI
	help
	  If you say yes here you get support for the integrated sensors in
	  Via 686A/B South Bridges.

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

config SENSORS_VT1211
	tristate "VIA VT1211"
	depends on EXPERIMENTAL
	select HWMON_VID
	help
	  If you say yes here then you get support for hardware monitoring
	  features of the VIA VT1211 Super-I/O chip.

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

config SENSORS_VT8231
	tristate "VIA VT8231"
	depends on PCI
	select HWMON_VID
	help
	  If you say yes here then you get support for the integrated sensors
	  in the VIA VT8231 device.

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

config SENSORS_W83781D
	tristate "Winbond W83781D, W83782D, W83783S, Asus AS99127F"
	depends on I2C
	select HWMON_VID
	help
	  If you say yes here you get support for the Winbond W8378x series
	  of sensor chips: the W83781D, W83782D and W83783S, and the similar
	  Asus AS99127F.

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

config SENSORS_W83791D
	tristate "Winbond W83791D"
	depends on I2C && EXPERIMENTAL
	select HWMON_VID
	help
	  If you say yes here you get support for the Winbond W83791D chip.

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

config SENSORS_W83792D
	tristate "Winbond W83792D"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the Winbond W83792D chip.

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

config SENSORS_W83793
	tristate "Winbond W83793"
	depends on I2C && EXPERIMENTAL
	select HWMON_VID
	help
	  If you say yes here you get support for the Winbond W83793
	  hardware monitoring chip.

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

config SENSORS_W83L785TS
	tristate "Winbond W83L785TS-S"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the Winbond W83L785TS-S
	  sensor chip, which is used on the Asus A7N8X, among other
	  motherboards.

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

config SENSORS_W83L786NG
	tristate "Winbond W83L786NG, W83L786NR"
	depends on I2C && EXPERIMENTAL
	help
	  If you say yes here you get support for the Winbond W83L786NG
	  and W83L786NR sensor chips.

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

config SENSORS_W83627HF
	tristate "Winbond W83627HF, W83627THF, W83637HF, W83687THF, W83697HF"
	select HWMON_VID
	help
	  If you say yes here you get support for the Winbond W836X7 series
	  of sensor chips: the W83627HF, W83627THF, W83637HF, W83687THF and
	  W83697HF.

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

config SENSORS_W83627EHF
	tristate "Winbond W83627EHF/EHG/DHG, W83667HG"
	select HWMON_VID
	help
	  If you say yes here you get support for the hardware
	  monitoring functionality of the Winbond W83627EHF Super-I/O chip.

	  This driver also supports the W83627EHG, which is the lead-free
	  version of the W83627EHF, and the W83627DHG, which is a similar
	  chip suited for specific Intel processors that use PECI such as
	  the Core 2 Duo.

	  This driver also supports the W83667HG chip.

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

config SENSORS_WM831X
	tristate "WM831x PMICs"
	depends on MFD_WM831X
	help
	  If you say yes here you get support for the hardware
	  monitoring functionality of the Wolfson Microelectronics
	  WM831x series of PMICs.

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

config SENSORS_WM8350
	tristate "Wolfson Microelectronics WM835x"
	depends on MFD_WM8350
	help
	  If you say yes here you get support for the hardware
	  monitoring features of the WM835x series of PMICs.

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

config SENSORS_ULTRA45
	tristate "Sun Ultra45 PIC16F747"
	depends on SPARC64
	help
	  This driver provides support for the Ultra45 workstation environmental
	  sensors.

config SENSORS_HDAPS
	tristate "IBM Hard Drive Active Protection System (hdaps)"
	depends on INPUT && X86
	select INPUT_POLLDEV
	default n
	help
	  This driver provides support for the IBM Hard Drive Active Protection
	  System (hdaps), which provides an accelerometer and other misc. data.
	  ThinkPads starting with the R50, T41, and X40 are supported.  The
	  accelerometer data is readable via sysfs.

	  This driver also provides an absolute input class device, allowing
	  the laptop to act as a pinball machine-esque joystick.

	  If your ThinkPad is not recognized by the driver, please update to latest
	  BIOS. This is especially the case for some R52 ThinkPads.

	  Say Y here if you have an applicable laptop and want to experience
	  the awesome power of hdaps.

config SENSORS_LIS3_SPI
	tristate "STMicroeletronics LIS3LV02Dx three-axis digital accelerometer (SPI)"
	depends on !ACPI && SPI_MASTER && INPUT
	select INPUT_POLLDEV
	default n
	help
	  This driver provides support for the LIS3LV02Dx accelerometer connected
	  via SPI. The accelerometer data is readable via
	  /sys/devices/platform/lis3lv02d.

	  This driver also provides an absolute input class device, allowing
	  the laptop to act as a pinball machine-esque joystick.

	  This driver can also be built as modules.  If so, the core module
	  will be called lis3lv02d and a specific module for the SPI transport
	  is called lis3lv02d_spi.

config SENSORS_APPLESMC
	tristate "Apple SMC (Motion sensor, light sensor, keyboard backlight)"
	depends on INPUT && X86
	select NEW_LEDS
	select LEDS_CLASS
	select INPUT_POLLDEV
	default n
	help
	  This driver provides support for the Apple System Management
	  Controller, which provides an accelerometer (Apple Sudden Motion
	  Sensor), light sensors, temperature sensors, keyboard backlight
	  control and fan control.

	  Only Intel-based Apple's computers are supported (MacBook Pro,
	  MacBook, MacMini).

	  Data from the different sensors, keyboard backlight control and fan
	  control are accessible via sysfs.

	  This driver also provides an absolute input class device, allowing
	  the laptop to act as a pinball machine-esque joystick.

	  Say Y here if you have an applicable laptop and want to experience
	  the awesome power of applesmc.

if ACPI

comment "ACPI drivers"

config SENSORS_ATK0110
	tristate "ASUS ATK0110"
	depends on X86 && EXPERIMENTAL
	help
	  If you say yes here you get support for the ACPI hardware
	  monitoring interface found in many ASUS motherboards. This
	  driver will provide readings of fans, voltages and temperatures
	  through the system firmware.

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

config SENSORS_LIS3LV02D
	tristate "STMicroeletronics LIS3LV02Dx three-axis digital accelerometer"
	depends on INPUT
	select INPUT_POLLDEV
	select NEW_LEDS
	select LEDS_CLASS
	default n
	help
	  This driver provides support for the LIS3LV02Dx accelerometer. In
	  particular, it can be found in a number of HP laptops, which have the
	  "Mobile Data Protection System 3D" or "3D DriveGuard" feature. On such
	  systems the driver should load automatically (via ACPI). The
	  accelerometer might also be found in other systems, connected via SPI
	  or I2C.  The accelerometer data is readable via
	  /sys/devices/platform/lis3lv02d.

	  This driver also provides an absolute input class device, allowing
	  the laptop to act as a pinball machine-esque joystick. On HP laptops,
	  if the led infrastructure is activated, support for a led indicating
	  disk protection will be provided as hp:red:hddprotection.

	  This driver can also be built as modules.  If so, the core module
	  will be called lis3lv02d and a specific module for HP laptops will be
	  called hp_accel.

	  Say Y here if you have an applicable laptop and want to experience
	  the awesome power of lis3lv02d.

endif # ACPI

endif # HWMON
