diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 8a1918d5e4c5..fc5590aaf5a0 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -777,7 +777,12 @@ int PipelineHandlerIPU3::registerCameras()
 		data->properties_ = cio2->sensor()->properties();
 
 		/* Initialze the camera controls. */
-		data->controlInfo_ = IPU3Controls;
+		ControlInfoMap::Map controlsMap;
+		for (const auto &it : IPU3Controls)
+			controlsMap[it.first] = it.second;
+		for (const auto &it : cio2->sensor()->controls())
+			controlsMap[it.first] = it.second;
+		data->controlInfo_ = std::move(controlsMap);
 
 		/**
 		 * \todo Dynamically assign ImgU and output devices to each
