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

title: Toschiba TC358768/TC358778 Parallel RGB to MIPI DSI bridge

maintainers:
  - Peter Ujfalusi <peter.ujfalusi@ti.com>

description: |
  The TC358768/TC358778 is bridge device which converts RGB to DSI.

properties:
  compatible:
    enum:
      - toshiba,tc358768
      - toshiba,tc358778

  reg:
    maxItems: 1
    description: base I2C address of the device

  reset-gpios:
    maxItems: 1
    description: GPIO connected to active low RESX pin

  vddc-supply:
    description: Regulator for 1.2V internal core power.

  vddmipi-supply:
    description: Regulator for 1.2V for the MIPI.

  vddio-supply:
    description: Regulator for 1.8V - 3.3V IO power.

  clocks:
    maxItems: 1

  clock-names:
    const: refclk

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

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/$defs/port-base
        unevaluatedProperties: false
        description: |
          Video port for RGB input

        properties:
          endpoint:
            $ref: /schemas/graph.yaml#/$defs/endpoint-base
            unevaluatedProperties: false

            properties:
              data-lines:
                $ref: /schemas/types.yaml#/definitions/uint32
                enum: [ 16, 18, 24 ]

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: |
          Video port for DSI output (panel or connector).

    required:
      - port@0
      - port@1

required:
  - compatible
  - reg
  - vddc-supply
  - vddmipi-supply
  - vddio-supply
  - ports

allOf:
  - $ref: ../dsi-controller.yaml#

unevaluatedProperties: false

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

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

      dsi_bridge: dsi@e {
        compatible = "toshiba,tc358768";
        reg = <0xe>;

        clocks = <&tc358768_refclk>;
        clock-names = "refclk";

        reset-gpios = <&pcf_display_board 0 GPIO_ACTIVE_LOW>;

        vddc-supply = <&v1_2d>;
        vddmipi-supply = <&v1_2d>;
        vddio-supply = <&v3_3d>;

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

          port@0 {
            reg = <0>;
            rgb_in: endpoint {
              remote-endpoint = <&dpi_out>;
              data-lines = <24>;
            };
          };

          port@1 {
            reg = <1>;
            dsi_out: endpoint {
              remote-endpoint = <&lcd_in>;
            };
          };
        };
      };
    };