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

title: NXP i.MX7 Mipi CSI2

maintainers:
  - Rui Miguel Silva <rmfrfs@gmail.com>

description: |
  This is the device node for the MIPI CSI-2 receiver core in i.MX7 soc. It is
  compatible with previous version of samsung d-phy.

properties:
  compatible:
    const: fsl,imx7-mipi-csi2

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    minItems: 3
    maxItems: 3

  clock-names:
    items:
      - const: pclk
      - const: wrap
      - const: phy

  power-domains:
    maxItems: 1

  phy-supply:
    description:
      Phandle to a regulator that provides power to the PHY. This
      regulator will be managed during the PHY power on/off sequence.

  resets:
    maxItems: 1

  reset-names:
    const: mrst

  clock-frequency:
    description:
      The IP main (system bus) clock frequency in Hertz
    default: 166000000

  fsl,csis-hs-settle:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Differential receiver (HS-RX) settle time

  ports:
    type: object
    description:
      A node containing input and output port nodes with endpoint definitions
      as documented in
      Documentation/devicetree/bindings/media/video-interfaces.txt

    properties:
      '#address-cells':
        const: 1

      '#size-cells':
        const: 0

      port@0:
        type: object
        description:
          Input port node, single endpoint describing the CSI-2 transmitter.

        properties:
          reg:
            const: 0

          endpoint:
            type: object

            properties:
              data-lanes:
                $ref: /schemas/types.yaml#/definitions/uint32-array
                description: See ../video-interfaces.txt
                oneOf:
                  - items:
                      - const: 1
                  - items:
                      - const: 1
                      - const: 2

              remote-endpoint: true

            required:
              - data-lanes
              - remote-endpoint

            additionalProperties: false

        additionalProperties: false

      port@1:
        type: object
        description:
          Output port node

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - power-domains
  - phy-supply
  - resets
  - reset-names
  - ports

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/imx7d-clock.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/reset/imx7-reset.h>

    mipi_csi: mipi-csi@30750000 {
            compatible = "fsl,imx7-mipi-csi2";
            reg = <0x30750000 0x10000>;
            interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;

            clocks = <&clks IMX7D_IPG_ROOT_CLK>,
                     <&clks IMX7D_MIPI_CSI_ROOT_CLK>,
                     <&clks IMX7D_MIPI_DPHY_ROOT_CLK>;
            clock-names = "pclk", "wrap", "phy";
            clock-frequency = <166000000>;

            power-domains = <&pgc_mipi_phy>;
            phy-supply = <&reg_1p0d>;
            resets = <&src IMX7_RESET_MIPI_PHY_MRST>;
            reset-names = "mrst";
            fsl,csis-hs-settle = <3>;

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

                    port@0 {
                            reg = <0>;

                            mipi_from_sensor: endpoint {
                                    remote-endpoint = <&ov2680_to_mipi>;
                                    data-lanes = <1>;
                            };
                    };

                    port@1 {
                            reg = <1>;

                            mipi_vc0_to_csi_mux: endpoint {
                                    remote-endpoint = <&csi_mux_from_mipi_vc0>;
                            };
                    };
            };
    };

...
