diff options
Diffstat (limited to 'drivers/iio/buffer/industrialio-triggered-buffer.c')
-rw-r--r-- | drivers/iio/buffer/industrialio-triggered-buffer.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/drivers/iio/buffer/industrialio-triggered-buffer.c b/drivers/iio/buffer/industrialio-triggered-buffer.c index 4b2858ba1fd6..d3db1fce54d2 100644 --- a/drivers/iio/buffer/industrialio-triggered-buffer.c +++ b/drivers/iio/buffer/industrialio-triggered-buffer.c | |||
@@ -98,6 +98,48 @@ void iio_triggered_buffer_cleanup(struct iio_dev *indio_dev) | |||
98 | } | 98 | } |
99 | EXPORT_SYMBOL(iio_triggered_buffer_cleanup); | 99 | EXPORT_SYMBOL(iio_triggered_buffer_cleanup); |
100 | 100 | ||
101 | static void devm_iio_triggered_buffer_clean(struct device *dev, void *res) | ||
102 | { | ||
103 | iio_triggered_buffer_cleanup(*(struct iio_dev **)res); | ||
104 | } | ||
105 | |||
106 | int devm_iio_triggered_buffer_setup(struct device *dev, | ||
107 | struct iio_dev *indio_dev, | ||
108 | irqreturn_t (*h)(int irq, void *p), | ||
109 | irqreturn_t (*thread)(int irq, void *p), | ||
110 | const struct iio_buffer_setup_ops *ops) | ||
111 | { | ||
112 | struct iio_dev **ptr; | ||
113 | int ret; | ||
114 | |||
115 | ptr = devres_alloc(devm_iio_triggered_buffer_clean, sizeof(*ptr), | ||
116 | GFP_KERNEL); | ||
117 | if (!ptr) | ||
118 | return -ENOMEM; | ||
119 | |||
120 | *ptr = indio_dev; | ||
121 | |||
122 | ret = iio_triggered_buffer_setup(indio_dev, h, thread, ops); | ||
123 | if (!ret) | ||
124 | devres_add(dev, ptr); | ||
125 | else | ||
126 | devres_free(ptr); | ||
127 | |||
128 | return ret; | ||
129 | } | ||
130 | EXPORT_SYMBOL_GPL(devm_iio_triggered_buffer_setup); | ||
131 | |||
132 | void devm_iio_triggered_buffer_cleanup(struct device *dev, | ||
133 | struct iio_dev *indio_dev) | ||
134 | { | ||
135 | int rc; | ||
136 | |||
137 | rc = devres_release(dev, devm_iio_triggered_buffer_clean, | ||
138 | devm_iio_device_match, indio_dev); | ||
139 | WARN_ON(rc); | ||
140 | } | ||
141 | EXPORT_SYMBOL_GPL(devm_iio_triggered_buffer_cleanup); | ||
142 | |||
101 | MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>"); | 143 | MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>"); |
102 | MODULE_DESCRIPTION("IIO helper functions for setting up triggered buffers"); | 144 | MODULE_DESCRIPTION("IIO helper functions for setting up triggered buffers"); |
103 | MODULE_LICENSE("GPL"); | 145 | MODULE_LICENSE("GPL"); |