iio: light: isl29501: Add support for the ISL29501 ToF sensor.
This patch adds support for the ISL29501 Time of Flight sensor. Signed-off-by: Mathieu Othacehe <m.othacehe@gmail.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
c73314e6eb
commit
1c28799257
5 changed files with 1101 additions and 0 deletions
47
Documentation/ABI/testing/sysfs-bus-iio-isl29501
Normal file
47
Documentation/ABI/testing/sysfs-bus-iio-isl29501
Normal file
|
@ -0,0 +1,47 @@
|
|||
What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_agc_gain
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_agc_gain_bias
|
||||
KernelVersion: 4.18
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
This sensor has an automatic gain control (agc) loop
|
||||
which sets the analog signal levels at an optimum
|
||||
level by controlling programmable gain amplifiers. The
|
||||
criteria for optimal gain is determined by the sensor.
|
||||
|
||||
Return the actual gain value as an integer in [0; 65536]
|
||||
range when read from.
|
||||
|
||||
The agc gain read when measuring crosstalk shall be
|
||||
written into in_proximity0_agc_gain_bias.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calib_phase_temp_a
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calib_phase_temp_b
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calib_phase_light_a
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calib_phase_light_b
|
||||
KernelVersion: 4.18
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
The sensor is able to perform correction of distance
|
||||
measurements due to changing temperature and ambient
|
||||
light conditions. It can be programmed to correct for
|
||||
a second order error polynomial.
|
||||
|
||||
Phase data has to be collected when temperature and
|
||||
ambient light are modulated independently.
|
||||
|
||||
Then a least squares curve fit to a second order
|
||||
polynomial has to be generated from the data. The
|
||||
resultant curves have the form ax^2 + bx + c.
|
||||
|
||||
From those two curves, a and b coefficients shall be
|
||||
stored in in_proximity0_calib_phase_temp_a and
|
||||
in_proximity0_calib_phase_temp_b for temperature and
|
||||
in in_proximity0_calib_phase_light_a and
|
||||
in_proximity0_calib_phase_light_b for ambient light.
|
||||
|
||||
Those values must be integer in [0; 8355840] range.
|
||||
|
||||
Finally, the c constant is set by the sensor
|
||||
internally.
|
||||
|
||||
The value stored in sensor is displayed when read from.
|
13
Documentation/devicetree/bindings/iio/light/isl29501.txt
Normal file
13
Documentation/devicetree/bindings/iio/light/isl29501.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
* ISL29501 Time-of-flight sensor.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible : should be "renesas,isl29501"
|
||||
- reg : the I2C address of the sensor
|
||||
|
||||
Example:
|
||||
|
||||
isl29501@57 {
|
||||
compatible = "renesas,isl29501";
|
||||
reg = <0x57>;
|
||||
};
|
|
@ -20,6 +20,19 @@ endmenu
|
|||
|
||||
menu "Proximity and distance sensors"
|
||||
|
||||
config ISL29501
|
||||
tristate "Intersil ISL29501 Time Of Flight sensor"
|
||||
depends on I2C
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select IIO_KFIFO_BUF
|
||||
help
|
||||
Say Y here if you want to build a driver for the Intersil ISL29501
|
||||
Time of Flight sensor.
|
||||
|
||||
To compile this driver as a module, choose M here: the module will be
|
||||
called isl29501.
|
||||
|
||||
config LIDAR_LITE_V2
|
||||
tristate "PulsedLight LIDAR sensor"
|
||||
select IIO_BUFFER
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
# When adding new entries keep the list in alphabetical order
|
||||
obj-$(CONFIG_AS3935) += as3935.o
|
||||
obj-$(CONFIG_ISL29501) += isl29501.o
|
||||
obj-$(CONFIG_LIDAR_LITE_V2) += pulsedlight-lidar-lite-v2.o
|
||||
obj-$(CONFIG_RFD77402) += rfd77402.o
|
||||
obj-$(CONFIG_SRF04) += srf04.o
|
||||
|
|
1027
drivers/iio/proximity/isl29501.c
Normal file
1027
drivers/iio/proximity/isl29501.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue