xref: /OK3568_Linux_fs/kernel/Documentation/misc-devices/isl29003.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun======================
2*4882a593SmuzhiyunKernel driver isl29003
3*4882a593Smuzhiyun======================
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunSupported chips:
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun* Intersil ISL29003
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunPrefix: 'isl29003'
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunAddresses scanned: none
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunDatasheet:
14*4882a593Smuzhiyunhttp://www.intersil.com/data/fn/fn7464.pdf
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunAuthor: Daniel Mack <daniel@caiaq.de>
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun
19*4882a593SmuzhiyunDescription
20*4882a593Smuzhiyun-----------
21*4882a593SmuzhiyunThe ISL29003 is an integrated light sensor with a 16-bit integrating type
22*4882a593SmuzhiyunADC, I2C user programmable lux range select for optimized counts/lux, and
23*4882a593SmuzhiyunI2C multi-function control and monitoring capabilities. The internal ADC
24*4882a593Smuzhiyunprovides 16-bit resolution while rejecting 50Hz and 60Hz flicker caused by
25*4882a593Smuzhiyunartificial light sources.
26*4882a593Smuzhiyun
27*4882a593SmuzhiyunThe driver allows to set the lux range, the bit resolution, the operational
28*4882a593Smuzhiyunmode (see below) and the power state of device and can read the current lux
29*4882a593Smuzhiyunvalue, of course.
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun
32*4882a593SmuzhiyunDetection
33*4882a593Smuzhiyun---------
34*4882a593Smuzhiyun
35*4882a593SmuzhiyunThe ISL29003 does not have an ID register which could be used to identify
36*4882a593Smuzhiyunit, so the detection routine will just try to read from the configured I2C
37*4882a593Smuzhiyunaddress and consider the device to be present as soon as it ACKs the
38*4882a593Smuzhiyuntransfer.
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun
41*4882a593SmuzhiyunSysfs entries
42*4882a593Smuzhiyun-------------
43*4882a593Smuzhiyun
44*4882a593Smuzhiyunrange:
45*4882a593Smuzhiyun        == ===========================
46*4882a593Smuzhiyun	0: 0 lux to 1000 lux (default)
47*4882a593Smuzhiyun	1: 0 lux to 4000 lux
48*4882a593Smuzhiyun	2: 0 lux to 16,000 lux
49*4882a593Smuzhiyun	3: 0 lux to 64,000 lux
50*4882a593Smuzhiyun        == ===========================
51*4882a593Smuzhiyun
52*4882a593Smuzhiyunresolution:
53*4882a593Smuzhiyun        == =====================
54*4882a593Smuzhiyun	0: 2^16 cycles (default)
55*4882a593Smuzhiyun	1: 2^12 cycles
56*4882a593Smuzhiyun	2: 2^8 cycles
57*4882a593Smuzhiyun	3: 2^4 cycles
58*4882a593Smuzhiyun        == =====================
59*4882a593Smuzhiyun
60*4882a593Smuzhiyunmode:
61*4882a593Smuzhiyun        == =================================================
62*4882a593Smuzhiyun	0: diode1's current (unsigned 16bit) (default)
63*4882a593Smuzhiyun	1: diode1's current (unsigned 16bit)
64*4882a593Smuzhiyun	2: difference between diodes (l1 - l2, signed 15bit)
65*4882a593Smuzhiyun        == =================================================
66*4882a593Smuzhiyun
67*4882a593Smuzhiyunpower_state:
68*4882a593Smuzhiyun        == =================================================
69*4882a593Smuzhiyun	0: device is disabled (default)
70*4882a593Smuzhiyun	1: device is enabled
71*4882a593Smuzhiyun        == =================================================
72*4882a593Smuzhiyun
73*4882a593Smuzhiyunlux (read only):
74*4882a593Smuzhiyun	returns the value from the last sensor reading
75*4882a593Smuzhiyun
76