diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp
index c3d2695556..5f15fbdc08 100644
--- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp
+++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp
@@ -136,7 +136,7 @@ private:
 		return static_cast<ISICameraData *>(camera->_d());
 	}
 
-	Pipe *pipeFromStream(Camera *camera, const Stream *stream);
+	Pipe *pipeFromStream(ISICameraData *data, const Stream *stream);
 
 	StreamConfiguration generateYUVConfiguration(Camera *camera,
 						     const Size &size);
@@ -865,7 +865,7 @@ int PipelineHandlerISI::configure(Camera *camera, CameraConfiguration *c)
 	 */
 	data->enabledStreams_.clear();
 	for (const auto &config : *c) {
-		Pipe *pipe = pipeFromStream(camera, config.stream());
+		Pipe *pipe = pipeFromStream(data, config.stream());
 
 		/*
 		 * Configure the ISI sink compose rectangle to downscale the
@@ -915,7 +915,7 @@ int PipelineHandlerISI::exportFrameBuffers(Camera *camera, Stream *stream,
 					   std::vector<std::unique_ptr<FrameBuffer>> *buffers)
 {
 	unsigned int count = stream->configuration().bufferCount;
-	Pipe *pipe = pipeFromStream(camera, stream);
+	Pipe *pipe = pipeFromStream(cameraData(camera), stream);
 
 	return pipe->capture->exportBuffers(count, buffers);
 }
@@ -926,7 +926,7 @@ int PipelineHandlerISI::start(Camera *camera,
 	ISICameraData *data = cameraData(camera);
 
 	for (const auto &stream : data->enabledStreams_) {
-		Pipe *pipe = pipeFromStream(camera, stream);
+		Pipe *pipe = pipeFromStream(data, stream);
 		const StreamConfiguration &config = stream->configuration();
 
 		int ret = pipe->capture->importBuffers(config.bufferCount);
@@ -946,7 +946,7 @@ void PipelineHandlerISI::stopDevice(Camera *camera)
 	ISICameraData *data = cameraData(camera);
 
 	for (const auto &stream : data->enabledStreams_) {
-		Pipe *pipe = pipeFromStream(camera, stream);
+		Pipe *pipe = pipeFromStream(data, stream);
 
 		pipe->capture->streamOff();
 		pipe->capture->releaseBuffers();
@@ -955,8 +955,10 @@ void PipelineHandlerISI::stopDevice(Camera *camera)
 
 int PipelineHandlerISI::queueRequestDevice(Camera *camera, Request *request)
 {
+	ISICameraData *data = cameraData(camera);
+
 	for (auto &[stream, buffer] : request->buffers()) {
-		Pipe *pipe = pipeFromStream(camera, stream);
+		Pipe *pipe = pipeFromStream(data, stream);
 
 		int ret = pipe->capture->queueBuffer(buffer);
 		if (ret)
@@ -1110,10 +1112,9 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)
 	return numCameras > 0;
 }
 
-PipelineHandlerISI::Pipe *PipelineHandlerISI::pipeFromStream(Camera *camera,
+PipelineHandlerISI::Pipe *PipelineHandlerISI::pipeFromStream(ISICameraData *data,
 							     const Stream *stream)
 {
-	ISICameraData *data = cameraData(camera);
 	unsigned int pipeIndex = data->pipeIndex(stream);
 
 	ASSERT(pipeIndex < pipes_.size());
