[PATCH v2 1/2] dt-bindings: display: bridge: Add GPIO display mux binding
Rob Herring
robh at kernel.org
Tue Jan 17 20:17:03 UTC 2023
On Mon, Jan 16, 2023 at 07:08:19PM +0800, Pin-yen Lin wrote:
> From: Nicolas Boichat <drinkcat at chromium.org>
>
> Add bindings for Generic GPIO mux driver.
>
> Signed-off-by: Nicolas Boichat <drinkcat at chromium.org>
> Signed-off-by: Pin-yen Lin <treapking at chromium.org>
> ---
>
> Changes in v2:
> - Referenced existing dt-binding schemas from graph.yaml
> - Added ddc-i2c-bus into the bindings
>
> .../bindings/display/bridge/gpio-mux.yaml | 95 +++++++++++++++++++
> 1 file changed, 95 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/display/bridge/gpio-mux.yaml
>
> diff --git a/Documentation/devicetree/bindings/display/bridge/gpio-mux.yaml b/Documentation/devicetree/bindings/display/bridge/gpio-mux.yaml
> new file mode 100644
> index 000000000000..da29ba078f05
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/bridge/gpio-mux.yaml
> @@ -0,0 +1,95 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/bridge/gpio-mux.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Generic display mux (1 input, 2 outputs)
> +
> +maintainers:
> + - Nicolas Boichat <drinkcat at chromium.org>
> +
> +description: |
> + This bindings describes a simple display (e.g. HDMI) mux, that has 1
> + input, and 2 outputs. The mux status is controlled by hardware, and
> + its status is read back using a GPIO.
> +
> +properties:
> + compatible:
> + const: gpio-display-mux
> +
> + detect-gpios:
> + maxItems: 1
> + description: GPIO that indicates the active output
What are we detecting? That implies an input, but this is selecting the
output path, right? Or what does 'mux status is controlled by hardware'
mean exactly? Something else? That does not sound very generic.
In any case, we have a common mux binding so any kind of mux control
could be used here, not just GPIO. Then you can make this just a generic
display mux.
> +
> + ddc-i2c-bus:
> + description: phandle link to the I2C controller used for DDC EDID probing
> + $ref: /schemas/types.yaml#/definitions/phandle
This belongs in the connector node(s).
> +
> + ports:
> + $ref: /schemas/graph.yaml#/properties/ports
> +
> + properties:
> + port at 0:
> + $ref: /schemas/graph.yaml#/properties/port
> + description: |
> + Video port for input.
> +
> + port at 1:
> + $ref: /schemas/graph.yaml#/properties/port
> + description: |
> + 2 video ports for output.
> + The reg value in the endpoints matches the GPIO status: when
> + GPIO is asserted, endpoint with reg value <1> is selected.
> +
> + required:
> + - port at 0
> + - port at 1
> +
> +required:
> + - compatible
> + - detect-gpios
> + - ports
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> + hdmi_mux: hdmi_mux {
> + compatible = "gpio-display-mux";
> + detect-gpios = <&pio 36 GPIO_ACTIVE_HIGH>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&hdmi_mux_pins>;
> + ddc-i2c-bus = <&hdmiddc0>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port at 0 { /* input */
> + reg = <0>;
> +
> + hdmi_mux_in: endpoint {
> + remote-endpoint = <&hdmi0_out>;
> + };
> + };
> +
> + port at 1 { /* output */
> + reg = <1>;
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + hdmi_mux_out_anx: endpoint at 0 {
> + reg = <0>;
> + remote-endpoint = <&dp_bridge_in>;
> + };
> +
> + hdmi_mux_out_hdmi: endpoint at 1 {
> + reg = <1>;
> + remote-endpoint = <&hdmi_connector_in>;
> + };
> + };
> + };
> + };
> --
> 2.39.0.314.g84b9a713c41-goog
>
More information about the dri-devel
mailing list