#
# Light sensors
#
# When adding new entries keep the list in alphabetical order

menu "Light sensors"

config ACPI_ALS
	tristate "ACPI Ambient Light Sensor"
	depends on ACPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select IIO_KFIFO_BUF
	help
	 Say Y here if you want to build a driver for the ACPI0008
	 Ambient Light Sensor.

	 To compile this driver as a module, choose M here: the module will
	 be called acpi-als.

config ADJD_S311
	tristate "ADJD-S311-CR999 digital color sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	depends on I2C
	help
	 If you say yes here you get support for the Avago ADJD-S311-CR999
	 digital color light sensor.

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

config AL3320A
	tristate "AL3320A ambient light sensor"
	depends on I2C
	help
	 Say Y here if you want to build a driver for the Dyna Image AL3320A
	 ambient light sensor.

	 To compile this driver as a module, choose M here: the
	 module will be called al3320a.

config APDS9300
	tristate "APDS9300 ambient light sensor"
	depends on I2C
	help
	 Say Y here if you want to build a driver for the Avago APDS9300
	 ambient light sensor.

	 To compile this driver as a module, choose M here: the
	 module will be called apds9300.

config APDS9960
	tristate "Avago APDS9960 gesture/RGB/ALS/proximity sensor"
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_KFIFO_BUF
	depends on I2C
	help
	  Say Y here to build I2C interface support for the Avago
	  APDS9960 gesture/RGB/ALS/proximity sensor.

	  To compile this driver as a module, choose M here: the
	  module will be called apds9960

config BH1750
	tristate "ROHM BH1750 ambient light sensor"
	depends on I2C
	help
	 Say Y here to build support for the ROHM BH1710, BH1715, BH1721,
	 BH1750, BH1751 ambient light sensors.

	 To compile this driver as a module, choose M here: the module will
	 be called bh1750.

config CM32181
	depends on I2C
	tristate "CM32181 driver"
	help
	 Say Y here if you use cm32181.
	 This option enables ambient light sensor using
	 Capella cm32181 device driver.

	 To compile this driver as a module, choose M here:
	 the module will be called cm32181.

config CM3232
	depends on I2C
	tristate "CM3232 ambient light sensor"
	help
	 Say Y here if you use cm3232.
	 This option enables ambient light sensor using
	 Capella Microsystems cm3232 device driver.

	 To compile this driver as a module, choose M here:
	 the module will be called cm3232.

config CM3323
	depends on I2C
	tristate "Capella CM3323 color light sensor"
	help
	 Say Y here if you want to build a driver for Capella CM3323
	 color sensor.

	 To compile this driver as a module, choose M here: the module will
	 be called cm3323.

config CM36651
	depends on I2C
	tristate "CM36651 driver"
	help
	 Say Y here if you use cm36651.
	 This option enables proximity & RGB sensor using
	 Capella cm36651 device driver.

	 To compile this driver as a module, choose M here:
	 the module will be called cm36651.

config GP2AP020A00F
	tristate "Sharp GP2AP020A00F Proximity/ALS sensor"
	depends on I2C
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select IRQ_WORK
	help
	  Say Y here if you have a Sharp GP2AP020A00F proximity/ALS combo-chip
	  hooked to an I2C bus.

	  To compile this driver as a module, choose M here: the
	  module will be called gp2ap020a00f.

config ISL29125
	tristate "Intersil ISL29125 digital color light sensor"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say Y here if you want to build a driver for the Intersil ISL29125
	  RGB light sensor for I2C.

	  To compile this driver as a module, choose M here: the module will be
	  called isl29125.

config HID_SENSOR_ALS
	depends on HID_SENSOR_HUB
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select HID_SENSOR_IIO_COMMON
	select HID_SENSOR_IIO_TRIGGER
	tristate "HID ALS"
	help
	  Say yes here to build support for the HID SENSOR
	  Ambient light sensor.

	  To compile this driver as a module, choose M here: the
	  module will be called hid-sensor-als.

config HID_SENSOR_PROX
	depends on HID_SENSOR_HUB
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select HID_SENSOR_IIO_COMMON
	select HID_SENSOR_IIO_TRIGGER
	tristate "HID PROX"
	help
	  Say yes here to build support for the HID SENSOR
	  Proximity sensor.

	  To compile this driver as a module, choose M here: the
	  module will be called hid-sensor-prox.

config JSA1212
	tristate "JSA1212 ALS and proximity sensor driver"
	depends on I2C
	select REGMAP_I2C
	help
	 Say Y here if you want to build a IIO driver for JSA1212
	 proximity & ALS sensor device.

	 To compile this driver as a module, choose M here:
	 the module will be called jsa1212.

config RPR0521
	tristate "ROHM RPR0521 ALS and proximity sensor driver"
	depends on I2C
	select REGMAP_I2C
	help
	 Say Y here if you want to build support for ROHM's RPR0521
	 ambient light and proximity sensor device.

	 To compile this driver as a module, choose M here:
	 the module will be called rpr0521.

config SENSORS_LM3533
	tristate "LM3533 ambient light sensor"
	depends on MFD_LM3533
	help
	  If you say yes here you get support for the ambient light sensor
	  interface on National Semiconductor / TI LM3533 Lighting Power
	  chips.

	  The sensor interface can be used to control the LEDs and backlights
	  of the chip through defining five light zones and three sets of
	  corresponding output-current values.

	  The driver provides raw and mean adc readings along with the current
	  light zone through sysfs. A threshold event can be generated on zone
	  changes. The ALS-control output values can be set per zone for the
	  three current output channels.

config LTR501
	tristate "LTR-501ALS-01 light sensor"
	depends on I2C
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	 If you say yes here you get support for the Lite-On LTR-501ALS-01
	 ambient light and proximity sensor. This driver also supports LTR-559
	 ALS/PS or LTR-301 ALS sensors.

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

config OPT3001
	tristate "Texas Instruments OPT3001 Light Sensor"
	depends on I2C
	help
	  If you say Y or M here, you get support for Texas Instruments
	  OPT3001 Ambient Light Sensor.

	  If built as a dynamically linked module, it will be called
	  opt3001.

config PA12203001
        tristate "TXC PA12203001 light and proximity sensor"
        depends on I2C
        select REGMAP_I2C
        help
         If you say yes here you get support for the TXC PA12203001
         ambient light and proximity sensor.

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

config STK3310
	tristate "STK3310 ALS and proximity sensor"
	depends on I2C
	select REGMAP_I2C
	help
	 Say yes here to get support for the Sensortek STK3310 ambient light
	 and proximity sensor. The STK3311 model is also supported by this
	 driver.

	 Choosing M will build the driver as a module. If so, the module
	 will be called stk3310.

config TCS3414
	tristate "TAOS TCS3414 digital color sensor"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	 If you say yes here you get support for the TAOS TCS3414
	 family of digital color sensors.

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

config TCS3472
	tristate "TAOS TCS3472 color light-to-digital converter"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	 If you say yes here you get support for the TAOS TCS3472
	 family of color light-to-digital converters with IR filter.

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

config SENSORS_TSL2563
	tristate "TAOS TSL2560, TSL2561, TSL2562 and TSL2563 ambient light sensors"
	depends on I2C
	help
	 If you say yes here you get support for the Taos TSL2560,
	 TSL2561, TSL2562 and TSL2563 ambient light sensors.

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

config TSL4531
	tristate "TAOS TSL4531 ambient light sensors"
	depends on I2C
	help
	 Say Y here if you want to build a driver for the TAOS TSL4531 family
	 of ambient light sensors with direct lux output.

	 To compile this driver as a module, choose M here: the
	 module will be called tsl4531.

config US5182D
	tristate "UPISEMI light and proximity sensor"
	depends on I2C
	help
	 If you say yes here you get support for the UPISEMI US5182D
	 ambient light and proximity sensor.

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

config VCNL4000
	tristate "VCNL4000 combined ALS and proximity sensor"
	depends on I2C
	help
	 Say Y here if you want to build a driver for the Vishay VCNL4000
	 combined ambient light and proximity sensor.

	 To compile this driver as a module, choose M here: the
	 module will be called vcnl4000.

endmenu
