[1/3] libcamera: camera_sensor_properties: Add vd56g3 camera sensor
diff mbox series

Message ID 20250620-vd56g3_support-v1-1-df434bdbc9bd@foss.st.com
State New
Headers show
Series
  • Add vd56g3 support for rpi and libipa
Related show

Commit Message

Benjamin Mugnier June 20, 2025, 1:49 p.m. UTC
Add unit cell size from the 'pixel size' element in the datasheet.
Delays are set to 2 in case a setting is entered at the very and of the
N frame, the N+1 frame will miss it and only the N+2 frame will use this
new setting.

Note that vd56g3 has a diagonal color test pattern, but does not match
any description in specified test patterns and therefore is ignored.

Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
---
 src/libcamera/sensor/camera_sensor_properties.cpp | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

Comments

Naushir Patuck July 24, 2025, 9:23 a.m. UTC | #1
On Fri, 20 Jun 2025 at 14:50, Benjamin Mugnier
<benjamin.mugnier@foss.st.com> wrote:
>
> Add unit cell size from the 'pixel size' element in the datasheet.
> Delays are set to 2 in case a setting is entered at the very and of the
> N frame, the N+1 frame will miss it and only the N+2 frame will use this
> new setting.
>
> Note that vd56g3 has a diagonal color test pattern, but does not match
> any description in specified test patterns and therefore is ignored.
>
> Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>

I don't have the datasheet for this sensor, but the numbers look reasonable!

Reviewed-by: Naushir Patuck <naush@raspberrypi.com>

> ---
>  src/libcamera/sensor/camera_sensor_properties.cpp | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp
> index c9e9e148a1f08d64b63343ca2e204deaf9ef68c8..0816e2093c6d1b4531779455ea3147dcf32e741d 100644
> --- a/src/libcamera/sensor/camera_sensor_properties.cpp
> +++ b/src/libcamera/sensor/camera_sensor_properties.cpp
> @@ -456,6 +456,27 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
>                         },
>                         .sensorDelays = { },
>                 } },
> +               { "vd56g3", {
> +                       .unitCellSize = { 2160, 2160 },
> +                       .testPatternModes = {
> +                               { controls::draft::TestPatternModeOff, 0 },
> +                               { controls::draft::TestPatternModeSolidColor, 1 },
> +                               { controls::draft::TestPatternModePn9, 6 },
> +                               /*
> +                                * No corresponding test pattern mode for:
> +                                * 2: "Vertical Color Bars"
> +                                * 3: "Horizontal Gray Scale"
> +                                * 4: "Vertical Gray Scale"
> +                                * 5: "Diagonal Gray Scale"
> +                                */
> +                       },
> +                       .sensorDelays = {
> +                               .exposureDelay = 2,
> +                               .gainDelay = 2,
> +                               .vblankDelay = 2,
> +                               .hblankDelay = 2
> +                       },
> +               } },
>         };
>
>         const auto it = sensorProps.find(sensor);
>
> --
> 2.25.1
>
Laurent Pinchart July 24, 2025, 10:12 a.m. UTC | #2
Hi Benjamin,

On Fri, Jun 20, 2025 at 03:49:16PM +0200, Benjamin Mugnier wrote:
> Add unit cell size from the 'pixel size' element in the datasheet.
> Delays are set to 2 in case a setting is entered at the very and of the

s/and/end/

> N frame, the N+1 frame will miss it and only the N+2 frame will use this
> new setting.
> 
> Note that vd56g3 has a diagonal color test pattern, but does not match
> any description in specified test patterns and therefore is ignored.
> 
> Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
> ---
>  src/libcamera/sensor/camera_sensor_properties.cpp | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp
> index c9e9e148a1f08d64b63343ca2e204deaf9ef68c8..0816e2093c6d1b4531779455ea3147dcf32e741d 100644
> --- a/src/libcamera/sensor/camera_sensor_properties.cpp
> +++ b/src/libcamera/sensor/camera_sensor_properties.cpp
> @@ -456,6 +456,27 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
>  			},
>  			.sensorDelays = { },
>  		} },
> +		{ "vd56g3", {
> +			.unitCellSize = { 2160, 2160 },

According to https://www.st.com/resource/en/datasheet/vd56g3.pdf, the
pixel size is 2.61µm. This matches the optical array dimensions,
documented as 3570.48 x 2944.08, for a total of 1368x1128 pixels.

The rest looks good to me. If this is the only required change, I can
fix the typos when applying.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> +			.testPatternModes = {
> +				{ controls::draft::TestPatternModeOff, 0 },
> +				{ controls::draft::TestPatternModeSolidColor, 1 },
> +				{ controls::draft::TestPatternModePn9, 6 },
> +				/*
> +				 * No corresponding test pattern mode for:
> +				 * 2: "Vertical Color Bars"
> +				 * 3: "Horizontal Gray Scale"
> +				 * 4: "Vertical Gray Scale"
> +				 * 5: "Diagonal Gray Scale"
> +				 */
> +			},
> +			.sensorDelays = {
> +				.exposureDelay = 2,
> +				.gainDelay = 2,
> +				.vblankDelay = 2,
> +				.hblankDelay = 2
> +			},
> +		} },
>  	};
>  
>  	const auto it = sensorProps.find(sensor);

Patch
diff mbox series

diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp
index c9e9e148a1f08d64b63343ca2e204deaf9ef68c8..0816e2093c6d1b4531779455ea3147dcf32e741d 100644
--- a/src/libcamera/sensor/camera_sensor_properties.cpp
+++ b/src/libcamera/sensor/camera_sensor_properties.cpp
@@ -456,6 +456,27 @@  const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
 			},
 			.sensorDelays = { },
 		} },
+		{ "vd56g3", {
+			.unitCellSize = { 2160, 2160 },
+			.testPatternModes = {
+				{ controls::draft::TestPatternModeOff, 0 },
+				{ controls::draft::TestPatternModeSolidColor, 1 },
+				{ controls::draft::TestPatternModePn9, 6 },
+				/*
+				 * No corresponding test pattern mode for:
+				 * 2: "Vertical Color Bars"
+				 * 3: "Horizontal Gray Scale"
+				 * 4: "Vertical Gray Scale"
+				 * 5: "Diagonal Gray Scale"
+				 */
+			},
+			.sensorDelays = {
+				.exposureDelay = 2,
+				.gainDelay = 2,
+				.vblankDelay = 2,
+				.hblankDelay = 2
+			},
+		} },
 	};
 
 	const auto it = sensorProps.find(sensor);