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