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