Re: [PATCH 1/2] media: dt-bindings: Add ST VD56G3 camera sensor binding

From: Rob Herring
Date: Thu Apr 18 2024 - 09:09:32 EST


On Wed, Apr 17, 2024 at 03:34:52PM +0200, Sylvain Petinot wrote:
> Add devicetree bindings Documentation for ST VD56G3 & ST VD66GY camera
> sensors. Update MAINTAINERS file.
>
> Signed-off-by: Sylvain Petinot <sylvain.petinot@xxxxxxxxxxx>
> ---
> .../bindings/media/i2c/st,st-vd56g3.yaml | 143 ++++++++++++++++++
> MAINTAINERS | 9 ++
> 2 files changed, 152 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/media/i2c/st,st-vd56g3.yaml
>
> diff --git a/Documentation/devicetree/bindings/media/i2c/st,st-vd56g3.yaml b/Documentation/devicetree/bindings/media/i2c/st,st-vd56g3.yaml
> new file mode 100644
> index 000000000000..6792c02fea5c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/st,st-vd56g3.yaml
> @@ -0,0 +1,143 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +# Copyright (c) 2024 STMicroelectronics SA.
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/i2c/st,st-vd56g3.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: STMicroelectronics VD56G3 Global Shutter Image Sensor
> +
> +maintainers:
> + - Benjamin Mugnier <benjamin.mugnier@xxxxxxxxxxx>
> + - Sylvain Petinot <sylvain.petinot@xxxxxxxxxxx>
> +
> +description: |-
> + The STMicroelectronics VD56G3 is a 1.5 M pixel global shutter image sensor
> + with an active array size of 1124 x 1364 (portrait orientation).
> + It is programmable through I2C, the address is fixed to 0x10.
> + The sensor output is available via CSI-2, which is configured as either 1 or
> + 2 data lanes.
> + The sensor provides 8 GPIOS that can be used for either
> + - frame synchronization (Master: out-sync or Slave: in-sync)
> + - external LED signal (synchronized with sensor integration periods)
> +
> +properties:
> + compatible:
> + enum:
> + - st,st-vd56g3
> + - st,st-vd66gy
> + description:
> + Two variants are availables; VD56G3 is a monochrome sensor while VD66GY
> + is a colour variant.
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + maxItems: 1
> +
> + VCORE-supply:

Convention is lowercase.

> + 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:
> + Sensor's GPIOs used for external LED control.
> + Signal being the enveloppe of the integration time.
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 1
> + maxItems: 8
> + items:
> + minimum: 0
> + maximum: 7
> +
> + port:
> + $ref: /schemas/graph.yaml#/$defs/port-base
> +
> + properties:
> + endpoint:
> + $ref: /schemas/media/video-interfaces.yaml#
> + unevaluatedProperties: false
> +
> + properties:
> + clock-lanes:
> + const: 0

If required and only 1 possible value, why does this need to be in DT?

> +
> + data-lanes:
> + minItems: 1
> + maxItems: 2
> + items:
> + enum: [1, 2]
> +
> + link-frequencies:
> + minItems: 1
> + maxItems: 1
> + items:
> + enum: [402000000, 750000000]
> +
> + lane-polarities:
> + minItems: 1
> + maxItems: 3
> + items:
> + enum: [0, 1]

video-interfaces.yaml already defines this constraint, so you just need
to define how many entries.

> + description: Any lane can be inverted or not.
> +
> + required:
> + - clock-lanes
> + - data-lanes
> + - link-frequencies
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - VCORE-supply
> + - VDDIO-supply
> + - VANA-supply
> + - reset-gpios
> + - port
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> +
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + vd56g3: camera-sensor@10 {

Drop unused labels.

> + compatible = "st,st-vd56g3";
> + 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 = <6>;
> +
> + port {
> + vd56g3_ep: endpoint {
> + clock-lanes = <0>;
> + data-lanes = <1 2>;
> + link-frequencies =
> + /bits/ 64 <402000000>;
> + remote-endpoint = <&csiphy0_ep>;
> + };
> + };
> + };
> + };
> +...
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 7c121493f43d..991e65627e18 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -20868,6 +20868,15 @@ S: Maintained
> F: Documentation/hwmon/stpddc60.rst
> F: drivers/hwmon/pmbus/stpddc60.c
>
> +ST VD56G3 DRIVER
> +M: Benjamin Mugnier <benjamin.mugnier@xxxxxxxxxxx>
> +M: Sylvain Petinot <sylvain.petinot@xxxxxxxxxxx>
> +L: linux-media@xxxxxxxxxxxxxxx
> +S: Maintained
> +T: git git://linuxtv.org/media_tree.git

This should be covered by the media maintainer entry.

> +F: Documentation/devicetree/bindings/media/i2c/st,st-vd56g3.yaml
> +F: drivers/media/i2c/st-vd56g3.c
> +
> ST VGXY61 DRIVER
> M: Benjamin Mugnier <benjamin.mugnier@xxxxxxxxxxx>
> M: Sylvain Petinot <sylvain.petinot@xxxxxxxxxxx>
> --
> 2.17.1
>