|
@@ -1660,14 +1660,11 @@ static int iio_check_unique_scan_index(struct iio_dev *indio_dev)
|
|
|
|
|
|
static const struct iio_buffer_setup_ops noop_ring_setup_ops;
|
|
|
|
|
|
-/**
|
|
|
- * iio_device_register() - register a device with the IIO subsystem
|
|
|
- * @indio_dev: Device structure filled by the device driver
|
|
|
- **/
|
|
|
-int iio_device_register(struct iio_dev *indio_dev)
|
|
|
+int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod)
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
|
+ indio_dev->driver_module = this_mod;
|
|
|
/* If the calling driver did not initialize of_node, do it here */
|
|
|
if (!indio_dev->dev.of_node && indio_dev->dev.parent)
|
|
|
indio_dev->dev.of_node = indio_dev->dev.parent->of_node;
|
|
@@ -1713,7 +1710,8 @@ int iio_device_register(struct iio_dev *indio_dev)
|
|
|
indio_dev->setup_ops = &noop_ring_setup_ops;
|
|
|
|
|
|
cdev_init(&indio_dev->chrdev, &iio_buffer_fileops);
|
|
|
- indio_dev->chrdev.owner = indio_dev->info->driver_module;
|
|
|
+
|
|
|
+ indio_dev->chrdev.owner = this_mod;
|
|
|
|
|
|
ret = cdev_device_add(&indio_dev->chrdev, &indio_dev->dev);
|
|
|
if (ret < 0)
|
|
@@ -1731,7 +1729,7 @@ error_unreg_debugfs:
|
|
|
iio_device_unregister_debugfs(indio_dev);
|
|
|
return ret;
|
|
|
}
|
|
|
-EXPORT_SYMBOL(iio_device_register);
|
|
|
+EXPORT_SYMBOL(__iio_device_register);
|
|
|
|
|
|
/**
|
|
|
* iio_device_unregister() - unregister a device from the IIO subsystem
|
|
@@ -1763,23 +1761,8 @@ static void devm_iio_device_unreg(struct device *dev, void *res)
|
|
|
iio_device_unregister(*(struct iio_dev **)res);
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * devm_iio_device_register - Resource-managed iio_device_register()
|
|
|
- * @dev: Device to allocate iio_dev for
|
|
|
- * @indio_dev: Device structure filled by the device driver
|
|
|
- *
|
|
|
- * Managed iio_device_register. The IIO device registered with this
|
|
|
- * function is automatically unregistered on driver detach. This function
|
|
|
- * calls iio_device_register() internally. Refer to that function for more
|
|
|
- * information.
|
|
|
- *
|
|
|
- * If an iio_dev registered with this function needs to be unregistered
|
|
|
- * separately, devm_iio_device_unregister() must be used.
|
|
|
- *
|
|
|
- * RETURNS:
|
|
|
- * 0 on success, negative error number on failure.
|
|
|
- */
|
|
|
-int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev)
|
|
|
+int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev,
|
|
|
+ struct module *this_mod)
|
|
|
{
|
|
|
struct iio_dev **ptr;
|
|
|
int ret;
|
|
@@ -1789,7 +1772,7 @@ int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
*ptr = indio_dev;
|
|
|
- ret = iio_device_register(indio_dev);
|
|
|
+ ret = __iio_device_register(indio_dev, this_mod);
|
|
|
if (!ret)
|
|
|
devres_add(dev, ptr);
|
|
|
else
|
|
@@ -1797,7 +1780,7 @@ int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev)
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(devm_iio_device_register);
|
|
|
+EXPORT_SYMBOL_GPL(__devm_iio_device_register);
|
|
|
|
|
|
/**
|
|
|
* devm_iio_device_unregister - Resource-managed iio_device_unregister()
|