[PATCH v10 0/5] Add initial configfs support for IIO

From: Daniel Baluta
Date: Fri Oct 23 2015 - 11:31:33 EST


This patchset introduces IIO software triggers, offers a way of configuring
them via configfs and adds the IIO hrtimer based interrupt source to be used
with software triggers.

The arhitecture is now split in 3 parts, to remove all IIO trigger specific
parts from IIO configfs core:

(1) IIO configfs - creates the root of the IIO configfs subsys.
(2) IIO software triggers - software trigger implementation, dynamically
creating /config/iio/triggers group.
(3) IIO hrtimer trigger - is the first interrupt source for software triggers
(with syfs to follow). Each trigger type can implement its own set of
attributes.

Lockdep seems to be happy with the locking in configfs patch.

Changes since v9:
* introduce configfs_{un}register_default_group boilerplate code, that
does group allocation and registration
* remove configfs_alloc_group/configfs_free_group as we can directly
code them in.

Changes since v8:
* patch 1/5
* dynamically allocate groups as suggested by Christoph
* add kernel-doc documentation to the newly introduced functions
* patch 2/5
* better isolation, here we only create the root of the IIO configfs
subys, and let the other modules (e.g software triggers) to create their
group.
* patch 3/5
* dynamically create triggers/ group to better isolate the code
* fixes 0-day build warnings and compilation errors.
* patch 4/5
* none
* patch 5/5
* none

Changes since v7:
* patch 1/5
* do not add dentry parameter for create_default_group, we can
retrieve it from group.
* call configfs_detach_prep before configfs_detach_group in
configfs_unregister_group.
* call link_group/unlink_group under su_mutex lock
* take configfs_dirent_lock when calling configfs_dir_set_ready
* patch 2/5
* export iio_triggers_group, this will be later used by sw triggers
* patch 3/5
* make iio_sw_trigger part of industrialio core
* fix compilation problem reported by Vladimir and Lars. Things didn't
get well when having IIO_SW_TRIGGER enabled and IIO_CONFIGFS disabled.
* use format string in config_item_set_name
* make iio_unregister_sw_trigger_type return type void.
* patch 4/5
* none
* patch 5/5
* include a small trigger type sample example.

Changes since v6:
* implemented Lars-Peter's idea (https://lkml.org/lkml/2015/5/13/302)
to switch from /config/iio/triggers/hrtimer-instance1 to
/config/iio/triggers/instance1.

Changes since v5: (after Lars comments)
* the most important change is that we moved sampling_frequency attribute
from configfs to trigger's directory in /sys.
* couple of const added to strings
* documentation to public API in sw_trigger.h
* replace pr_err with WARN_ONCE in trigger_make_group to avoid spamming
kernel log, but without leaving user clueless in case of errors.
* we still need to decide if we get a real gain by adding min/max limits
for sampling frequency in /config dir. Anyhow, this can be done in a later
patch.
* fix race in hrtimer_remove

Changes since v4:
* patch 1/4
- fixed "new line" nit in industrialio-sw-trigger.c
- added license header in sw_trigger.h o
* patch 2/4
- none
* patch 3/4
- none
* patch 4/4
- removed "Further work" chapter in iio_configfs.txt

- added configfs-iio file in Documentation/ABI/testing

Daniel Baluta (5):
configfs: Allow dynamic group creation
iio: core: Introduce IIO configfs support
iio: core: Introduce IIO software triggers
iio: trigger: Introduce IIO hrtimer based trigger
iio: Documentation: Add IIO configfs documentation

Documentation/ABI/testing/configfs-iio | 21 ++++
Documentation/iio/iio_configfs.txt | 93 ++++++++++++++++
drivers/iio/Kconfig | 16 +++
drivers/iio/Makefile | 2 +
drivers/iio/industrialio-configfs.c | 50 +++++++++
drivers/iio/industrialio-sw-trigger.c | 183 +++++++++++++++++++++++++++++++
drivers/iio/trigger/Kconfig | 10 ++
drivers/iio/trigger/Makefile | 2 +
drivers/iio/trigger/iio-trig-hrtimer.c | 193 +++++++++++++++++++++++++++++++++
fs/configfs/dir.c | 110 +++++++++++++++++++
include/linux/configfs.h | 10 ++
include/linux/iio/sw_trigger.h | 71 ++++++++++++
12 files changed, 761 insertions(+)
create mode 100644 Documentation/ABI/testing/configfs-iio
create mode 100644 Documentation/iio/iio_configfs.txt
create mode 100644 drivers/iio/industrialio-configfs.c
create mode 100644 drivers/iio/industrialio-sw-trigger.c
create mode 100644 drivers/iio/trigger/iio-trig-hrtimer.c
create mode 100644 include/linux/iio/sw_trigger.h

--
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/