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

title: Omnivision OV5693/OV5695 CMOS Sensors

maintainers:
  - Tommaso Merciai <tomm.merciai@gmail.com>

description: |
  The Omnivision OV5693/OV5695 are high performance, 1/4-inch, 5 megapixel, CMOS
  image sensors that deliver 2592x1944 at 30fps. It provides full-frame,
  sub-sampled, and windowed 10-bit MIPI images in various formats via the
  Serial Camera Control Bus (SCCB) interface.

  OV5693/OV5695 are controlled via I2C and two-wire Serial Camera Control Bus
  (SCCB). The sensor output is available via CSI-2 serial data output (up to
  2-lane).

allOf:
  - $ref: /schemas/media/video-interface-devices.yaml#
  - if:
      properties:
        compatible:
          contains:
            const: ovti,ov5693
    then:
      properties:
        port:
          properties:
            endpoint:
              required:
                - link-frequencies

properties:
  compatible:
    enum:
      - ovti,ov5693
      - ovti,ov5695

  reg:
    maxItems: 1

  clocks:
    description:
      System input clock (aka XVCLK). From 6 to 27 MHz.
    maxItems: 1

  clock-names:
    const: xvclk

  dovdd-supply:
    description:
      Digital I/O voltage supply, 1.8V.

  avdd-supply:
    description:
      Analog voltage supply, 2.8V.

  dvdd-supply:
    description:
      Digital core voltage supply, 1.2V.

  reset-gpios:
    description:
      The phandle and specifier for the GPIO that controls sensor reset.
      This corresponds to the hardware pin XSHUTDN which is physically
      active low.
    maxItems: 1

  port:
    description: MIPI CSI-2 transmitter port
    $ref: /schemas/graph.yaml#/$defs/port-base
    additionalProperties: false

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

        properties:
          link-frequencies: true

          data-lanes:
            minItems: 1
            maxItems: 2

        required:
          - data-lanes

required:
  - compatible
  - reg
  - clocks
  - port

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/px30-cru.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/pinctrl/rockchip.h>

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

        ov5693: camera@36 {
            compatible = "ovti,ov5693";
            reg = <0x36>;

            reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>;
            pinctrl-names = "default";
            pinctrl-0 = <&cif_clkout_m0>;

            clocks = <&cru SCLK_CIF_OUT>;
            assigned-clocks = <&cru SCLK_CIF_OUT>;
            assigned-clock-rates = <19200000>;

            avdd-supply = <&vcc_1v8>;
            dvdd-supply = <&vcc_1v2>;
            dovdd-supply = <&vcc_2v8>;

            rotation = <90>;
            orientation = <0>;

            port {
                ucam_out: endpoint {
                    remote-endpoint = <&mipi_in_ucam>;
                    data-lanes = <1 2>;
                    link-frequencies = /bits/ 64 <450000000>;
                };
            };
        };
    };

...
