linux/drivers/iio
Peter Meerwald 899d90bdf4 iio: Add INT_TIME (integration time) channel info attribute
Integration time is in seconds; it controls the measurement
time and influences the gain of a sensor.

There are two typical ways that scaling is implemented in a device:
1) input amplifier,
2) reference to the ADC is changed.
These both result in the accuracy of the ADC varying (by applying its
sampling over a more relevant range).

Integration time is a way of dealing with noise inherent in the analog
sensor itself.  In the case of a light sensor, a mixture of photon noise
and device specific noise.  Photon noise is dealt with by either improving
the efficiency of the sensor, (more photons actually captured) which is not
easily varied dynamically, or by integrating the measurement over a longer
time period.  Note that this can also be thought of as an averaging of a
number of individual samples and is infact sometimes implemented this way.
Altering integration time implies that the duration of a measurement changes,
a fact the device's user may be interested in.

Hence it makes sense to distinguish between integration time and simple
scale. In some devices both types of control are present and whilst they
will have similar effects on the amplitude of the reading, their effect
on the noise of the measurements will differ considerably.

Used by adjd_s311, tsl4531, tcs3472
The following drivers have similar controls (and could be adapted):
* tsl2563 (integration time is controlled via CALIBSCALE among other things)
* tsl2583 (has integration_time device_attr, but driver doesn't use channels yet)
* tsl2x7x (has integration_time attr)

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Cc: Jon Brenner <jon.brenner@ams.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2013-09-14 21:16:44 +01:00
..
accel iio: add Bosch BMA180 acceleration sensor driver 2013-08-28 20:12:22 +01:00
adc iio: adc: Add driver for Microchip MCP3422/3/4 high resolution ADC 2013-09-07 22:17:44 +01:00
amplifiers iio: amplifiers: ad8366: Use devm_* APIs 2013-08-03 21:00:15 +01:00
common iio: Add a comment to about alphabetical order to Kconfigs and Makefiles 2013-08-03 18:40:36 +01:00
dac iio: dac: ad5686: Remove redundant break 2013-09-14 11:37:01 +01:00
frequency iio: frequency: ad9523: Use devm_* APIs 2013-08-03 21:01:27 +01:00
gyro iio: gyro: adxrs450: Remove redundant break 2013-09-14 11:37:01 +01:00
imu iio: imu: inv_mpu6050: Use devm_iio_device_alloc 2013-08-03 18:55:24 +01:00
light iio: adjd_s311: Cleanup unused #defines 2013-08-19 20:12:03 +01:00
magnetometer iio: Remove unnecessary _write_raw_get_fmt() in several hid-sensor drivers 2013-08-19 20:01:25 +01:00
pressure iio: pressure: st_pressure: Use devm_iio_device_alloc 2013-08-03 21:02:38 +01:00
temperature iio: Add tmp006 IR temperature sensor 2013-08-17 15:50:53 +01:00
trigger iio: Add a comment to about alphabetical order to Kconfigs and Makefiles 2013-08-03 18:40:36 +01:00
buffer_cb.c iio:callback buffer: free the scan_mask 2013-06-04 18:19:30 +01:00
iio_core_trigger.h iio: fix semicolon in io_core_trigger.h 2013-08-03 18:40:32 +01:00
iio_core.h iio: Add OF support 2013-03-16 10:17:59 +00:00
industrialio-buffer.c iio: buffer: cleanup messages in iio_update_buffers() 2013-05-22 22:16:47 +01:00
industrialio-core.c iio: Add INT_TIME (integration time) channel info attribute 2013-09-14 21:16:44 +01:00
industrialio-event.c iio: events: Make iio_push_event() IRQ context save 2013-03-17 20:04:45 +00:00
industrialio-trigger.c iio: trigger: implement devm_iio_trigger_alloc/devm_iio_triger_free 2013-08-17 19:34:52 +01:00
industrialio-triggered-buffer.c iio: Add helper function for initializing triggered buffers 2012-06-18 17:26:09 -07:00
inkern.c iio: inkern: fix iio_convert_raw_to_processed_unlocked 2013-07-03 20:30:52 +01:00
Kconfig iio: Add tmp006 IR temperature sensor 2013-08-17 15:50:53 +01:00
kfifo_buf.c staging:iio: Remove noop call to __iio_update_buffer 2013-01-31 17:56:44 +00:00
Makefile iio: Restore alphabetic order in Makefile 2013-08-17 15:50:54 +01:00