mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
![Linus Walleij](/assets/img/avatar_default.png)
This adds a driver for the Capella Microsystems CM3605 Ambient Light Sensor and proximity sensor. This is a pretty simple entirely analog device that is interfaced with the target system using the POUT (proximity out) and AOUT (ambient light out) signals. The POUT signal is a simple high/low signal that indicates whether an object is in proximity, most typically used to detect a face in front of a mobile device. The signal requires that an infrared LED is mounted next to the device, making IR light reflect off the object in proximity and triggering the POUT signal. We grab a GPIO pin to handle the POUT signal as an interrupt line and register this as an event channel for the sensor. Since the proximity sensor requires an IR LED, we add a LED trigger named "cm3605" so that the infrared LED can just associate with this trigger to be sure it is always on when the proximity sensor needs it. The AOUT is an analog voltage between 0 and 1550 mV that indicate the LUX value in the ambient light: this is orthogonal to the proximity sensor functionality. Since this analog voltage needs to be converted into a digital value, the driver grabs an IIO channel named "aout" associated with the device. This patch created a combined ALS and proximity sensor driver. The former supports raw reads of the LUX value and the latter will generate proximity events. To integrate this properly with Linux we also add a supply regulator for the VDD pin (driving both functions) and add device tree bindings to define the RSET resistor that in turn configures the luminosity range of the ALS sensor. Since the sensor needs to be on more or less constantly, we restrict the power management to system suspend/resume: we disable the IR LED and disable the regulator for VDD on suspend and take them back up on resume. Tests: cd /sys/bus/iio/devices/iio:device1 cat in_illuminance_raw 304 (hold hand over sensor) cat in_illuminance_raw 17 iio_event_monitor cm3605 Found IIO device with name cm3605 with device number 1 (hold hand over sensor) Event: time: 2444842301447, type: proximity, channel: 0, evtype: thresh, direction: falling (remove hand over sensor) Event: time: 2445583440706, type: proximity, channel: 0, evtype: thresh, direction: rising Cc: Capella Microsystems <capellamicro@gmail.com> Cc: Kevin Tsai <ktsai@capellamicro.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
398 lines
11 KiB
Text
398 lines
11 KiB
Text
#
|
|
# 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 BH1780
|
|
tristate "ROHM BH1780 ambient light sensor"
|
|
depends on I2C
|
|
help
|
|
Say Y here to build support for the ROHM BH1780GLI ambient
|
|
light sensor.
|
|
|
|
To compile this driver as a module, choose M here: the module will
|
|
be called bh1780.
|
|
|
|
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 CM3605
|
|
tristate "Capella CM3605 ambient light and proximity sensor"
|
|
depends on OF
|
|
help
|
|
Say Y here if you want to build a driver for Capella CM3605
|
|
ambient light and short range proximity sensor.
|
|
|
|
To compile this driver as a module, choose M here: the module will
|
|
be called cm3605.
|
|
|
|
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 SENSORS_ISL29018
|
|
tristate "Intersil 29018 light and proximity sensor"
|
|
depends on I2C
|
|
select REGMAP_I2C
|
|
default n
|
|
help
|
|
If you say yes here you get support for ambient light sensing and
|
|
proximity infrared sensing from Intersil ISL29018.
|
|
This driver will provide the measurements of ambient light intensity
|
|
in lux, proximity infrared sensing and normal infrared sensing.
|
|
Data from sensor is accessible via sysfs.
|
|
|
|
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 MAX44000
|
|
tristate "MAX44000 Ambient and Infrared Proximity Sensor"
|
|
depends on I2C
|
|
select REGMAP_I2C
|
|
select IIO_BUFFER
|
|
select IIO_TRIGGERED_BUFFER
|
|
help
|
|
Say Y here if you want to build support for Maxim Integrated's
|
|
MAX44000 ambient and infrared proximity sensor device.
|
|
|
|
To compile this driver as a module, choose M here:
|
|
the module will be called max44000.
|
|
|
|
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 SI1145
|
|
tristate "SI1132 and SI1141/2/3/5/6/7 combined ALS, UV index and proximity sensor"
|
|
depends on I2C
|
|
select IIO_BUFFER
|
|
select IIO_TRIGGERED_BUFFER
|
|
help
|
|
Say Y here if you want to build a driver for the Silicon Labs SI1132 or
|
|
SI1141/2/3/5/6/7 combined ambient light, UV index and proximity sensor
|
|
chips.
|
|
|
|
To compile this driver as a module, choose M here: the module will be
|
|
called si1145.
|
|
|
|
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 TSL2583
|
|
tristate "TAOS TSL2580, TSL2581 and TSL2583 light-to-digital converters"
|
|
depends on I2C
|
|
help
|
|
Provides support for the TAOS tsl2580, tsl2581 and tsl2583 devices.
|
|
Access ALS data via iio, sysfs.
|
|
|
|
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/4010/4020 combined ALS and proximity sensor"
|
|
depends on I2C
|
|
help
|
|
Say Y here if you want to build a driver for the Vishay VCNL4000,
|
|
VCNL4010, VCNL4020 combined ambient light and proximity sensor.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called vcnl4000.
|
|
|
|
config VEML6070
|
|
tristate "VEML6070 UV A light sensor"
|
|
depends on I2C
|
|
help
|
|
Say Y here if you want to build a driver for the Vishay VEML6070 UV A
|
|
light sensor.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called veml6070.
|
|
|
|
endmenu
|