diff --git a/src/ipa/libipa/camera_sensor_helper.cpp
b/src/ipa/libipa/camera_sensor_helper.cpp
index cc16e25..5fb545a 100644
--- a/src/ipa/libipa/camera_sensor_helper.cpp
+++ b/src/ipa/libipa/camera_sensor_helper.cpp
@@ -644,6 +644,30 @@ class CameraSensorHelperImx462 : public
CameraSensorHelperImx290
 };
 REGISTER_CAMERA_SENSOR_HELPER("imx462", CameraSensorHelperImx462)

+class CameraSensorHelperImx471 : public CameraSensorHelper
+{
+public:
+	CameraSensorHelperImx471()
+	{
+		/*
+		 * Sony IMX471 (IPU7 / ThinkPad X9, X1 Carbon Gen14).
+		 *
+		 * Analogue gain is programmed via V4L2_CID_ANALOGUE_GAIN to
+		 * register 0x0204. The kernel driver (imx471) exposes range
+		 * 0..800 and writes the code directly.
+		 *
+		 * Sony linear gain model used by several IMX sensors:
+		 *   G = 1024 / (1024 - code)
+		 * so code 0 → 1.0x and code 800 → ~4.57x.
+		 *
+		 * 10-bit optical black pedestal is typically 64 → 4096 at 16-bit.
+		 */
+		blackLevel_ = 4096;
+		gain_ = AnalogueGainLinear{ 0, 1024, -1, 1024 };
+	}
+};
+REGISTER_CAMERA_SENSOR_HELPER("imx471", CameraSensorHelperImx471)
+
 class CameraSensorHelperImx477 : public CameraSensorHelper
 {
 public:
diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp
b/src/libcamera/sensor/camera_sensor_properties.cpp
index fc9e184..7ba55dc 100644
--- a/src/libcamera/sensor/camera_sensor_properties.cpp
+++ b/src/libcamera/sensor/camera_sensor_properties.cpp
@@ -297,6 +297,23 @@ const CameraSensorProperties
*CameraSensorProperties::get(const std::string &sen
 				.hblankDelay = 2
 			},
 		} },
+		{ "imx471", {
+			/* 1/2.3-type; ~1.4 µm pixels (nm). Delays unverified. */
+			.unitCellSize = { 1400, 1400 },
+			.testPatternModes = {
+				{ controls::draft::TestPatternModeOff, 0 },
+				{ controls::draft::TestPatternModeSolidColor, 1 },
+				{ controls::draft::TestPatternModeColorBars, 2 },
+				{ controls::draft::TestPatternModeColorBarsFadeToGray, 3 },
+				{ controls::draft::TestPatternModePn9, 4 },
+			},
+			.sensorDelays = {
+				.exposureDelay = 2,
+				.gainDelay = 2,
+				.vblankDelay = 2,
+				.hblankDelay = 2
+			},
+		} },
 		{ "imx477", {
 			.unitCellSize = { 1550, 1550 },
