diff mbox series

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

Message ID 20240417133453.17406-2-sylvain.petinot@foss.st.com
State Changes Requested
Headers show
Series media: Add driver for ST VD56G3 camera sensor | expand

Checks

Context Check Description
robh/checkpatch success
robh/patch-applied success
robh/dtbs-check warning build log
robh/dt-meta-schema success

Commit Message

Sylvain Petinot April 17, 2024, 1:34 p.m. UTC
Add devicetree bindings Documentation for ST VD56G3 & ST VD66GY camera
sensors. Update MAINTAINERS file.

Signed-off-by: Sylvain Petinot <sylvain.petinot@foss.st.com>
---
 .../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

Comments

Rob Herring (Arm) April 18, 2024, 1:09 p.m. UTC | #1
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@foss.st.com>
> ---
>  .../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@foss.st.com>
> +  - Sylvain Petinot <sylvain.petinot@foss.st.com>
> +
> +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@foss.st.com>
> +M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
> +L:	linux-media@vger.kernel.org
> +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@foss.st.com>
>  M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
> -- 
> 2.17.1
>
Sakari Ailus April 24, 2024, 8:46 p.m. UTC | #2
Hi Sylvain,

Thanks for the patch.

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@foss.st.com>
> ---
>  .../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@foss.st.com>
> +  - Sylvain Petinot <sylvain.petinot@foss.st.com>
> +
> +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 flow of the text could be improved by wrapping the text before 80
columns (not earlier). Most editors can do this.

> +  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:
> +    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 the clock lane is always zero, you can drop the property.

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

Is this a property of the sensor or the driver? Presumably the driver?

What about the input clock frequency?

> +
> +          lane-polarities:
> +            minItems: 1
> +            maxItems: 3
> +            items:
> +              enum: [0, 1]

The items are already in video-interfaces.yaml.

> +            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 {
> +            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>;

No need for a newline after "=".

> +                    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@foss.st.com>
> +M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
> +L:	linux-media@vger.kernel.org
> +S:	Maintained
> +T:	git git://linuxtv.org/media_tree.git
> +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@foss.st.com>
>  M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
Sylvain Petinot May 3, 2024, 8:25 a.m. UTC | #3
Hi Rob,

Thanks for the review.

On 4/18/2024 3:09 PM, Rob Herring wrote:
> 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@foss.st.com>
>> ---
>>  .../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@foss.st.com>
>> +  - Sylvain Petinot <sylvain.petinot@foss.st.com>
>> +
>> +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.

Ok, updated for V2.

> 
>> +    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?

Indeed... it probably serves no purpose.
I added it to be consistent with the data-lanes that can be
reordered/swapped. Will be dropped in V2.

> 
>> +
>> +          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.

Ok, updated for V2.

> 
>> +            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.

Ok

> 
>> +            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@foss.st.com>
>> +M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
>> +L:	linux-media@vger.kernel.org
>> +S:	Maintained
>> +T:	git git://linuxtv.org/media_tree.git
> 
> This should be covered by the media maintainer entry.

I'm really sorry but I don't see what you're referring to. Can you point
me to the correct direction please ?

> 
>> +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@foss.st.com>
>>  M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
>> -- 
>> 2.17.1
>>

--
Sylvain
Sylvain Petinot May 3, 2024, 8:40 a.m. UTC | #4
Hi Sakari,

Thanks for the review.

On 4/24/2024 10:46 PM, Sakari Ailus wrote:
> Hi Sylvain,
> 
> Thanks for the patch.
> 
> 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@foss.st.com>
>> ---
>>  .../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@foss.st.com>
>> +  - Sylvain Petinot <sylvain.petinot@foss.st.com>
>> +
>> +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 flow of the text could be improved by wrapping the text before 80
> columns (not earlier). Most editors can do this.

Sure, will be fixed in V2.

> 
>> +  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:
>> +    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 the clock lane is always zero, you can drop the property.

I added it to be consistent with the data-lanes that can be
reordered/swapped. But yes, it serves nothing.

Does it make sense to keep the corresponding dev_err() message in the
driver ?

> 
>> +
>> +          data-lanes:
>> +            minItems: 1
>> +            maxItems: 2
>> +            items:
>> +              enum: [1, 2]
>> +
>> +          link-frequencies:
>> +            minItems: 1
>> +            maxItems: 1
>> +            items:
>> +              enum: [402000000, 750000000]
> 
> Is this a property of the sensor or the driver? Presumably the driver?
> 
> What about the input clock frequency?

Here are the HW constraints :

- Input clock must be in [6Mhz-27Mhz]
- By design, Pll Clock must target 804Mhz : the driver set some
prediv/mult to achieve this
- Then the MIPI frequency can be configured in the range [125Mhz-750Mhz]

That being said, the common usage (and what is implemented in the
driver) is :
- 1 data lane -> MIPI freq = 750Mhz
- 2 data lanes -> MIPI freq = 402Mhz

> 
>> +
>> +          lane-polarities:
>> +            minItems: 1
>> +            maxItems: 3
>> +            items:
>> +              enum: [0, 1]
> 
> The items are already in video-interfaces.yaml.

Ok, will be dropped for V2.

> 
>> +            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 {
>> +            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>;
> 
> No need for a newline after "=".

Thanks.

> 
>> +                    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@foss.st.com>
>> +M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
>> +L:	linux-media@vger.kernel.org
>> +S:	Maintained
>> +T:	git git://linuxtv.org/media_tree.git
>> +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@foss.st.com>
>>  M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
> 

--
Sylvain
Krzysztof Kozlowski May 3, 2024, 4:06 p.m. UTC | #5
On 03/05/2024 10:25, Sylvain Petinot wrote:
>>> +...
>>> 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@foss.st.com>
>>> +M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
>>> +L:	linux-media@vger.kernel.org
>>> +S:	Maintained
>>> +T:	git git://linuxtv.org/media_tree.git
>>
>> This should be covered by the media maintainer entry.
> 
> I'm really sorry but I don't see what you're referring to. Can you point
> me to the correct direction please ?
> 

Find the media maintainer entry. Do you see Git tree there? Then it is
done. Otherwise, do you have write commit access to above Git? Are you
going to commit to that Git?


Best regards,
Krzysztof
diff mbox series

Patch

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@foss.st.com>
+  - Sylvain Petinot <sylvain.petinot@foss.st.com>
+
+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:
+    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
+
+          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]
+            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 {
+            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@foss.st.com>
+M:	Sylvain Petinot <sylvain.petinot@foss.st.com>
+L:	linux-media@vger.kernel.org
+S:	Maintained
+T:	git git://linuxtv.org/media_tree.git
+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@foss.st.com>
 M:	Sylvain Petinot <sylvain.petinot@foss.st.com>