1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Industrial I/O in kernel access map interface.
4  *
5  * Copyright (c) 2011 Jonathan Cameron
6  */
7 
8 #ifndef _IIO_INKERN_H_
9 #define _IIO_INKERN_H_
10 
11 struct device;
12 struct iio_dev;
13 struct iio_map;
14 
15 /**
16  * iio_map_array_register() - tell the core about inkernel consumers
17  * @indio_dev:	provider device
18  * @map:	array of mappings specifying association of channel with client
19  */
20 int iio_map_array_register(struct iio_dev *indio_dev,
21 			   struct iio_map *map);
22 
23 /**
24  * iio_map_array_unregister() - tell the core to remove consumer mappings for
25  *				the given provider device
26  * @indio_dev:	provider device
27  */
28 int iio_map_array_unregister(struct iio_dev *indio_dev);
29 
30 /**
31  * devm_iio_map_array_register - device-managed version of iio_map_array_register
32  * @dev:	Device object to which to bind the unwinding of this registration
33  * @indio_dev:	Pointer to the iio_dev structure
34  * @maps:	Pointer to an IIO map object which is to be registered to this IIO device
35  *
36  * This function will call iio_map_array_register() to register an IIO map object
37  * and will also hook a callback to the iio_map_array_unregister() function to
38  * handle de-registration of the IIO map object when the device's refcount goes to
39  * zero.
40  */
41 int devm_iio_map_array_register(struct device *dev, struct iio_dev *indio_dev, struct iio_map *maps);
42 
43 #endif
44