diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 55d7d4442caf25c3e56880136986f48c1447c433..585bb2f0b51a2fe76cc84fa1a62cf66ef43c5723 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -39,6 +39,7 @@
 #include "libcamera/internal/converter/converter_v4l2_m2m.h"
 #include "libcamera/internal/delayed_controls.h"
 #include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/flash_control.h"
 #include "libcamera/internal/framebuffer.h"
 #include "libcamera/internal/ipa_manager.h"
 #include "libcamera/internal/media_device.h"
@@ -1294,6 +1295,8 @@ int PipelineHandlerRkISP1::updateControls(RkISP1CameraData *data)
 		activeCrop_ = scalerMaxCrop_;
 	}
 
+	FlashControl::updateFlashControls(data->sensor_->flash(), controls);
+
 	/* Add the IPA registered controls to list of camera controls. */
 	for (const auto &ipaControl : data->ipaControls_)
 		controls[ipaControl.first] = ipaControl.second;
@@ -1501,6 +1504,8 @@ void PipelineHandlerRkISP1::imageBufferReady(FrameBuffer *buffer)
 			info->metadataProcessed = true;
 	}
 
+	FlashControl::handleFlashControls(data->sensor_->flash(), request->controls(), request->metadata());
+
 	if (!useDewarper_) {
 		completeBuffer(request, buffer);
 		tryCompleteRequest(info);
