mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
gpio: add gpio-line-mux driver
Add a new driver which provides a 1-to-many mapping for a single real GPIO using a multiplexer. Each virtual GPIO corresponds to a multiplexer state which, if set for the multiplexer, connects the real GPIO to the corresponding virtual GPIO. This can help in various usecases. One practical case is the special hardware design of the Realtek-based XS1930-10 switch from Zyxel. It features two SFP+ ports/cages whose signals are wired directly to the switch SoC. Although Realtek SoCs are short on GPIOs, there are usually enough the fit the SFP signals without any hacks. However, Zyxel did some weird design and connected RX_LOS, MOD_ABS and TX_FAULT of one SFP cage onto a single GPIO line controlled by a multiplexer (the same for the other SFP cage). The single multiplexer controls the lines for both SFP and depending on the state, the designated 'signal GPIO lines' are connected to one of the three SFP signals. Because the SFP core/driver doesn't support multiplexer but needs single GPIOs for each of the signals, this driver fills the gap between both. It registers a gpio_chip, provides multiple virtual GPIOs and sets the backing multiplexer accordingly. Due to several practical issues, this is input-only and doesn't support IRQs. Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com> Reviewed-by: Thomas Richard <thomas.richard@bootlin.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20251227180134.1262138-3-jelonek.jonas@gmail.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
This commit is contained in:
committed by
Bartosz Golaszewski
parent
2a7618ba86
commit
2b03d9a40c
@@ -1994,6 +1994,15 @@ config GPIO_LATCH
|
||||
Say yes here to enable a driver for GPIO multiplexers based on latches
|
||||
connected to other GPIOs.
|
||||
|
||||
config GPIO_LINE_MUX
|
||||
tristate "GPIO line mux driver"
|
||||
depends on OF_GPIO
|
||||
select MULTIPLEXER
|
||||
help
|
||||
Say Y here to support the GPIO line mux, which can provide virtual
|
||||
GPIOs backed by a shared real GPIO and a multiplexer in a 1-to-many
|
||||
fashion.
|
||||
|
||||
config GPIO_MOCKUP
|
||||
tristate "GPIO Testing Driver (DEPRECATED)"
|
||||
select IRQ_SIM
|
||||
|
||||
Reference in New Issue
Block a user