[v1,1/2] libcamera: camera_sensor: Add Sony IMX662 sensor properties and helper
diff mbox series

Message ID 20260720131047.2749510-2-naush@raspberrypi.com
State Accepted
Headers show
Series
  • Add support for Sony IMX662
Related show

Commit Message

Naushir Patuck July 20, 2026, 1:07 p.m. UTC
Add the camera sensor properties and camera helper entry for the Sony
IMX662 sensor.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
---
 src/ipa/libipa/camera_sensor_helper.cpp           | 12 ++++++++++++
 src/libcamera/sensor/camera_sensor_properties.cpp | 10 ++++++++++
 2 files changed, 22 insertions(+)

Comments

Kieran Bingham July 22, 2026, 8:58 a.m. UTC | #1
Quoting Naushir Patuck (2026-07-20 14:07:55)
> Add the camera sensor properties and camera helper entry for the Sony
> IMX662 sensor.
> 
> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
> ---
>  src/ipa/libipa/camera_sensor_helper.cpp           | 12 ++++++++++++
>  src/libcamera/sensor/camera_sensor_properties.cpp | 10 ++++++++++
>  2 files changed, 22 insertions(+)
> 
> diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp
> index 54a88c55bc2d..14d9690c1864 100644
> --- a/src/ipa/libipa/camera_sensor_helper.cpp
> +++ b/src/ipa/libipa/camera_sensor_helper.cpp
> @@ -642,6 +642,18 @@ public:
>  };
>  REGISTER_CAMERA_SENSOR_HELPER("imx477", CameraSensorHelperImx477)
>  
> +class CameraSensorHelperImx662 : public CameraSensorHelper
> +{
> +public:
> +       CameraSensorHelperImx662()
> +       {
> +               /* From datasheet: 0xc8 at 12bits. */
> +               blackLevel_ = 3200;
> +               gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) };

Matches what I interpret:

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

> +       }
> +};
> +REGISTER_CAMERA_SENSOR_HELPER("imx662", CameraSensorHelperImx662)
> +
>  class CameraSensorHelperImx678 : public CameraSensorHelper
>  {
>  public:
> diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp
> index 7685524ad189..3672e8f0d79b 100644
> --- a/src/libcamera/sensor/camera_sensor_properties.cpp
> +++ b/src/libcamera/sensor/camera_sensor_properties.cpp
> @@ -309,6 +309,16 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
>                                 .hblankDelay = 3
>                         },
>                 } },
> +               { "imx662", {
> +                       .unitCellSize = { 2900, 2900 },
> +                       .testPatternModes = {},
> +                       .sensorDelays = {
> +                               .exposureDelay = 2,
> +                               .gainDelay = 2,

The timing diagram on page 9 looks like it's only a gainDelay of 1 ? But
I never understand the real timings here, and I still want a tool that
will just measure the reality!



> +                               .vblankDelay = 2,
> +                               .hblankDelay = 2
> +                       },
> +               } },
>                 { "imx678", {
>                         .unitCellSize = { 2000, 2000 },
>                         .testPatternModes = {},
> -- 
>
David Plowman July 22, 2026, 9:10 a.m. UTC | #2
Hi Naush

On Wed, 22 Jul 2026 at 09:58, Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> Quoting Naushir Patuck (2026-07-20 14:07:55)
> > Add the camera sensor properties and camera helper entry for the Sony
> > IMX662 sensor.
> >
> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
> > ---
> >  src/ipa/libipa/camera_sensor_helper.cpp           | 12 ++++++++++++
> >  src/libcamera/sensor/camera_sensor_properties.cpp | 10 ++++++++++
> >  2 files changed, 22 insertions(+)
> >
> > diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp
> > index 54a88c55bc2d..14d9690c1864 100644
> > --- a/src/ipa/libipa/camera_sensor_helper.cpp
> > +++ b/src/ipa/libipa/camera_sensor_helper.cpp
> > @@ -642,6 +642,18 @@ public:
> >  };
> >  REGISTER_CAMERA_SENSOR_HELPER("imx477", CameraSensorHelperImx477)
> >
> > +class CameraSensorHelperImx662 : public CameraSensorHelper
> > +{
> > +public:
> > +       CameraSensorHelperImx662()
> > +       {
> > +               /* From datasheet: 0xc8 at 12bits. */
> > +               blackLevel_ = 3200;
> > +               gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) };
>
> Matches what I interpret:
>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
>
> > +       }
> > +};
> > +REGISTER_CAMERA_SENSOR_HELPER("imx662", CameraSensorHelperImx662)
> > +
> >  class CameraSensorHelperImx678 : public CameraSensorHelper
> >  {
> >  public:
> > diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp
> > index 7685524ad189..3672e8f0d79b 100644
> > --- a/src/libcamera/sensor/camera_sensor_properties.cpp
> > +++ b/src/libcamera/sensor/camera_sensor_properties.cpp
> > @@ -309,6 +309,16 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
> >                                 .hblankDelay = 3
> >                         },
> >                 } },
> > +               { "imx662", {
> > +                       .unitCellSize = { 2900, 2900 },
> > +                       .testPatternModes = {},
> > +                       .sensorDelays = {
> > +                               .exposureDelay = 2,
> > +                               .gainDelay = 2,
>
> The timing diagram on page 9 looks like it's only a gainDelay of 1 ? But
> I never understand the real timings here, and I still want a tool that
> will just measure the reality!
>
>
>
> > +                               .vblankDelay = 2,
> > +                               .hblankDelay = 2
> > +                       },
> > +               } },
> >                 { "imx678", {
> >                         .unitCellSize = { 2000, 2000 },
> >                         .testPatternModes = {},
> > --
> >

Reviewed-by: David Plowman <david.plowman@raspberrypi.com>

Thanks!

David

Patch
diff mbox series

diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp
index 54a88c55bc2d..14d9690c1864 100644
--- a/src/ipa/libipa/camera_sensor_helper.cpp
+++ b/src/ipa/libipa/camera_sensor_helper.cpp
@@ -642,6 +642,18 @@  public:
 };
 REGISTER_CAMERA_SENSOR_HELPER("imx477", CameraSensorHelperImx477)
 
+class CameraSensorHelperImx662 : public CameraSensorHelper
+{
+public:
+	CameraSensorHelperImx662()
+	{
+		/* From datasheet: 0xc8 at 12bits. */
+		blackLevel_ = 3200;
+		gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) };
+	}
+};
+REGISTER_CAMERA_SENSOR_HELPER("imx662", CameraSensorHelperImx662)
+
 class CameraSensorHelperImx678 : public CameraSensorHelper
 {
 public:
diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp
index 7685524ad189..3672e8f0d79b 100644
--- a/src/libcamera/sensor/camera_sensor_properties.cpp
+++ b/src/libcamera/sensor/camera_sensor_properties.cpp
@@ -309,6 +309,16 @@  const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
 				.hblankDelay = 3
 			},
 		} },
+		{ "imx662", {
+			.unitCellSize = { 2900, 2900 },
+			.testPatternModes = {},
+			.sensorDelays = {
+				.exposureDelay = 2,
+				.gainDelay = 2,
+				.vblankDelay = 2,
+				.hblankDelay = 2
+			},
+		} },
 		{ "imx678", {
 			.unitCellSize = { 2000, 2000 },
 			.testPatternModes = {},