#
# Miscellaneous I2C chip drivers configuration
#
# *** DEPRECATED! Do not add new entries! See Makefile ***
#

menu "Miscellaneous I2C Chip support"

config DS1682
	tristate "Dallas DS1682 Total Elapsed Time Recorder with Alarm"
	depends on EXPERIMENTAL
	help
	  If you say yes here you get support for Dallas Semiconductor
	  DS1682 Total Elapsed Time Recorder.

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

config SENSORS_PCF8574
	tristate "Philips PCF8574 and PCF8574A (DEPRECATED)"
	depends on EXPERIMENTAL && GPIO_PCF857X = "n"
	default n
	help
	  If you say yes here you get support for Philips PCF8574 and 
	  PCF8574A chips. These chips are 8-bit I/O expanders for the I2C bus.

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

	  This driver is deprecated and will be dropped soon. Use
	  drivers/gpio/pcf857x.c instead.

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

config PCF8575
	tristate "Philips PCF8575 (DEPRECATED)"
	default n
	depends on GPIO_PCF857X = "n"
	help
	  If you say yes here you get support for Philips PCF8575 chip.
	  This chip is a 16-bit I/O expander for the I2C bus.  Several other
	  chip manufacturers sell equivalent chips, e.g. Texas Instruments.

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

	  This driver is deprecated and will be dropped soon. Use
	  drivers/gpio/pcf857x.c instead.

	  This device is hard to detect and is rarely found on mainstream
	  hardware.  If unsure, say N.

config SENSORS_PCA9539
	tristate "Philips PCA9539 16-bit I/O port (DEPRECATED)"
	depends on EXPERIMENTAL && GPIO_PCA953X = "n"
	help
	  If you say yes here you get support for the Philips PCA9539
	  16-bit I/O port.

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

	  This driver is deprecated and will be dropped soon. Use
	  drivers/gpio/pca953x.c instead.

config SENSORS_TSL2550
	tristate "Taos TSL2550 ambient light sensor"
	depends on EXPERIMENTAL
	help
	  If you say yes here you get support for the Taos TSL2550
	  ambient light sensor.

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

endmenu
