#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/hrtimer.h>
#include <linux/iio/iio.h>
#include <linux/iio/trigger.h>
#include <linux/iio/sw_trigger.h>
#define PSEC_PER_SEC …
#define HRTIMER_DEFAULT_SAMPLING_FREQUENCY …
struct iio_hrtimer_info { … };
static const struct config_item_type iio_hrtimer_type = …;
static
ssize_t iio_hrtimer_show_sampling_frequency(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static
ssize_t iio_hrtimer_store_sampling_frequency(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t len)
{ … }
static DEVICE_ATTR(sampling_frequency, S_IRUGO | S_IWUSR,
iio_hrtimer_show_sampling_frequency,
iio_hrtimer_store_sampling_frequency);
static struct attribute *iio_hrtimer_attrs[] = …;
static const struct attribute_group iio_hrtimer_attr_group = …;
static const struct attribute_group *iio_hrtimer_attr_groups[] = …;
static enum hrtimer_restart iio_hrtimer_trig_handler(struct hrtimer *timer)
{ … }
static int iio_trig_hrtimer_set_state(struct iio_trigger *trig, bool state)
{ … }
static const struct iio_trigger_ops iio_hrtimer_trigger_ops = …;
static struct iio_sw_trigger *iio_trig_hrtimer_probe(const char *name)
{ … }
static int iio_trig_hrtimer_remove(struct iio_sw_trigger *swt)
{ … }
static const struct iio_sw_trigger_ops iio_trig_hrtimer_ops = …;
static struct iio_sw_trigger_type iio_trig_hrtimer = …;
module_iio_sw_trigger_driver(…);
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;