# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/ti,ds90ub913.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments DS90UB913 FPD-Link III Serializer

maintainers:
  - Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>

description:
  The TI DS90UB913 is an FPD-Link III video serializer for parallel video.

properties:
  compatible:
    enum:
      - ti,ds90ub913a-q1

  '#gpio-cells':
    const: 2
    description:
      First cell is the GPO pin number, second cell is the flags. The GPO pin
      number must be in range of [0, 3]. Note that GPOs 2 and 3 are not
      available in external oscillator mode.

  gpio-controller: true

  clocks:
    maxItems: 1
    description:
      Reference clock connected to the CLKIN pin.

  clock-names:
    items:
      - const: clkin

  '#clock-cells':
    const: 0

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

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

        properties:
          endpoint:
            $ref: /schemas/media/video-interfaces.yaml#
            unevaluatedProperties: false

            required:
              - pclk-sample

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        unevaluatedProperties: false
        description: FPD-Link III output port

    required:
      - port@0
      - port@1

  i2c:
    $ref: /schemas/i2c/i2c-controller.yaml#
    unevaluatedProperties: false

required:
  - compatible
  - '#gpio-cells'
  - gpio-controller
  - '#clock-cells'
  - ports

additionalProperties: false

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

    serializer {
      compatible = "ti,ds90ub913a-q1";

      gpio-controller;
      #gpio-cells = <2>;

      clocks = <&clk_cam_48M>;
      clock-names = "clkin";

      #clock-cells = <0>;

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

        port@0 {
          reg = <0>;
          ub913_in: endpoint {
            remote-endpoint = <&sensor_out>;
            pclk-sample = <1>;
          };
        };

        port@1 {
          reg = <1>;
          endpoint {
            remote-endpoint = <&deser_fpd_in>;
          };
        };
      };

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

        sensor@48 {
          compatible = "aptina,mt9v111";
          reg = <0x48>;

          clocks = <&fixed_clock>;

          port {
            sensor_out: endpoint {
              remote-endpoint = <&ub913_in>;
            };
          };
        };
      };
    };
...
