mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
Add dt-schema for a gpio-line-mux controller which exposes virtual GPIOs for a shared GPIO controlled by a multiplexer, e.g. a gpio-mux. The gpio-line-mux controller is a gpio-controller, thus has mostly the same semantics. However, it requires a mux-control to be specified upon which it will operate. Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20251227180134.1262138-2-jelonek.jonas@gmail.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
108 lines
2.4 KiB
YAML
108 lines
2.4 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/gpio/gpio-line-mux.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: GPIO line mux
|
|
|
|
maintainers:
|
|
- Jonas Jelonek <jelonek.jonas@gmail.com>
|
|
|
|
description: |
|
|
A GPIO controller to provide virtual GPIOs for a 1-to-many input-only mapping
|
|
backed by a single shared GPIO and a multiplexer. A simple illustrated
|
|
example is:
|
|
|
|
+----- A
|
|
IN /
|
|
<-----o------- B
|
|
/ |\
|
|
| | +----- C
|
|
| | \
|
|
| | +--- D
|
|
| |
|
|
M1 M0
|
|
|
|
MUX CONTROL
|
|
|
|
M1 M0 IN
|
|
0 0 A
|
|
0 1 B
|
|
1 0 C
|
|
1 1 D
|
|
|
|
This can be used in case a real GPIO is connected to multiple inputs and
|
|
controlled by a multiplexer, and another subsystem/driver does not work
|
|
directly with the multiplexer subsystem.
|
|
|
|
properties:
|
|
compatible:
|
|
const: gpio-line-mux
|
|
|
|
gpio-controller: true
|
|
|
|
"#gpio-cells":
|
|
const: 2
|
|
|
|
gpio-line-mux-states:
|
|
description: Mux states corresponding to the virtual GPIOs.
|
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
|
|
|
gpio-line-names: true
|
|
|
|
mux-controls:
|
|
maxItems: 1
|
|
description:
|
|
Phandle to the multiplexer to control access to the GPIOs.
|
|
|
|
ngpios: false
|
|
|
|
muxed-gpios:
|
|
maxItems: 1
|
|
description:
|
|
GPIO which is the '1' in 1-to-many and is shared by the virtual GPIOs
|
|
and controlled via the mux.
|
|
|
|
required:
|
|
- compatible
|
|
- gpio-controller
|
|
- gpio-line-mux-states
|
|
- mux-controls
|
|
- muxed-gpios
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/mux/mux.h>
|
|
|
|
sfp_gpio_mux: mux-controller-1 {
|
|
compatible = "gpio-mux";
|
|
mux-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>,
|
|
<&gpio0 1 GPIO_ACTIVE_HIGH>;
|
|
#mux-control-cells = <0>;
|
|
idle-state = <MUX_IDLE_AS_IS>;
|
|
};
|
|
|
|
sfp1_gpio: sfp-gpio-1 {
|
|
compatible = "gpio-line-mux";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
|
|
mux-controls = <&sfp_gpio_mux>;
|
|
muxed-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
|
|
|
|
gpio-line-mux-states = <0>, <1>, <3>;
|
|
};
|
|
|
|
sfp1: sfp-p1 {
|
|
compatible = "sff,sfp";
|
|
|
|
i2c-bus = <&sfp1_i2c>;
|
|
los-gpios = <&sfp1_gpio 0 GPIO_ACTIVE_HIGH>;
|
|
mod-def0-gpios = <&sfp1_gpio 1 GPIO_ACTIVE_LOW>;
|
|
tx-fault-gpios = <&sfp1_gpio 2 GPIO_ACTIVE_HIGH>;
|
|
};
|