Linux Audio

Check our new training course

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