xref: /linux-6.15/include/linux/mux/consumer.h (revision d3cc8ca3)
1a3b02a9cSPeter Rosin /*
2a3b02a9cSPeter Rosin  * mux/consumer.h - definitions for the multiplexer consumer interface
3a3b02a9cSPeter Rosin  *
4a3b02a9cSPeter Rosin  * Copyright (C) 2017 Axentia Technologies AB
5a3b02a9cSPeter Rosin  *
6a3b02a9cSPeter Rosin  * Author: Peter Rosin <[email protected]>
7a3b02a9cSPeter Rosin  *
8a3b02a9cSPeter Rosin  * This program is free software; you can redistribute it and/or modify
9a3b02a9cSPeter Rosin  * it under the terms of the GNU General Public License version 2 as
10a3b02a9cSPeter Rosin  * published by the Free Software Foundation.
11a3b02a9cSPeter Rosin  */
12a3b02a9cSPeter Rosin 
13a3b02a9cSPeter Rosin #ifndef _LINUX_MUX_CONSUMER_H
14a3b02a9cSPeter Rosin #define _LINUX_MUX_CONSUMER_H
15a3b02a9cSPeter Rosin 
16*d3cc8ca3SUlrich Hecht #include <linux/compiler.h>
17*d3cc8ca3SUlrich Hecht 
18a3b02a9cSPeter Rosin struct device;
19a3b02a9cSPeter Rosin struct mux_control;
20a3b02a9cSPeter Rosin 
21a3b02a9cSPeter Rosin unsigned int mux_control_states(struct mux_control *mux);
22a3b02a9cSPeter Rosin int __must_check mux_control_select(struct mux_control *mux,
23a3b02a9cSPeter Rosin 				    unsigned int state);
24a3b02a9cSPeter Rosin int __must_check mux_control_try_select(struct mux_control *mux,
25a3b02a9cSPeter Rosin 					unsigned int state);
26a3b02a9cSPeter Rosin int mux_control_deselect(struct mux_control *mux);
27a3b02a9cSPeter Rosin 
28a3b02a9cSPeter Rosin struct mux_control *mux_control_get(struct device *dev, const char *mux_name);
29a3b02a9cSPeter Rosin void mux_control_put(struct mux_control *mux);
30a3b02a9cSPeter Rosin 
31a3b02a9cSPeter Rosin struct mux_control *devm_mux_control_get(struct device *dev,
32a3b02a9cSPeter Rosin 					 const char *mux_name);
33a3b02a9cSPeter Rosin 
34a3b02a9cSPeter Rosin #endif /* _LINUX_MUX_CONSUMER_H */
35