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

title: Sony 1/2.3-Inch 12Mpixel CMOS Digital Image Sensor

maintainers:
  - Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>

description: |-
  The Sony IMX708 is a 1/2.3-inch CMOS active pixel digital image sensor
  with an active array size of 4608H x 2592V. It is programmable through
  I2C interface. The I2C address is fixed to 0x1A as per sensor data sheet.
  Image data is sent through MIPI CSI-2, which is configured as either 2 or
  4 data lanes.

properties:
  compatible:
    const: sony,imx708

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    description: Input clock (6 to 27 MHz)
    items:
      - const: inck

  vdig-supply:
    description:
      Digital I/O voltage supply, 1.1 volts

  vana1-supply:
    description:
      Analog1 voltage supply, 2.8 volts

  vana2-supply:
    description:
      Analog2 voltage supply, 1.8 volts

  vddl-supply:
    description:
      Digital core voltage supply, 1.8 volts

  reset-gpios:
    description: Sensor reset (XCLR) GPIO
    maxItems: 1

  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-names
  - vdig-supply
  - vana1-supply
  - vana2-supply
  - vddl-supply
  - port

additionalProperties: false

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

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

        imx708: camera-sensor@1a {
            compatible = "sony,imx708";
            reg = <0x1a>;

            clocks = <&clk 90>;
            clock-names = "inck";

            vdig-supply = <&camera_vdig>;
            vana1-supply = <&camera_vana1>;
            vana2-supply = <&camera_vana2>;
            vddl-supply = <&camera_vddl>;

            reset-gpios = <&gpio 35 GPIO_ACTIVE_LOW>;

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