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

title: Toshiba TC358775 DSI to LVDS bridge bindings

maintainers:
 - Vinay Simha BN <simhavcs@gmail.com>

description: |
 This binding supports DSI to LVDS bridge TC358775

 MIPI DSI-RX Data 4-lane, CLK 1-lane with data rates up to 800 Mbps/lane.
 Video frame size:
 Up to 1600x1200 24-bit/pixel resolution for single-link LVDS display panel
 limited by 135 MHz LVDS speed
 Up to WUXGA (1920x1200 24-bit pixels) resolution for dual-link LVDS display
 panel, limited by 270 MHz LVDS speed.

properties:
  compatible:
    const: toshiba,tc358775

  reg:
    maxItems: 1
    description: i2c address of the bridge, 0x0f

  vdd-supply:
    maxItems: 1
    description:  1.2V LVDS Power Supply

  vddio-supply:
    maxItems: 1
    description: 1.8V IO Power Supply

  stby-gpios:
    maxItems: 1
    description: Standby pin, Low active

  reset-gpios:
    maxItems: 1
    description: Hardware reset, Low active

  ports:
    type: object
    description:
      A node containing input and output port nodes with endpoint definitions
      as documented in
      Documentation/devicetree/bindings/media/video-interfaces.txt
    properties:
      "#address-cells":
        const: 1

      "#size-cells":
        const: 0

      port@0:
        type: object
        description: |
          DSI Input. The remote endpoint phandle should be a
          reference to a valid mipi_dsi_host device node.

      port@1:
        type: object
        description: |
          Video port for LVDS output (panel or connector).

      port@2:
        type: object
        description: |
          Video port for Dual link LVDS output (panel or connector).

    required:
      - port@0
      - port@1

required:
 - compatible
 - reg
 - vdd-supply
 - vddio-supply
 - stby-gpios
 - reset-gpios
 - ports

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

    /* For single-link LVDS display panel */

    i2c@78b8000 {
        /* On High speed expansion */
        label = "HS-I2C2";
        reg = <0x078b8000 0x500>;
        clock-frequency = <400000>; /* fastmode operation */
        #address-cells = <1>;
        #size-cells = <0>;

        tc_bridge: bridge@f {
            compatible = "toshiba,tc358775";
            reg = <0x0f>;

            vdd-supply = <&pm8916_l2>;
            vddio-supply = <&pm8916_l6>;

            stby-gpios = <&msmgpio 99 GPIO_ACTIVE_LOW>;
            reset-gpios = <&msmgpio 72 GPIO_ACTIVE_LOW>;

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

                port@0 {
                    reg = <0>;
                    d2l_in_test: endpoint {
                        remote-endpoint = <&dsi0_out>;
                    };
                };

                port@1 {
                    reg = <1>;
                    lvds_out: endpoint {
                        remote-endpoint = <&panel_in>;
                    };
                };
            };
        };
    };

    dsi@1a98000 {
        reg = <0x1a98000 0x25c>;
        reg-names = "dsi_ctrl";

        ports {
            #address-cells = <1>;
            #size-cells = <0>;
            port@1 {
                reg = <1>;
                dsi0_out: endpoint {
                    remote-endpoint = <&d2l_in_test>;
                    data-lanes = <0 1 2 3>;
                };
             };
         };
     };

 - |
    /* For dual-link LVDS display panel */

    i2c@78b8000 {
        /* On High speed expansion */
        label = "HS-I2C2";
        reg = <0x078b8000 0x500>;
        clock-frequency = <400000>; /* fastmode operation */
        #address-cells = <1>;
        #size-cells = <0>;

        tc_bridge_dual: bridge@f {
            compatible = "toshiba,tc358775";
            reg = <0x0f>;

            vdd-supply = <&pm8916_l2>;
            vddio-supply = <&pm8916_l6>;

            stby-gpios = <&msmgpio 99 GPIO_ACTIVE_LOW>;
            reset-gpios = <&msmgpio 72 GPIO_ACTIVE_LOW>;

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

                port@0 {
                    reg = <0>;
                    d2l_in_dual: endpoint {
                        remote-endpoint = <&dsi0_out_dual>;
                    };
                };

                port@1 {
                    reg = <1>;
                    lvds0_out: endpoint {
                        remote-endpoint = <&panel_in0>;
                    };
                };

                port@2 {
                    reg = <2>;
                    lvds1_out: endpoint {
                        remote-endpoint = <&panel_in1>;
                    };
                };
            };
        };
    };

    dsi@1a98000 {
        reg = <0x1a98000 0x25c>;
        reg-names = "dsi_ctrl";

        ports {
            #address-cells = <1>;
            #size-cells = <0>;
            port@1 {
                reg = <1>;
                dsi0_out_dual: endpoint {
                    remote-endpoint = <&d2l_in_dual>;
                    data-lanes = <0 1 2 3>;
                };
             };
         };
     };
...
