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 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 | 206 +++++++++++++++++++++++++++++++++ drivers/iio/trigger/Kconfig | 10 ++ drivers/iio/trigger/Makefile | 2 + drivers/iio/trigger/iio-trig-hrtimer.c | 193 ++++++++++++++++++++++++++++++ fs/configfs/dir.c | 102 ++++++++++++++++ include/linux/configfs.h | 8 ++ include/linux/iio/sw_trigger.h | 71 ++++++++++++ 12 files changed, 774 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-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html