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"
|
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
|
config LIDAR_LITE_V2
|
||||||
tristate "PulsedLight LIDAR sensor"
|
tristate "PulsedLight LIDAR sensor"
|
||||||
select IIO_BUFFER
|
select IIO_BUFFER
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
# When adding new entries keep the list in alphabetical order
|
# When adding new entries keep the list in alphabetical order
|
||||||
obj-$(CONFIG_AS3935) += as3935.o
|
obj-$(CONFIG_AS3935) += as3935.o
|
||||||
|
obj-$(CONFIG_ISL29501) += isl29501.o
|
||||||
obj-$(CONFIG_LIDAR_LITE_V2) += pulsedlight-lidar-lite-v2.o
|
obj-$(CONFIG_LIDAR_LITE_V2) += pulsedlight-lidar-lite-v2.o
|
||||||
obj-$(CONFIG_RFD77402) += rfd77402.o
|
obj-$(CONFIG_RFD77402) += rfd77402.o
|
||||||
obj-$(CONFIG_SRF04) += srf04.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…
Add table
Reference in a new issue