linux/drivers/staging/iio
Lars-Peter Clausen 5f420b4207 staging:iio: Add extended IIO channel info
Sometimes devices have per channel properties which either do not map nicely to
the current channel info scheme (e.g. string properties) or are very device
specific, so it does not make sense to add generic support for them.

Currently drivers define these attributes by hand for each channel. Depending on
the number of channels this can amount to quite a few lines of boilerplate code.
Especially if a driver supports multiple variations of a chip with different
numbers of channels. In this case it becomes necessary to have a individual
attribute list per chip variation and also a individual iio_info struct.

This patch introduces a new scheme for handling such per channel attributes
called extended channel info attributes. A extended channel info attribute
consist of a name, a flag whether it is shared and read and write callbacks.
The read and write callbacks are similar to the {read,write}_raw callbacks and
take a IIO device and a channel as their first parameters, but instead of
pre-parsed integer values they directly get passed the raw string value, which
has been written to the sysfs file.

It is possible to assign a list of extended channel info attributes to a
channel. For each extended channel info attribute the IIO core will create a new
sysfs attribute conforming to the IIO channel naming spec for the channels type,
similar as for normal info attributes. Read and write access to this sysfs
attribute will be redirected to the extended channel info attributes read and
write callbacks.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-02-24 12:12:24 -08:00
..
accel staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
adc staging: iio: LPC32xx: ADC driver 2012-02-15 17:21:43 -08:00
addac staging:iio: Use dev_pm_ops 2012-02-24 12:11:13 -08:00
cdc staging:iio: Rename IIO_EVENT_CODE_EXTRACT_NUM to IIO_EVENT_CODE_EXTRACT_CHAN 2012-02-13 20:10:32 -08:00
dac staging:iio: Convert remaining drivers to module_spi_driver 2012-02-24 12:11:13 -08:00
dds staging:iio:dds:ad9834 unwind use of is_visible for attrs. 2012-02-09 10:06:05 -08:00
Documentation staging:iio:Documentation in kernel pull description. 2012-02-24 12:10:04 -08:00
gyro staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
impedance-analyzer staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
imu staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
light staging:iio: Use dev_pm_ops 2012-02-24 12:11:13 -08:00
magnetometer staging:iio: Use dev_pm_ops 2012-02-24 12:11:13 -08:00
meter staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
resolver Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging 2012-01-09 12:18:17 -08:00
trigger staging:iio: iio_trigger contains defunct owner field. Remove it. 2011-12-16 10:56:26 -08:00
buffer.h staging:iio: Drop {mark,unmark}_in_use callbacks 2011-12-22 13:38:10 -08:00
consumer.h staging:iio:core add in kernel interface mapping and getting IIO channels. 2012-02-24 12:10:02 -08:00
driver.h staging:iio:core add in kernel interface mapping and getting IIO channels. 2012-02-24 12:10:02 -08:00
events.h staging:iio: Add missing event code extract macros 2012-02-13 20:10:32 -08:00
iio_core_trigger.h staging:iio:triggers Remove unecessary existence checks and return val 2011-11-26 16:30:30 -08:00
iio_core.h staging:iio: Factor out event handling into its own file 2012-02-09 10:05:06 -08:00
iio_dummy_evgen.c iio: Don't OOPS if dummy evgen failed init 2011-11-26 16:52:44 -08:00
iio_dummy_evgen.h staging:iio:dummy Add event support + fake event generator 2011-10-17 15:36:30 -07:00
iio_hwmon.c staging:iio::hwmon interface client driver. 2012-02-24 12:10:03 -08:00
iio_simple_dummy_buffer.c staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
iio_simple_dummy_events.c staging:iio: header reorganization 2011-11-26 16:35:04 -08:00
iio_simple_dummy.c staging: iio: Use kcalloc instead of kzalloc to allocate array 2011-11-30 19:37:33 +09:00
iio_simple_dummy.h staging:iio:dummy Add buffered reading support 2011-10-17 15:36:30 -07:00
iio.h staging:iio: Add extended IIO channel info 2012-02-24 12:12:24 -08:00
industrialio-buffer.c staging:iio: Drop {mark,unmark}_in_use callbacks 2011-12-22 13:38:10 -08:00
industrialio-core.c staging:iio: Add extended IIO channel info 2012-02-24 12:12:24 -08:00
industrialio-event.c staging:iio:events: Remove obsolete documentation 2012-02-13 20:10:32 -08:00
industrialio-trigger.c Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging 2012-01-09 12:18:17 -08:00
inkern.c staging:iio:core add in kernel interface mapping and getting IIO channels. 2012-02-24 12:10:02 -08:00
Kconfig staging:iio::hwmon interface client driver. 2012-02-24 12:10:03 -08:00
kfifo_buf.c staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
kfifo_buf.h staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
machine.h staging:iio:core add in kernel interface mapping and getting IIO channels. 2012-02-24 12:10:02 -08:00
Makefile staging:iio::hwmon interface client driver. 2012-02-24 12:10:03 -08:00
ring_hw.h staging:iio: replacing term ring with buffer in the IIO core. 2011-09-26 17:31:53 -07:00
ring_sw.c staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
ring_sw.h staging:iio: Setup buffer access functions when allocating the buffer 2012-02-09 10:03:51 -08:00
sysfs.h staging:iio: header reorganization 2011-11-26 16:35:04 -08:00
TODO staging: iio: add ADI info to TODO 2010-11-09 15:46:32 -08:00
trigger_consumer.h staging:iio: treewide rename iio_triggered_ring_* to iio_triggered_buffer_* 2011-09-26 17:31:52 -07:00
trigger.h staging:iio: iio_trigger contains defunct owner field. Remove it. 2011-12-16 10:56:26 -08:00
types.h staging:iio: move iio data return types into types.h for use by inkern 2012-02-24 12:10:03 -08:00