From 6af90deaf224711ec36cf99fcc817372b11e0295 Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Sun, 2 Nov 2025 19:37:37 +0100 Subject: [PATCH] libcamera: rkisp1: Mark VBLANK as priority MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The DelayedControls class works around a limitation of the V4L2 controls API by assigning to controls that modify the limits of other controls a 'priority' flag. 'Priority' controls are written to the device before others to make sure the limits of dependent controls are correctly updated. A typical example of a priority control is VBLANK, whose value changes the limits of the EXPOSURE control. This doesn't apply to a specific hardware platform but to all V4L2 sensors. The RkISP1 pipeline handler doesn't mark VBLANK as a priority control, an issue which might result in the exposure being clamped to an outdated frame length. Fix the rkisp1 pipeline by marking VBLANK as a priority control. Fixes: f72c76eb6e06 ("rkisp1: Honor the FrameDurationLimits control") Signed-off-by: Jacopo Mondi Reviewed-by: Laurent Pinchart Reviewed-by: Barnabás Pőcze --- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index ecd13831..d7195b6c 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -1348,7 +1348,7 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor) std::unordered_map params = { { V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } }, { V4L2_CID_EXPOSURE, { delays.exposureDelay, false } }, - { V4L2_CID_VBLANK, { delays.vblankDelay, false } }, + { V4L2_CID_VBLANK, { delays.vblankDelay, true } }, }; data->delayedCtrls_ =