# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/bridge/toshiba,tc358767.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Toshiba TC358767/TC358867/TC9595 DSI/DPI/eDP bridge

maintainers:
  - Andrey Gusakov <andrey.gusakov@cogentembedded.com>

description: |
  The TC358767/TC358867/TC9595 is bridge device which
  converts DSI/DPI to eDP/DP .

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - toshiba,tc358867
              - toshiba,tc9595
          - const: toshiba,tc358767
      - const: toshiba,tc358767

  reg:
    enum:
      - 0x68
      - 0x0f
    description: |
        i2c address of the bridge, 0x68 or 0x0f, depending on bootstrap pins

  clock-names:
    const: ref

  clocks:
    maxItems: 1
    description: |
        OF device-tree clock specification for refclk input. The reference.
        clock rate must be 13 MHz, 19.2 MHz, 26 MHz, or 38.4 MHz.

  shutdown-gpios:
    maxItems: 1
    description: |
        OF device-tree gpio specification for SD pin(active high shutdown input)

  reset-gpios:
    maxItems: 1
    description: |
        OF device-tree gpio specification for RSTX pin(active low system reset)

  interrupts:
    maxItems: 1

  toshiba,hpd-pin:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum:
      - 0
      - 1
    description: TC358767 GPIO pin number to which HPD is connected to (0 or 1)

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/$defs/port-base
        unevaluatedProperties: false
        description: |
            DSI input port. The remote endpoint phandle should be a
            reference to a valid DSI output endpoint node

        properties:
          endpoint:
            $ref: /schemas/media/video-interfaces.yaml#
            unevaluatedProperties: false

            properties:
              data-lanes:
                description: array of physical DSI data lane indexes.
                minItems: 1
                items:
                  - const: 1
                  - const: 2
                  - const: 3
                  - const: 4

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: |
            DPI input/output port. The remote endpoint phandle should be a
            reference to a valid DPI output or input endpoint node.

      port@2:
        $ref: /schemas/graph.yaml#/properties/port
        description: |
            eDP/DP output port. The remote endpoint phandle should be a
            reference to a valid eDP panel input endpoint node. This port is
            optional, treated as DP panel if not defined

    oneOf:
      - required:
          - port@0
      - required:
          - port@1


required:
  - compatible
  - reg
  - clock-names
  - clocks
  - ports

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

    /* DPI input and eDP output */

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        edp-bridge@68 {
            compatible = "toshiba,tc358767";
            reg = <0x68>;
            shutdown-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
            reset-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
            clock-names = "ref";
            clocks = <&edp_refclk>;

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@1 {
                    reg = <1>;

                    bridge_in_0: endpoint {
                        remote-endpoint = <&dpi_out>;
                    };
                };

                port@2 {
                    reg = <2>;

                    bridge_out: endpoint {
                        remote-endpoint = <&panel_in>;
                    };
                };
            };
        };
    };
  - |
    /* DPI input and DP output */

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        edp-bridge@68 {
            compatible = "toshiba,tc358767";
            reg = <0x68>;
            shutdown-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
            reset-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
            clock-names = "ref";
            clocks = <&edp_refclk>;

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@1 {
                    reg = <1>;

                    bridge_in_1: endpoint {
                        remote-endpoint = <&dpi_out>;
                    };
                };
            };
        };
    };
