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

From: Sylvain Petinot
Date: Mon May 27 2024 - 09:16:15 EST


Hi Krzysztof,

Thanks for the review.

On 5/21/2024 7:37 PM, Krzysztof Kozlowski wrote:
> On 21/05/2024 18:29, Sylvain Petinot wrote:
>> Add devicetree bindings Documentation for ST VD56G3 & ST VD66GY camera
>> sensors. Update MAINTAINERS file.
>>
>
> A nit, subject: drop second/last, redundant "binding". The "dt-bindings"
> prefix is already stating that these are bindings.
> See also:
> https://elixir.bootlin.com/linux/v6.7-rc8/source/Documentation/devicetree/bindings/submitting-patches.rst#L18
>

Ok, fixed in V3.

>
>> Signed-off-by: Sylvain Petinot <sylvain.petinot@xxxxxxxxxxx>
>> ---
>> .../bindings/media/i2c/st,st-vd56g3.yaml | 132 ++++++++++++++++++
>> MAINTAINERS | 9 ++
>> 2 files changed, 141 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..22cb2557e311
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/media/i2c/st,st-vd56g3.yaml
>
> Why duplicated 'st'?

Legacy : our first st-mipid02 driver was upstream this way few years back.

We have 3 options :

1- keep this unpleasant naming to keep consistency with st-mipid02 [1]
and st-vgxy61 [2]
2- rename this driver properly ('vd56g3') and keep the two others the
old way (I personally don't like this option)
3- rename this driver properly ('vd56g3') and in a second patch rename
the two others drivers.

I would be interested to get Sakari's opinion on this subject.

[1]:
https://elixir.bootlin.com/linux/v6.9.1/source/drivers/media/i2c/st-mipid02.c

[2]:
https://elixir.bootlin.com/linux/v6.9.1/source/drivers/media/i2c/st-vgxy61.c

>
>> @@ -0,0 +1,132 @@
>> +# 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
>
> This claims device is VD56G3, not ST-VD56G3.

Sure, linked with previous point.

>
>> + 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 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:
>> + 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.
>
> More information is needed. GPIOs coming from LED or SoC? What's the
> meaning of values?

The vd56g3 image sensor provides 8 GPIOS that can be used for different
use cases (external led controls, synchronization between master/slave
sensors, external sensor trigger, etc.). This submission supports only
the first use case: the control of one(or multiple) external LED.

The vd56g3 sensor family are optimized for visible and near infrared
scenes. In NIR, external IR leds are generally used for illumination.

With such use case, a led (or a led driver) can be connected directly to
one of the 8 GPIOs of the sensor. On the driver side, when a led is
configured in the dt, the driver will configure the sensor accordingly.
It will also offer an optional "V4L2_FLASH_LED_MODE_FLASH" control to
start/stop the external control.

Different signal modes are supported by the HW, but the default
(implemented) one is a "strobe" mode where signal is the envelope of the
integration time (IR led is on while image sensor is integrating).

>
>> + $ref: /schemas/types.yaml#/definitions/uint32-array
>> + minItems: 1
>> + maxItems: 8
>> + items:
>> + minimum: 0
>> + maximum: 7
>> +
>> + port:
>> + $ref: /schemas/graph.yaml#/$defs/port-base
>
> missing additionalProperties: false

Ok, fixed in V3.

>
>> +
>> + properties:
>> + endpoint:
>> + $ref: /schemas/media/video-interfaces.yaml#
>> + unevaluatedProperties: false
>> +
>> + properties:
>> + data-lanes:
>> + minItems: 1
>> + maxItems: 2
>> + items:
>> + enum: [1, 2]
>
>
>> +
>> + link-frequencies:
>> + minItems: 1
>
> maxItems is enough

Ok, fixed in V3.

>
>> + maxItems: 1
>> + items:
>> + enum: [402000000, 750000000]
>> +
>> + lane-polarities:
>> + minItems: 1
>> + maxItems: 3
>> + description: Any lane can be inverted or not.
>> +
>> + required:
>> + - data-lanes
>> + - link-frequencies
>> +
>> +required:
>> + - compatible
>> + - reg
>> + - clocks
>> + - vcore-supply
>> + - vddio-supply
>> + - vana-supply
>> + - reset-gpios
>> + - port
>> +
>
>
> Not a video-interface-device.yaml type of device?

Good point, something I'll consider in V3

>
> Best regards,
> Krzysztof
>

--
Sylvain