# 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 CMOS Sensor

maintainers:
  - Tommaso Merciai <tommaso.merciai@amarulasolutions.com>

description: |
  The Omnivision OV5693 is a high performance, 1/4-inch, 5 megapixel, CMOS
  image sensor that delivers 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 is 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#

properties:
  compatible:
    const: ovti,ov5693

  reg:
    maxItems: 1

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

  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
          - link-frequencies

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>;
                };
            };
        };
    };

...
