[v3,2/4] libcamera: camera_sensor: Add properties and helpers for Sony IMX585 and IMX676
diff mbox series

Message ID 20261105-mainline-imx676-v3-2-a2622d41659b@ideasonboard.com
State New
Headers show
Series
  • libcamera: sensor: Add support for Sony IMX585, IMX675, IMX676, IMX832
Related show

Commit Message

Jai Luthra Nov. 5, 2026, 1:07 p.m. UTC
Sony IMX585 (8.4MP) and IMX676 (12.6MP) are Starvis 2 sensors, with very
similar properties to IMX662 and IMX678. Add the camera sensor
properties for both.

To my knowledge, all of these 4 sensors have the same black level and
gain models. For convenience use the IMX678 camera sensor helper for all
of these 4. This of course can change if differences are found later.

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com>
---
 src/ipa/libipa/camera_sensor_helper.cpp           | 19 ++++++-------------
 src/libcamera/sensor/camera_sensor_properties.cpp | 20 ++++++++++++++++++++
 2 files changed, 26 insertions(+), 13 deletions(-)

Patch
diff mbox series

diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp
index 3b22b04dcc94..57f21b35dc49 100644
--- a/src/ipa/libipa/camera_sensor_helper.cpp
+++ b/src/ipa/libipa/camera_sensor_helper.cpp
@@ -662,18 +662,10 @@  public:
 };
 REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx477, "imx477")
 
-class CameraSensorHelperImx662 : public CameraSensorHelper
-{
-public:
-	CameraSensorHelperImx662()
-	{
-		/* From datasheet: 0xc8 at 12bits. */
-		blackLevel_ = 3200;
-		gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) };
-	}
-};
-REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx662, "imx662")
-
+/*
+ * Reusing CameraSensorHelperImx678 for multiple sensors, for convenience.
+ * They may need to be split apart if any differences are found later.
+ */
 class CameraSensorHelperImx678 : public CameraSensorHelper
 {
 public:
@@ -684,7 +676,8 @@  public:
 		gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) };
 	}
 };
-REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx678, "imx678")
+REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx678, "imx585", "imx662",
+			      "imx676", "imx678")
 
 class CameraSensorHelperImx708 : public CameraSensorHelper
 {
diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp
index 20cfd0bc11a6..1916e905cb7c 100644
--- a/src/libcamera/sensor/camera_sensor_properties.cpp
+++ b/src/libcamera/sensor/camera_sensor_properties.cpp
@@ -340,6 +340,16 @@  const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
 				.hblankDelay = 3
 			},
 		} },
+		{ "imx585", {
+			.unitCellSize = { 2900, 2900 },
+			.testPatternModes = {},
+			.sensorDelays = {
+				.exposureDelay = 2,
+				.gainDelay = 2,
+				.vblankDelay = 2,
+				.hblankDelay = 2
+			},
+		} },
 		{ "imx662", {
 			.unitCellSize = { 2900, 2900 },
 			.testPatternModes = {},
@@ -350,6 +360,16 @@  const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
 				.hblankDelay = 2
 			},
 		} },
+		{ "imx676", {
+			.unitCellSize = { 2000, 2000 },
+			.testPatternModes = {},
+			.sensorDelays = {
+				.exposureDelay = 2,
+				.gainDelay = 2,
+				.vblankDelay = 2,
+				.hblankDelay = 2
+			},
+		} },
 		{ "imx678", {
 			.unitCellSize = { 2000, 2000 },
 			.testPatternModes = {},