cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

bh1770glc.rst (3685B)


      1.. SPDX-License-Identifier: GPL-2.0
      2
      3=======================
      4Kernel driver bh1770glc
      5=======================
      6
      7Supported chips:
      8
      9- ROHM BH1770GLC
     10- OSRAM SFH7770
     11
     12Data sheet:
     13Not freely available
     14
     15Author:
     16Samu Onkalo <samu.p.onkalo@nokia.com>
     17
     18Description
     19-----------
     20BH1770GLC and SFH7770 are combined ambient light and proximity sensors.
     21ALS and proximity parts operates on their own, but they shares common I2C
     22interface and interrupt logic. In principle they can run on their own,
     23but ALS side results are used to estimate reliability of the proximity sensor.
     24
     25ALS produces 16 bit lux values. The chip contains interrupt logic to produce
     26low and high threshold interrupts.
     27
     28Proximity part contains IR-led driver up to 3 IR leds. The chip measures
     29amount of reflected IR light and produces proximity result. Resolution is
     308 bit. Driver supports only one channel. Driver uses ALS results to estimate
     31reliability of the proximity results. Thus ALS is always running while
     32proximity detection is needed.
     33
     34Driver uses threshold interrupts to avoid need for polling the values.
     35Proximity low interrupt doesn't exists in the chip. This is simulated
     36by using a delayed work. As long as there is proximity threshold above
     37interrupts the delayed work is pushed forward. So, when proximity level goes
     38below the threshold value, there is no interrupt and the delayed work will
     39finally run. This is handled as no proximity indication.
     40
     41Chip state is controlled via runtime pm framework when enabled in config.
     42
     43Calibscale factor is used to hide differences between the chips. By default
     44value set to neutral state meaning factor of 1.00. To get proper values,
     45calibrated source of light is needed as a reference. Calibscale factor is set
     46so that measurement produces about the expected lux value.
     47
     48SYSFS
     49-----
     50
     51chip_id
     52	RO - shows detected chip type and version
     53
     54power_state
     55	RW - enable / disable chip
     56
     57	Uses counting logic
     58
     59	     - 1 enables the chip
     60	     - 0 disables the chip
     61
     62lux0_input
     63	RO - measured lux value
     64
     65	     sysfs_notify called when threshold interrupt occurs
     66
     67lux0_sensor_range
     68	RO - lux0_input max value
     69
     70lux0_rate
     71	RW - measurement rate in Hz
     72
     73lux0_rate_avail
     74	RO - supported measurement rates
     75
     76lux0_thresh_above_value
     77	RW - HI level threshold value
     78
     79	     All results above the value
     80	     trigs an interrupt. 65535 (i.e. sensor_range) disables the above
     81	     interrupt.
     82
     83lux0_thresh_below_value
     84	RW - LO level threshold value
     85
     86	     All results below the value
     87	     trigs an interrupt. 0 disables the below interrupt.
     88
     89lux0_calibscale
     90	RW - calibration value
     91
     92	     Set to neutral value by default.
     93	     Output results are multiplied with calibscale / calibscale_default
     94	     value.
     95
     96lux0_calibscale_default
     97	RO - neutral calibration value
     98
     99prox0_raw
    100	RO - measured proximity value
    101
    102	     sysfs_notify called when threshold interrupt occurs
    103
    104prox0_sensor_range
    105	RO - prox0_raw max value
    106
    107prox0_raw_en
    108	RW - enable / disable proximity
    109
    110	     Uses counting logic
    111
    112	     - 1 enables the proximity
    113	     - 0 disables the proximity
    114
    115prox0_thresh_above_count
    116	RW - number of proximity interrupts needed before triggering the event
    117
    118prox0_rate_above
    119	RW - Measurement rate (in Hz) when the level is above threshold
    120	i.e. when proximity on has been reported.
    121
    122prox0_rate_below
    123	RW - Measurement rate (in Hz) when the level is below threshold
    124	i.e. when proximity off has been reported.
    125
    126prox0_rate_avail
    127	RO - Supported proximity measurement rates in Hz
    128
    129prox0_thresh_above0_value
    130	RW - threshold level which trigs proximity events.
    131
    132	     Filtered by persistence filter (prox0_thresh_above_count)
    133
    134prox0_thresh_above1_value
    135	RW - threshold level which trigs event immediately