# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright (c) 2019 MediaTek Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/ov8856.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Omnivision OV8856 CMOS Sensor

maintainers:
  - Sakari Ailus <sakari.ailus@linux.intel.com>

description: |-
  The Omnivision OV8856 is a high performance, 1/4-inch, 8 megapixel, CMOS
  image sensor that delivers 3264x2448 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. This chip is programmable
  through I2C and two-wire SCCB. The sensor output is available via CSI-2
  serial data output (up to 4-lane).

properties:
  compatible:
    const: ovti,ov8856

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    description:
      Input clock for the sensor.
    items:
      - const: xvclk

  clock-frequency:
    description:
      Frequency of the xvclk clock in Hertz.

  dovdd-supply:
    description:
      Definition of the regulator used as interface power supply.

  avdd-supply:
    description:
      Definition of the regulator used as analog power supply.

  dvdd-supply:
    description:
      Definition of the regulator used as digital power supply.

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

  port:
    $ref: /schemas/graph.yaml#/$defs/port-base
    additionalProperties: false

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

        properties:
          data-lanes:
            oneOf:
              - items:
                  - const: 1
              - items:
                  - const: 1
                  - const: 2
              - items:
                  - const: 1
                  - const: 2
                  - const: 3
                  - const: 4

        required:
          - link-frequencies

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - clock-frequency
  - dovdd-supply
  - avdd-supply
  - dvdd-supply
  - reset-gpios
  - port

additionalProperties: false

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

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

        ov8856: camera@10 {
            compatible = "ovti,ov8856";
            reg = <0x10>;

            reset-gpios = <&pio 111 GPIO_ACTIVE_LOW>;
            pinctrl-names = "default";
            pinctrl-0 = <&clk_24m_cam>;

            clocks = <&cam_osc>;
            clock-names = "xvclk";
            clock-frequency = <19200000>;

            avdd-supply = <&mt6358_vcama2_reg>;
            dvdd-supply = <&mt6358_vcamd_reg>;
            dovdd-supply = <&mt6358_vcamio_reg>;

            port {
                wcam_out: endpoint {
                    remote-endpoint = <&mipi_in_wcam>;
                    data-lanes = <1 2 3 4>;
                    link-frequencies = /bits/ 64 <360000000>;
                };
            };
        };
    };
...
