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

title: Solomon SSD2825 RGB to MIPI-DSI bridge

maintainers:
  - Svyatoslav Ryhel <clamor95@gmail.com>

allOf:
  - $ref: /schemas/display/dsi-controller.yaml#
  - $ref: /schemas/spi/spi-peripheral-props.yaml#

properties:
  compatible:
    const: solomon,ssd2825

  reg:
    maxItems: 1

  reset-gpios: true

  dvdd-supply:
    description: Regulator for 1.2V digital power supply.

  avdd-supply:
    description: Regulator for 1.2V analog power supply.

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

  spi-max-frequency:
    maximum: 1000000

  spi-cpha: true
  spi-cpol: true

  clocks:
    maxItems: 1
    description: Reference TX_CLK used before PLL is locked.

  solomon,hs-zero-delay-ns:
    description:
      HS zero delay period
    minimum: 0
    maximum: 1700
    default: 133

  solomon,hs-prep-delay-ns:
    description:
      HS prep delay period
    minimum: 0
    maximum: 1728
    default: 40

  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:
              bus-width:
                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
  - ports

unevaluatedProperties: false

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

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

        dsi@2 {
            compatible = "solomon,ssd2825";
            reg = <2>;

            spi-max-frequency = <1000000>;

            spi-cpha;
            spi-cpol;

            reset-gpios = <&gpio 114 GPIO_ACTIVE_LOW>;

            dvdd-supply = <&vdd_1v2>;
            avdd-supply = <&vdd_1v2>;
            vddio-supply = <&vdd_1v8_io>;

            solomon,hs-zero-delay-ns = <300>;
            solomon,hs-prep-delay-ns = <65>;

            clocks = <&ssd2825_tx_clk>;

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

                port@0 {
                    reg = <0>;

                    bridge_input: endpoint {
                        remote-endpoint = <&dpi_output>;
                        bus-width = <24>;
                    };
                };

                port@1 {
                    reg = <1>;

                    bridge_output: endpoint {
                        remote-endpoint = <&panel_input>;
                    };
                };
            };
        };
    };