xref: /linux-6.15/include/linux/mux/consumer.h (revision 0edff03d)
1*0edff03dSPeter Rosin /* SPDX-License-Identifier: GPL-2.0 */
2a3b02a9cSPeter Rosin /*
3a3b02a9cSPeter Rosin  * mux/consumer.h - definitions for the multiplexer consumer interface
4a3b02a9cSPeter Rosin  *
5a3b02a9cSPeter Rosin  * Copyright (C) 2017 Axentia Technologies AB
6a3b02a9cSPeter Rosin  *
7a3b02a9cSPeter Rosin  * Author: Peter Rosin <[email protected]>
8a3b02a9cSPeter Rosin  */
9a3b02a9cSPeter Rosin 
10a3b02a9cSPeter Rosin #ifndef _LINUX_MUX_CONSUMER_H
11a3b02a9cSPeter Rosin #define _LINUX_MUX_CONSUMER_H
12a3b02a9cSPeter Rosin 
13d3cc8ca3SUlrich Hecht #include <linux/compiler.h>
14d3cc8ca3SUlrich Hecht 
15a3b02a9cSPeter Rosin struct device;
16a3b02a9cSPeter Rosin struct mux_control;
17a3b02a9cSPeter Rosin 
18a3b02a9cSPeter Rosin unsigned int mux_control_states(struct mux_control *mux);
19a3b02a9cSPeter Rosin int __must_check mux_control_select(struct mux_control *mux,
20a3b02a9cSPeter Rosin 				    unsigned int state);
21a3b02a9cSPeter Rosin int __must_check mux_control_try_select(struct mux_control *mux,
22a3b02a9cSPeter Rosin 					unsigned int state);
23a3b02a9cSPeter Rosin int mux_control_deselect(struct mux_control *mux);
24a3b02a9cSPeter Rosin 
25a3b02a9cSPeter Rosin struct mux_control *mux_control_get(struct device *dev, const char *mux_name);
26a3b02a9cSPeter Rosin void mux_control_put(struct mux_control *mux);
27a3b02a9cSPeter Rosin 
28a3b02a9cSPeter Rosin struct mux_control *devm_mux_control_get(struct device *dev,
29a3b02a9cSPeter Rosin 					 const char *mux_name);
30a3b02a9cSPeter Rosin 
31a3b02a9cSPeter Rosin #endif /* _LINUX_MUX_CONSUMER_H */
32