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-15 03:51:06 +08:00
|
|
|
#
|
|
|
|
# Multiplexer devices
|
|
|
|
#
|
|
|
|
|
|
|
|
menuconfig MULTIPLEXER
|
|
|
|
tristate "Multiplexer subsystem"
|
|
|
|
help
|
|
|
|
Multiplexer controller subsystem. Multiplexers are used in a
|
|
|
|
variety of settings, and this subsystem abstracts their use
|
|
|
|
so that the rest of the kernel sees a common interface. When
|
|
|
|
multiple parallel multiplexers are controlled by one single
|
|
|
|
multiplexer controller, this subsystem also coordinates the
|
|
|
|
multiplexer accesses.
|
|
|
|
|
|
|
|
To compile the subsystem as a module, choose M here: the module will
|
|
|
|
be called mux-core.
|
2017-05-15 03:51:07 +08:00
|
|
|
|
|
|
|
if MULTIPLEXER
|
|
|
|
|
2017-05-15 03:51:14 +08:00
|
|
|
config MUX_ADG792A
|
|
|
|
tristate "Analog Devices ADG792A/ADG792G Multiplexers"
|
2017-06-09 18:22:51 +08:00
|
|
|
depends on I2C
|
2017-05-15 03:51:14 +08:00
|
|
|
help
|
|
|
|
ADG792A and ADG792G Wide Bandwidth Triple 4:1 Multiplexers
|
|
|
|
|
|
|
|
The driver supports both operating the three multiplexers in
|
|
|
|
parallel and operating them independently.
|
|
|
|
|
|
|
|
To compile the driver as a module, choose M here: the module will
|
|
|
|
be called mux-adg792a.
|
|
|
|
|
2017-05-15 03:51:07 +08:00
|
|
|
config MUX_GPIO
|
|
|
|
tristate "GPIO-controlled Multiplexer"
|
|
|
|
depends on GPIOLIB || COMPILE_TEST
|
|
|
|
help
|
|
|
|
GPIO-controlled Multiplexer controller.
|
|
|
|
|
|
|
|
The driver builds a single multiplexer controller using a number
|
|
|
|
of gpio pins. For N pins, there will be 2^N possible multiplexer
|
|
|
|
states. The GPIO pins can be connected (by the hardware) to several
|
|
|
|
multiplexers, which in that case will be operated in parallel.
|
|
|
|
|
|
|
|
To compile the driver as a module, choose M here: the module will
|
|
|
|
be called mux-gpio.
|
|
|
|
|
2017-05-15 03:51:16 +08:00
|
|
|
config MUX_MMIO
|
|
|
|
tristate "MMIO register bitfield-controlled Multiplexer"
|
|
|
|
depends on (OF && MFD_SYSCON) || COMPILE_TEST
|
|
|
|
help
|
|
|
|
MMIO register bitfield-controlled Multiplexer controller.
|
|
|
|
|
|
|
|
The driver builds multiplexer controllers for bitfields in a syscon
|
|
|
|
register. For N bit wide bitfields, there will be 2^N possible
|
|
|
|
multiplexer states.
|
|
|
|
|
|
|
|
To compile the driver as a module, choose M here: the module will
|
|
|
|
be called mux-mmio.
|
|
|
|
|
2017-05-15 03:51:07 +08:00
|
|
|
endif
|