Merge tag 'sound-fix-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
[linux-2.6-microblaze.git] / include / linux / iio / driver.h
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