From patchwork Wed Oct 21 00:13:03 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prasanth Ramesh X-Patchwork-Id: 28534 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 255BAC324C for ; Wed, 21 Oct 2026 00:13:32 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 125F368F13; Wed, 21 Oct 2026 02:13:31 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Cm9bIS3i"; dkim-atps=neutral Received: from mail-dl1-x1231.google.com (mail-dl1-x1231.google.com [IPv6:2607:f8b0:4864:20::1231]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 60B3F68E44 for ; Wed, 21 Oct 2026 02:13:29 +0200 (CEST) Received: by mail-dl1-x1231.google.com with SMTP id a92af1059eb24-15354aa70e8so486236c88.1 for ; Tue, 20 Oct 2026 17:13:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792541607; x=1793146407; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=rCaJ+8Si8AGsPMk2Mvz49Lq6yxteJr0dBY/4FgmEjPY=; b=Cm9bIS3iL/Bm3lGFmeuHfONu4YeVGSDc5NEhVmGUphsD4/r7yiDVtoclBzUXKCw5BD ABV7hfJrzW+NEAHo9BeCeakEbgn86nAZbF2Nzjz1VlpPeX4fbqcDz+SRjrPyQmZWYLs2 U/kCnrU2/EnnTWFlXyRsEkyotIwKNmzXBKSRC1xfLtqNm8ROuWNQJyUDxKtm1UewAvdc 2B95Hh5ld64ELwbCJMxqZZVRTIdBE9jJmmVincXuZB+WGOWlK1XMNqC91ffftkoRXfAf d3FQwaKVMGx5v6kHYhB60PNlYirHgF2ACtJhRlgrw5Yhv3U1HQ2yU2ZlAm/Pe8eIVft3 03yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792541607; x=1793146407; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=rCaJ+8Si8AGsPMk2Mvz49Lq6yxteJr0dBY/4FgmEjPY=; b=nLVFoYND960IFMN1DlMisHz4+w8RuN9N/Z2lnw0KSZ6hrQrBM+pu1P2jC/S8DRCfno iCrNjswYHn/Vo4+kvdH6SiHi3eSTeCTv163cXK2P84M8ulFsuRTIc6Tnk6lQDLV/8zMV wdZH4QKlR91l5jHeZOPVueQk/3ozdPmZhdG5HuBvINHUyg0XfBbyA3CM57m7OVxN6JuA RHec6s7OwNovyu1x4yxY9Nnp5Gfg6CJJhYrak+oQy0aPl4789aNUF0mh+IV56CrMiWOQ U5/aqPM+BEX3WL0tKqcBdeZZv6pAN2mlvbVqR0tIUzxs9kdS48s8xr0DS5ef9ES9S4Ii m2Gg== X-Gm-Message-State: AFq9FYKKDc+AYxsHqItt/swwj3X2MWcxDgIrG1j9Z2XhmhfBcOq7t3yW 8fGRsyKaf0+39BjPflZqO2DZ6AcF+k/MnBi4lp+wx4JtCOwHYTcOeLuemybEhuhs X-Gm-Gg: AYBFou2nKELle2kzy61IjwXDEtqlSpeaoaqt/JBRiSdzG3t7UI00uJA4KkTYeXqg59t hP5PIhX3rI3XT4Ku54ZlIaLtXgeg9Bd6zXHQPI60e5t85SRwf8FKfNtt2qE6Mgp3fLiTm7tvqjs 0t3IoR9NQLjWSwUe7vs+L3M4AfrMpWB1DLAL3Y7FH4YHB8Jj4hS1S8bh8BePxB34oLOs6cve+zd s+C6bQdCobpUq+m3gWx+3FeR3ak7oUA7PYqKkD1fAvMINpYRqdTZCzWkfQk7l0ZsD1lvgMfnb9y rz0uNcxbWHId3/nK0r8HXku6ciXIQ973ayVBL8E/w5esnrpwLVmePgd5jjuxK0Y3JTOaWLejDIu oOsygu3bukgL5xFgH6YnhvAbUo+YUhb4tEraD33mp7mUgA3WaZXFylYKOwdG8UwBIMeqmAssPic SMsDU6zN+SSq9hUQK+XDtSKzR6mzuuKkYOLH60D415eNzb2GlYASYZ4wpypGMAgm3Y9ijaNNUzi GbZHcaH/jeN1yNAOZU/L5EnZ9BfJs3CY+Ww7qxOKRYqaVNbd2yzdE0tq6doEDXvj3PHEpEYy31l yOPDdo52+P8wzoc= X-Received: by 2002:a05:7022:e802:b0:190:8f72:445e with SMTP id a92af1059eb24-190a465c92amr665120c88.11.1792541607348; Tue, 20 Oct 2026 17:13:27 -0700 (PDT) Received: from prasanth.alps.lineo.co.jp (vpn1.lineo.co.jp. [203.141.200.204]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1903a180ca2sm1622434c88.6.2026.10.20.17.13.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2026 17:13:26 -0700 (PDT) From: Prasanth R To: libcamera-devel@lists.libcamera.org Cc: barnabas.pocze@ideasonboard.com, laurent.pinchart@ideasonboard.com, kieran.bingham@ideasonboard.com, Prasanth R Subject: [PATCH v3] v4l2: v4l2_camera_proxy: Dispatch VIDIOC_PREPARE_BUF Date: Wed, 21 Oct 2026 09:13:03 +0900 Message-Id: <20261021001303.173938-1-ragaprasanth@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Commit b5225f00cde0 added VIDIOC_PREPARE_BUF to the supported ioctls, but did not add it to the switch case. Add the missing case. Also set V4L2_BUF_FLAG_PREPARED in QBUF and clear it in STREAMOFF, as videobuf2 does, so a buffer can be prepared again after STREAMOFF. Fixes: b5225f00cde0 ("v4l2: V4L2CameraProxy: Add support for PREPARE_BUF as one of the supported ioctl") Signed-off-by: Prasanth R --- Tested on a Raspberry Pi 4 with a UVC webcam - preparing a buffer again after STREAMOFF failed with EINVAL in v1 and works in v3. src/v4l2/v4l2_camera_proxy.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp index 7f8522d5e..d1f3ac7df 100644 --- a/src/v4l2/v4l2_camera_proxy.cpp +++ b/src/v4l2/v4l2_camera_proxy.cpp @@ -708,7 +708,8 @@ int V4L2CameraProxy::vidioc_qbuf(V4L2CameraFile *file, struct v4l2_buffer *arg) if (ret < 0) return ret; - buffers_[arg->index].flags |= V4L2_BUF_FLAG_QUEUED; + buffers_[arg->index].flags |= V4L2_BUF_FLAG_QUEUED | + V4L2_BUF_FLAG_PREPARED; arg->flags = buffers_[arg->index].flags; @@ -835,7 +836,8 @@ int V4L2CameraProxy::vidioc_streamoff(V4L2CameraFile *file, int *arg) int ret = vcam_->streamOff(); for (struct v4l2_buffer &buf : buffers_) - buf.flags &= ~(V4L2_BUF_FLAG_QUEUED | V4L2_BUF_FLAG_DONE); + buf.flags &= ~(V4L2_BUF_FLAG_QUEUED | V4L2_BUF_FLAG_DONE | + V4L2_BUF_FLAG_PREPARED); return ret; } @@ -997,6 +999,9 @@ int V4L2CameraProxy::ioctl(V4L2CameraFile *file, unsigned long longRequest, void case VIDIOC_QUERYBUF: ret = vidioc_querybuf(file, static_cast(arg)); break; + case VIDIOC_PREPARE_BUF: + ret = vidioc_prepare_buf(file, static_cast(arg)); + break; case VIDIOC_QBUF: ret = vidioc_qbuf(file, static_cast(arg)); break;