mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.6 KiB
135 lines
3.6 KiB
.. SPDX-License-Identifier: GPL-2.0 |
|
|
|
======================= |
|
Kernel driver bh1770glc |
|
======================= |
|
|
|
Supported chips: |
|
|
|
- ROHM BH1770GLC |
|
- OSRAM SFH7770 |
|
|
|
Data sheet: |
|
Not freely available |
|
|
|
Author: |
|
Samu Onkalo <[email protected]> |
|
|
|
Description |
|
----------- |
|
BH1770GLC and SFH7770 are combined ambient light and proximity sensors. |
|
ALS and proximity parts operates on their own, but they shares common I2C |
|
interface and interrupt logic. In principle they can run on their own, |
|
but ALS side results are used to estimate reliability of the proximity sensor. |
|
|
|
ALS produces 16 bit lux values. The chip contains interrupt logic to produce |
|
low and high threshold interrupts. |
|
|
|
Proximity part contains IR-led driver up to 3 IR leds. The chip measures |
|
amount of reflected IR light and produces proximity result. Resolution is |
|
8 bit. Driver supports only one channel. Driver uses ALS results to estimate |
|
reliability of the proximity results. Thus ALS is always running while |
|
proximity detection is needed. |
|
|
|
Driver uses threshold interrupts to avoid need for polling the values. |
|
Proximity low interrupt doesn't exists in the chip. This is simulated |
|
by using a delayed work. As long as there is proximity threshold above |
|
interrupts the delayed work is pushed forward. So, when proximity level goes |
|
below the threshold value, there is no interrupt and the delayed work will |
|
finally run. This is handled as no proximity indication. |
|
|
|
Chip state is controlled via runtime pm framework when enabled in config. |
|
|
|
Calibscale factor is used to hide differences between the chips. By default |
|
value set to neutral state meaning factor of 1.00. To get proper values, |
|
calibrated source of light is needed as a reference. Calibscale factor is set |
|
so that measurement produces about the expected lux value. |
|
|
|
SYSFS |
|
----- |
|
|
|
chip_id |
|
RO - shows detected chip type and version |
|
|
|
power_state |
|
RW - enable / disable chip |
|
|
|
Uses counting logic |
|
|
|
- 1 enables the chip |
|
- 0 disables the chip |
|
|
|
lux0_input |
|
RO - measured lux value |
|
|
|
sysfs_notify called when threshold interrupt occurs |
|
|
|
lux0_sensor_range |
|
RO - lux0_input max value |
|
|
|
lux0_rate |
|
RW - measurement rate in Hz |
|
|
|
lux0_rate_avail |
|
RO - supported measurement rates |
|
|
|
lux0_thresh_above_value |
|
RW - HI level threshold value |
|
|
|
All results above the value |
|
trigs an interrupt. 65535 (i.e. sensor_range) disables the above |
|
interrupt. |
|
|
|
lux0_thresh_below_value |
|
RW - LO level threshold value |
|
|
|
All results below the value |
|
trigs an interrupt. 0 disables the below interrupt. |
|
|
|
lux0_calibscale |
|
RW - calibration value |
|
|
|
Set to neutral value by default. |
|
Output results are multiplied with calibscale / calibscale_default |
|
value. |
|
|
|
lux0_calibscale_default |
|
RO - neutral calibration value |
|
|
|
prox0_raw |
|
RO - measured proximity value |
|
|
|
sysfs_notify called when threshold interrupt occurs |
|
|
|
prox0_sensor_range |
|
RO - prox0_raw max value |
|
|
|
prox0_raw_en |
|
RW - enable / disable proximity |
|
|
|
Uses counting logic |
|
|
|
- 1 enables the proximity |
|
- 0 disables the proximity |
|
|
|
prox0_thresh_above_count |
|
RW - number of proximity interrupts needed before triggering the event |
|
|
|
prox0_rate_above |
|
RW - Measurement rate (in Hz) when the level is above threshold |
|
i.e. when proximity on has been reported. |
|
|
|
prox0_rate_below |
|
RW - Measurement rate (in Hz) when the level is below threshold |
|
i.e. when proximity off has been reported. |
|
|
|
prox0_rate_avail |
|
RO - Supported proximity measurement rates in Hz |
|
|
|
prox0_thresh_above0_value |
|
RW - threshold level which trigs proximity events. |
|
|
|
Filtered by persistence filter (prox0_thresh_above_count) |
|
|
|
prox0_thresh_above1_value |
|
RW - threshold level which trigs event immediately
|
|
|