Merge tag 'iio-for-4.15a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23...
[sfrench/cifs-2.6.git] / include / linux / iio / trigger.h
index 7142d8d6e470e13257ee12035f045bdabe1b4d7e..7d5e445183793c98b1d1decd4488f4f9de56b834 100644 (file)
@@ -23,7 +23,6 @@ struct iio_trigger;
 
 /**
  * struct iio_trigger_ops - operations structure for an iio_trigger.
- * @owner:             used to monitor usage count of the trigger.
  * @set_trigger_state: switch on/off the trigger on demand
  * @try_reenable:      function to reenable the trigger when the
  *                     use count is zero (may be NULL)
@@ -34,7 +33,6 @@ struct iio_trigger;
  * instances of a given device.
  **/
 struct iio_trigger_ops {
-       struct module *owner;
        int (*set_trigger_state)(struct iio_trigger *trig, bool state);
        int (*try_reenable)(struct iio_trigger *trig);
        int (*validate_device)(struct iio_trigger *trig,
@@ -62,6 +60,7 @@ struct iio_trigger_ops {
  **/
 struct iio_trigger {
        const struct iio_trigger_ops    *ops;
+       struct module                   *owner;
        int                             id;
        const char                      *name;
        struct device                   dev;
@@ -87,14 +86,14 @@ static inline struct iio_trigger *to_iio_trigger(struct device *d)
 
 static inline void iio_trigger_put(struct iio_trigger *trig)
 {
-       module_put(trig->ops->owner);
+       module_put(trig->owner);
        put_device(&trig->dev);
 }
 
 static inline struct iio_trigger *iio_trigger_get(struct iio_trigger *trig)
 {
        get_device(&trig->dev);
-       __module_get(trig->ops->owner);
+       __module_get(trig->owner);
 
        return trig;
 }
@@ -127,10 +126,16 @@ static inline void *iio_trigger_get_drvdata(struct iio_trigger *trig)
  * iio_trigger_register() - register a trigger with the IIO core
  * @trig_info: trigger to be registered
  **/
-int iio_trigger_register(struct iio_trigger *trig_info);
-
-int devm_iio_trigger_register(struct device *dev,
-                             struct iio_trigger *trig_info);
+#define iio_trigger_register(trig_info) \
+       __iio_trigger_register((trig_info), THIS_MODULE)
+int __iio_trigger_register(struct iio_trigger *trig_info,
+                          struct module *this_mod);
+
+#define devm_iio_trigger_register(dev, trig_info) \
+       __devm_iio_trigger_register((dev), (trig_info), THIS_MODULE)
+int __devm_iio_trigger_register(struct device *dev,
+                               struct iio_trigger *trig_info,
+                               struct module *this_mod);
 
 /**
  * iio_trigger_unregister() - unregister a trigger from the core