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

title: Silicon Image SiI8620 HDMI/MHL bridge

maintainers:
  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

properties:
  compatible:
    const: sil,sii8620

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: xtal

  cvcc10-supply:
    description: Digital Core Supply Voltage (1.0V)

  interrupts:
    maxItems: 1

  iovcc18-supply:
    description: I/O Supply Voltage (1.8V)

  reset-gpios:
    maxItems: 1

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

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/properties/port
        description:
          Video port for HDMI (encoder) input

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description:
          MHL to connector port

    required:
      - port@0
      - port@1

required:
  - compatible
  - reg
  - clocks
  - cvcc10-supply
  - interrupts
  - iovcc18-supply
  - reset-gpios
  - ports

additionalProperties: false

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

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

        bridge@39 {
            reg = <0x39>;
            compatible = "sil,sii8620";
            cvcc10-supply = <&ldo36_reg>;
            iovcc18-supply = <&ldo34_reg>;
            interrupt-parent = <&gpf0>;
            interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
            reset-gpios = <&gpv7 0 GPIO_ACTIVE_LOW>;
            clocks = <&pmu_system_controller 0>;
            clock-names = "xtal";

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

                port@0 {
                    reg = <0>;
                    mhl_to_hdmi: endpoint {
                        remote-endpoint = <&hdmi_to_mhl>;
                    };
                };

                port@1 {
                    reg = <1>;
                    mhl_to_musb_con: endpoint {
                        remote-endpoint = <&musb_con_to_mhl>;
                    };
                };
            };
        };
    };
