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

title: Sony 1/3.06-Inch 13.13MP CMOS Digital Image Sensor

maintainers:
  - Ricardo Ribalda <ribalda@kernel.org>

description: |
  The Sony IMX214 is a 1/3.06-inch CMOS active pixel digital image sensor with
  an active array size of 4224H x 3200V. It is programmable through an I2C
  interface. Image data is sent through MIPI CSI-2, through 2 or 4 lanes at a
  maximum throughput of 1.2Gbps/lane.

allOf:
  - $ref: ../video-interface-devices.yaml#

properties:
  compatible:
    const: sony,imx214

  reg:
    enum:
      - 0x10
      - 0x1a

  clocks:
    description: Reference to the xclk clock.
    maxItems: 1

  clock-frequency:
    description: Frequency of the xclk clock in Hz.

  enable-gpios:
    description: GPIO descriptor for the enable pin.
    maxItems: 1

  vdddo-supply:
    description: Chip digital IO regulator (1.8V).

  vdda-supply:
    description: Chip analog regulator (2.7V).

  vddd-supply:
    description: Chip digital core regulator (1.12V).

  flash-leds: true
  lens-focus: true

  port:
    $ref: /schemas/graph.yaml#/$defs/port-base
    description: |
      Video output port.

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

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

          link-frequencies: true

        required:
          - data-lanes
          - link-frequencies

    additionalProperties: false

required:
  - compatible
  - reg
  - clocks
  - clock-frequency
  - enable-gpios
  - vdddo-supply
  - vdda-supply
  - vddd-supply
  - port

additionalProperties: false

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

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

        camera-sensor@1a {
            compatible = "sony,imx214";
            reg = <0x1a>;
            vdddo-supply = <&pm8994_lvs1>;
            vddd-supply = <&camera_vddd_1v12>;
            vdda-supply = <&pm8994_l17>;
            lens-focus = <&ad5820>;
            enable-gpios = <&msmgpio 25 GPIO_ACTIVE_HIGH>;
            clocks = <&camera_clk>;
            clock-frequency = <24000000>;

            port {
                imx214_ep: endpoint {
                    data-lanes = <1 2 3 4>;
                    link-frequencies = /bits/ 64 <480000000>;
                    remote-endpoint = <&csiphy0_ep>;
                };
            };
        };
    };

...