linux-stable/include/linux/iio/driver.h
Alexandru Ardelean 25c02edfd4 iio: inkern: introduce devm_iio_map_array_register() short-hand function
This change introduces a device-managed variant to the
iio_map_array_register() function. It's a simple implementation of calling
iio_map_array_register() and registering a callback to
iio_map_array_unregister() with the devm_add_action_or_reset().

The function uses an explicit 'dev' parameter to bind the unwinding to. It
could have been implemented to implicitly use the parent of the IIO device,
however it shouldn't be too expensive to callers to just specify to which
device object to bind this unwind call.
It would make the API a bit more flexible.

Signed-off-by: Alexandru Ardelean <aardelean@deviqon.com>
Link: https://lore.kernel.org/r/20210903072917.45769-2-aardelean@deviqon.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2021-10-19 08:27:34 +01:00

43 lines
1.3 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Industrial I/O in kernel access map interface.
*
* Copyright (c) 2011 Jonathan Cameron
*/
#ifndef _IIO_INKERN_H_
#define _IIO_INKERN_H_
struct device;
struct iio_dev;
struct iio_map;
/**
* iio_map_array_register() - tell the core about inkernel consumers
* @indio_dev: provider device
* @map: array of mappings specifying association of channel with client
*/
int iio_map_array_register(struct iio_dev *indio_dev,
struct iio_map *map);
/**
* iio_map_array_unregister() - tell the core to remove consumer mappings for
* the given provider device
* @indio_dev: provider device
*/
int iio_map_array_unregister(struct iio_dev *indio_dev);
/**
* devm_iio_map_array_register - device-managed version of iio_map_array_register
* @dev: Device object to which to bind the unwinding of this registration
* @indio_dev: Pointer to the iio_dev structure
* @maps: Pointer to an IIO map object which is to be registered to this IIO device
*
* This function will call iio_map_array_register() to register an IIO map object
* and will also hook a callback to the iio_map_array_unregister() function to
* handle de-registration of the IIO map object when the device's refcount goes to
* zero.
*/
int devm_iio_map_array_register(struct device *dev, struct iio_dev *indio_dev, struct iio_map *maps);
#endif