# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2021 Renesas Electronics Corp.
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/maxim,max96712.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Quad GMSL2 to CSI-2 Deserializer with GMSL1 Compatibility

maintainers:
  - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>

description: |
  The MAX96712 deserializer converts GMSL2 or GMSL1 serial inputs into MIPI
  CSI-2 D-PHY or C-PHY formatted outputs. The device allows each link to
  simultaneously transmit bidirectional control-channel data while forward
  video transmissions are in progress. The MAX96712 can accommodate as many as
  four remotely located sensors using industry-standard coax or STP
  interconnects.

  Each GMSL2 serial link operates at a fixed rate of 3Gbps or 6Gbps in the
  forward direction and 187.5Mbps in the reverse direction. In GMSL1 mode, the
  MAX96712 can be paired with first-generation 3.12Gbps or 1.5Gbps GMSL1
  serializers or operate up to 3.12Gbps with GMSL2 serializers in GMSL1 mode.

properties:
  compatible:
    const: maxim,max96712

  reg:
    description: I2C device address
    maxItems: 1

  enable-gpios: true

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

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/properties/port
        description: GMSL Input 0

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: GMSL Input 1

      port@2:
        $ref: /schemas/graph.yaml#/properties/port
        description: GMSL Input 2

      port@3:
        $ref: /schemas/graph.yaml#/properties/port
        description: GMSL Input 3

      port@4:
        $ref: /schemas/graph.yaml#/$defs/port-base
        unevaluatedProperties: false
        description: CSI-2 Output

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

            properties:
              data-lanes: true
              bus-type:
                enum:
                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY

            required:
              - data-lanes
              - bus-type

    required:
      - port@4

required:
  - compatible
  - reg
  - ports

additionalProperties: false

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

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

            reg = <0 0xe6508000>;

            gmsl0: gmsl-deserializer@49 {
                    compatible = "maxim,max96712";
                    reg = <0x49>;
                    enable-gpios = <&pca9654_a 0 GPIO_ACTIVE_HIGH>;

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

                            port@4 {
                                    reg = <4>;
                                    max96712_out0: endpoint {
                                            bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
                                            clock-lanes = <0>;
                                            data-lanes = <1 2 3 4>;
                                            remote-endpoint = <&csi40_in>;
                                    };
                            };
                    };
            };
    };
