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

title: MIPI DSI to eDP Video Format Converter Device Tree Bindings

maintainers:
  - Nicolas Boichat <drinkcat@chromium.org>
  - Enric Balletbo i Serra <enric.balletbo@collabora.com>

description: |
  The PS8640 is a low power MIPI-to-eDP video format converter supporting
  mobile devices with embedded panel resolutions up to 2048 x 1536. The
  device accepts a single channel of MIPI DSI v1.1, with up to four lanes
  plus clock, at a transmission rate up to 1.5Gbit/sec per lane. The
  device outputs eDP v1.4, one or two lanes, at a link rate of up to
  3.24Gbit/sec per lane.

properties:
  compatible:
    const: parade,ps8640

  reg:
    maxItems: 1
    description: Base I2C address of the device.

  powerdown-gpios:
    maxItems: 1
    description: GPIO connected to active low powerdown.

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

  vdd12-supply:
    maxItems: 1
    description: Regulator for 1.2V digital core power.

  vdd33-supply:
    maxItems: 1
    description: Regulator for 3.3V digital core power.

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

      '#size-cells':
        const: 0

      port@0:
        type: object
        description: |
          Video port for DSI input

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

    required:
      - port@0

    additionalProperties: false

required:
  - compatible
  - reg
  - powerdown-gpios
  - reset-gpios
  - vdd12-supply
  - vdd33-supply
  - ports

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    i2c0 {
        #address-cells = <1>;
        #size-cells = <0>;

        ps8640: edp-bridge@18 {
            compatible = "parade,ps8640";
            reg = <0x18>;
            powerdown-gpios = <&pio 116 GPIO_ACTIVE_LOW>;
            reset-gpios = <&pio 115 GPIO_ACTIVE_LOW>;
            vdd12-supply = <&ps8640_fixed_1v2>;
            vdd33-supply = <&mt6397_vgp2_reg>;

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

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

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

