|
@@ -642,6 +642,65 @@ void devm_iio_trigger_free(struct device *dev, struct iio_trigger *iio_trig)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(devm_iio_trigger_free);
|
|
EXPORT_SYMBOL_GPL(devm_iio_trigger_free);
|
|
|
|
|
|
|
|
+static void devm_iio_trigger_unreg(struct device *dev, void *res)
|
|
|
|
+{
|
|
|
|
+ iio_trigger_unregister(*(struct iio_trigger **)res);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * devm_iio_trigger_register - Resource-managed iio_trigger_register()
|
|
|
|
+ * @dev: device this trigger was allocated for
|
|
|
|
+ * @trig_info: trigger to register
|
|
|
|
+ *
|
|
|
|
+ * Managed iio_trigger_register(). The IIO trigger registered with this
|
|
|
|
+ * function is automatically unregistered on driver detach. This function
|
|
|
|
+ * calls iio_trigger_register() internally. Refer to that function for more
|
|
|
|
+ * information.
|
|
|
|
+ *
|
|
|
|
+ * If an iio_trigger registered with this function needs to be unregistered
|
|
|
|
+ * separately, devm_iio_trigger_unregister() must be used.
|
|
|
|
+ *
|
|
|
|
+ * RETURNS:
|
|
|
|
+ * 0 on success, negative error number on failure.
|
|
|
|
+ */
|
|
|
|
+int devm_iio_trigger_register(struct device *dev, struct iio_trigger *trig_info)
|
|
|
|
+{
|
|
|
|
+ struct iio_trigger **ptr;
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
|
|
+ ptr = devres_alloc(devm_iio_trigger_unreg, sizeof(*ptr), GFP_KERNEL);
|
|
|
|
+ if (!ptr)
|
|
|
|
+ return -ENOMEM;
|
|
|
|
+
|
|
|
|
+ *ptr = trig_info;
|
|
|
|
+ ret = iio_trigger_register(trig_info);
|
|
|
|
+ if (!ret)
|
|
|
|
+ devres_add(dev, ptr);
|
|
|
|
+ else
|
|
|
|
+ devres_free(ptr);
|
|
|
|
+
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+EXPORT_SYMBOL_GPL(devm_iio_trigger_register);
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * devm_iio_trigger_unregister - Resource-managed iio_trigger_unregister()
|
|
|
|
+ * @dev: device this iio_trigger belongs to
|
|
|
|
+ * @trig_info: the trigger associated with the device
|
|
|
|
+ *
|
|
|
|
+ * Unregister trigger registered with devm_iio_trigger_register().
|
|
|
|
+ */
|
|
|
|
+void devm_iio_trigger_unregister(struct device *dev,
|
|
|
|
+ struct iio_trigger *trig_info)
|
|
|
|
+{
|
|
|
|
+ int rc;
|
|
|
|
+
|
|
|
|
+ rc = devres_release(dev, devm_iio_trigger_unreg, devm_iio_trigger_match,
|
|
|
|
+ trig_info);
|
|
|
|
+ WARN_ON(rc);
|
|
|
|
+}
|
|
|
|
+EXPORT_SYMBOL_GPL(devm_iio_trigger_unregister);
|
|
|
|
+
|
|
void iio_device_register_trigger_consumer(struct iio_dev *indio_dev)
|
|
void iio_device_register_trigger_consumer(struct iio_dev *indio_dev)
|
|
{
|
|
{
|
|
indio_dev->groups[indio_dev->groupcounter++] =
|
|
indio_dev->groups[indio_dev->groupcounter++] =
|