2017-12-28 23:22:55 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
mux: minimal mux subsystem
Add a new minimalistic subsystem that handles multiplexer controllers.
When multiplexers are used in various places in the kernel, and the
same multiplexer controller can be used for several independent things,
there should be one place to implement support for said multiplexer
controller.
A single multiplexer controller can also be used to control several
parallel multiplexers, that are in turn used by different subsystems
in the kernel, leading to a need to coordinate multiplexer accesses.
The multiplexer subsystem handles this coordination.
Thanks go out to Lars-Peter Clausen, Jonathan Cameron, Rob Herring,
Wolfram Sang, Paul Gortmaker, Dan Carpenter, Colin Ian King, Greg
Kroah-Hartman and last but certainly not least to Philipp Zabel for
helpful comments, reviews, patches and general encouragement!
Reviewed-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Peter Rosin <peda@axentia.se>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Tested-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-05-14 19:51:06 +00:00
|
|
|
/*
|
|
|
|
* mux/consumer.h - definitions for the multiplexer consumer interface
|
|
|
|
*
|
|
|
|
* Copyright (C) 2017 Axentia Technologies AB
|
|
|
|
*
|
|
|
|
* Author: Peter Rosin <peda@axentia.se>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _LINUX_MUX_CONSUMER_H
|
|
|
|
#define _LINUX_MUX_CONSUMER_H
|
|
|
|
|
2017-08-22 06:27:07 +00:00
|
|
|
#include <linux/compiler.h>
|
|
|
|
|
mux: minimal mux subsystem
Add a new minimalistic subsystem that handles multiplexer controllers.
When multiplexers are used in various places in the kernel, and the
same multiplexer controller can be used for several independent things,
there should be one place to implement support for said multiplexer
controller.
A single multiplexer controller can also be used to control several
parallel multiplexers, that are in turn used by different subsystems
in the kernel, leading to a need to coordinate multiplexer accesses.
The multiplexer subsystem handles this coordination.
Thanks go out to Lars-Peter Clausen, Jonathan Cameron, Rob Herring,
Wolfram Sang, Paul Gortmaker, Dan Carpenter, Colin Ian King, Greg
Kroah-Hartman and last but certainly not least to Philipp Zabel for
helpful comments, reviews, patches and general encouragement!
Reviewed-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Peter Rosin <peda@axentia.se>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Tested-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-05-14 19:51:06 +00:00
|
|
|
struct device;
|
|
|
|
struct mux_control;
|
|
|
|
|
|
|
|
unsigned int mux_control_states(struct mux_control *mux);
|
|
|
|
int __must_check mux_control_select(struct mux_control *mux,
|
|
|
|
unsigned int state);
|
|
|
|
int __must_check mux_control_try_select(struct mux_control *mux,
|
|
|
|
unsigned int state);
|
|
|
|
int mux_control_deselect(struct mux_control *mux);
|
|
|
|
|
|
|
|
struct mux_control *mux_control_get(struct device *dev, const char *mux_name);
|
|
|
|
void mux_control_put(struct mux_control *mux);
|
|
|
|
|
|
|
|
struct mux_control *devm_mux_control_get(struct device *dev,
|
|
|
|
const char *mux_name);
|
|
|
|
|
|
|
|
#endif /* _LINUX_MUX_CONSUMER_H */
|