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