diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
index 71f3f26a..83a684bd 100644
--- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
+++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
@@ -734,6 +734,7 @@ void PipelineHandlerBase::stopDevice(Camera *camera)
 	data->frontendDevice()->setFrameStartEnabled(false);
 
 	data->clearIncompleteRequests();
+	data->clearImmediateControls();
 
 	/* Stop the IPA. */
 	data->ipa_->stop();
@@ -1426,6 +1427,11 @@ void CameraData::clearIncompleteRequests()
 	}
 }
 
+void CameraData::clearImmediateControls()
+{
+	immediateControls_ = {};
+}
+
 void CameraData::handleStreamBuffer(FrameBuffer *buffer, RPi::Stream *stream)
 {
 	/*
diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.h b/src/libcamera/pipeline/rpi/common/pipeline_base.h
index ca12a487..7b872555 100644
--- a/src/libcamera/pipeline/rpi/common/pipeline_base.h
+++ b/src/libcamera/pipeline/rpi/common/pipeline_base.h
@@ -89,6 +89,7 @@ public:
 	void frameStarted(uint32_t sequence);
 
 	void clearIncompleteRequests();
+	void clearImmediateControls();
 	void handleStreamBuffer(FrameBuffer *buffer, Stream *stream);
 	void handleState();
 
