Skip to content

Commit f5d0179

Browse files
commodojic23
authored andcommitted
iio: core: add iio_device_set_parent() helper
By default, the device allocation will also assign a parent device to the IIO device object. In cases where devm_iio_device_alloc() is used, sometimes the parent device must be different than the device used to manage the allocation. In that case, this helper should be used to change the parent, hence the requirement to call this between allocation & registration. This pattern/requirement is not very common in the IIO space, and it may be cleaned up later. But until then, assigning the parent manually between allocation & registration is slightly easier. Signed-off-by: Alexandru Ardelean <[email protected]> Signed-off-by: Jonathan Cameron <[email protected]>
1 parent 78289b4 commit f5d0179

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

include/linux/iio/iio.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,26 @@ static inline struct iio_dev *iio_device_get(struct iio_dev *indio_dev)
649649
return indio_dev ? dev_to_iio_dev(get_device(&indio_dev->dev)) : NULL;
650650
}
651651

652+
/**
653+
* iio_device_set_parent() - assign parent device to the IIO device object
654+
* @indio_dev: IIO device structure
655+
* @parent: reference to parent device object
656+
*
657+
* This utility must be called between IIO device allocation
658+
* (via devm_iio_device_alloc()) & IIO device registration
659+
* (via {devm_}iio_device_register()).
660+
* By default, the device allocation will also assign a parent device to
661+
* the IIO device object. In cases where devm_iio_device_alloc() is used,
662+
* sometimes the parent device must be different than the device used to
663+
* manage the allocation.
664+
* In that case, this helper should be used to change the parent, hence the
665+
* requirement to call this between allocation & registration.
666+
**/
667+
static inline void iio_device_set_parent(struct iio_dev *indio_dev,
668+
struct device *parent)
669+
{
670+
indio_dev->dev.parent = parent;
671+
}
652672

653673
/**
654674
* iio_device_set_drvdata() - Set device driver data

0 commit comments

Comments
 (0)