# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright (c) 2025 STMicroelectronics SA.
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/st,vd55g1.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: STMicroelectronics VD55G1 Global Shutter Image Sensor

maintainers:
  - Benjamin Mugnier <benjamin.mugnier@foss.st.com>
  - Sylvain Petinot <sylvain.petinot@foss.st.com>

description: |-
 The STMicroelectronics VD55G1 is a global shutter image sensor with an active
 array size of 804H x 704V. It is programmable through I2C interface. The I2C
 address is fixed to 0x10.

 Image data is sent through MIPI CSI-2, which is configured as only 1 data
 lane. The sensor provides 4 GPIOS that can be used for external LED signal
 (synchronized with sensor integration periods).

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

properties:
  compatible:
    const: st,vd55g1

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  vcore-supply:
    description: Digital core power supply (1.15V)

  vddio-supply:
    description: Digital IO power supply (1.8V)

  vana-supply:
    description: Analog power supply (2.8V)

  reset-gpios:
    description: Sensor reset active low GPIO (XSHUTDOWN)
    maxItems: 1

  st,leds:
    description:
      List sensor's GPIOs used to control strobe light sources during exposure
      time. The numbers identify the sensor pin on which the illumination
      system is connected. GPIOs are active-high.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 4
    items:
      minimum: 0
      maximum: 3

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

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

        properties:
          data-lanes:
            items:
              - const: 1

          link-frequencies:
            maxItems: 1
            items:
              minimum: 125000000
              maximum: 600000000

          lane-polarities:
            minItems: 1
            maxItems: 2

        required:
          - data-lanes
          - link-frequencies

required:
  - compatible
  - reg
  - clocks
  - vcore-supply
  - vddio-supply
  - vana-supply
  - reset-gpios
  - port

unevaluatedProperties: false

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

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

        camera-sensor@10 {
            compatible = "st,vd55g1";
            reg = <0x10>;

            clocks = <&camera_clk_12M>;

            vcore-supply = <&camera_vcore_v1v15>;
            vddio-supply = <&camera_vddio_v1v8>;
            vana-supply = <&camera_vana_v2v8>;

            reset-gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
            st,leds = <2>;

            orientation = <2>;
            rotation = <0>;

            port {
                endpoint {
                    data-lanes = <1>;
                    link-frequencies = /bits/ 64 <600000000>;
                    remote-endpoint = <&csiphy0_ep>;
                };
            };
        };
    };
