Blame view

kernel/linux-imx6_3.14.28/Documentation/misc-devices/apds990x.txt 3.47 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
  Kernel driver apds990x
  ======================
  
  Supported chips:
  Avago APDS990X
  
  Data sheet:
  Not freely available
  
  Author:
  Samu Onkalo <samu.p.onkalo@nokia.com>
  
  Description
  -----------
  
  APDS990x is a combined ambient light and proximity sensor. ALS and proximity
  functionality are highly connected. ALS measurement path must be running
  while the proximity functionality is enabled.
  
  ALS produces raw measurement values for two channels: Clear channel
  (infrared + visible light) and IR only. However, threshold comparisons happen
  using clear channel only. Lux value and the threshold level on the HW
  might vary quite much depending the spectrum of the light source.
  
  Driver makes necessary conversions to both directions so that user handles
  only lux values. Lux value is calculated using information from the both
  channels. HW threshold level is calculated from the given lux value to match
  with current type of the lightning. Sometimes inaccuracy of the estimations
  lead to false interrupt, but that doesn't harm.
  
  ALS contains 4 different gain steps. Driver automatically
  selects suitable gain step. After each measurement, reliability of the results
  is estimated and new measurement is trigged if necessary.
  
  Platform data can provide tuned values to the conversion formulas if
  values are known. Otherwise plain sensor default values are used.
  
  Proximity side is little bit simpler. There is no need for complex conversions.
  It produces directly usable values.
  
  Driver controls chip operational state using pm_runtime framework.
  Voltage regulators are controlled based on chip operational state.
  
  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. Actually never reaches since sensor tends
  	     to saturate much before that. Real max value varies depending
  	     on the light spectrum etc.
  
  lux0_rate
  	RW - measurement rate in Hz
  
  lux0_rate_avail
  	RO - supported measurement rates
  
  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
  
  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.
  
  prox0_raw
  	RO - measured proximity value
  	     sysfs_notify called when threshold interrupt occurs
  
  prox0_sensor_range
  	RO - prox0_raw max value (1023)
  
  prox0_raw_en
  	RW - enable / disable proximity - uses counting logic
  	     1 enables the proximity
  	     0 disables the proximity
  
  prox0_reporting_mode
  	RW - trigger / periodic. In "trigger" mode the driver tells two possible
  	     values: 0 or prox0_sensor_range value. 0 means no proximity,
  	     1023 means proximity. This causes minimal number of interrupts.
  	     In "periodic" mode the driver reports all values above
  	     prox0_thresh_above. This causes more interrupts, but it can give
  	     _rough_ estimate about the distance.
  
  prox0_reporting_mode_avail
  	RO - accepted values to prox0_reporting_mode (trigger, periodic)
  
  prox0_thresh_above_value
  	RW - threshold level which trigs proximity events.