From patchwork Wed Mar 5 13:52:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 22926 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 54037C3257 for ; Wed, 5 Mar 2025 13:53:10 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id DB3096882A; Wed, 5 Mar 2025 14:53:09 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="R+t6O4OY"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 1EAFA68778 for ; Wed, 5 Mar 2025 14:53:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741182788; x=1772718788; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nPBqYe39DSbUhGu8/lTzGS3nK3uxuajGUEnAh74+aSI=; b=R+t6O4OYNGVyATXVW+d6CSzXmfwed0nJnNNAnhONjlNzlzl+xPh8STvI QKObRRvcHjBF500TimhkqSig9ApUoMSNGEyAmwsS/Cf+S3mi7DCnFn0o7 2yjmbCqiRHlErgXu5bYne5/LK715l3i+HwGAFMq7zkAtIsmp1RXuPaq+W c92OUFAE3ZEbp66tswjVjhHTURgw4koNXBhKbrSkKXCSqKBmygSss8oqY Jk/XXpGNqaqyVGQ/Vd4/V2HCVhfSe+GnngPj3MptoW4DeA7SIhh8vJ53D pPp97rOlNd/GsoTxxWkLwAHFTJa/VqxozIdglERLH2AYWVoMLARhQcubT Q==; X-CSE-ConnectionGUID: wgjlZ5l9RW2k63891m2nVw== X-CSE-MsgGUID: f1wjlfgCT/eAJLXbzMOK7g== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="53134759" X-IronPort-AV: E=Sophos;i="6.14,223,1736841600"; d="scan'208";a="53134759" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Mar 2025 05:53:07 -0800 X-CSE-ConnectionGUID: j+ve62gPQPS1q4neK5ENYQ== X-CSE-MsgGUID: qq20bN+LRuqfnxO/i94l5w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,223,1736841600"; d="scan'208";a="123735769" Received: from sgruszka-mobl.ger.corp.intel.com (HELO localhost) ([10.245.112.97]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Mar 2025 05:53:04 -0800 From: Stanislaw Gruszka To: libcamera-devel@lists.libcamera.org Cc: Milan Zamazal , Laurent Pinchart , Kieran Bingham , Naushir Patuck , Sakari Ailus , Hans de Goede Subject: [PATCH v6 1/5] libcamera: v4l2_device: add frame start event helpers Date: Wed, 5 Mar 2025 14:52:52 +0100 Message-Id: <20250305135256.801351-2-stanislaw.gruszka@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250305135256.801351-1-stanislaw.gruszka@linux.intel.com> References: <20250305135256.801351-1-stanislaw.gruszka@linux.intel.com> 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" Add helper to check if frame start event are supported by subdevice. Since kernel does not have interface to query supported events use subscribe interface. Reviewed-by: Kieran Bingham # v3 Reviewed-by: Laurent Pinchart # v5 Signed-off-by: Stanislaw Gruszka --- include/libcamera/internal/v4l2_device.h | 1 + src/libcamera/v4l2_device.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/libcamera/internal/v4l2_device.h b/include/libcamera/internal/v4l2_device.h index affe52c2..a647c96a 100644 --- a/include/libcamera/internal/v4l2_device.h +++ b/include/libcamera/internal/v4l2_device.h @@ -45,6 +45,7 @@ public: const std::string &deviceNode() const { return deviceNode_; } std::string devicePath() const; + bool supportsFrameStartEvent(); int setFrameStartEnabled(bool enable); Signal frameStart; diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp index 2f65a43a..c3e9cd4a 100644 --- a/src/libcamera/v4l2_device.cpp +++ b/src/libcamera/v4l2_device.cpp @@ -449,6 +449,24 @@ std::string V4L2Device::devicePath() const return path; } +/** + * \brief Check if frame start event is supported + * \return True if frame start event is supported, false otherwise + */ + +bool V4L2Device::supportsFrameStartEvent() +{ + struct v4l2_event_subscription event{}; + event.type = V4L2_EVENT_FRAME_SYNC; + + int ret = ioctl(VIDIOC_SUBSCRIBE_EVENT, &event); + if (ret) + return false; + + ioctl(VIDIOC_UNSUBSCRIBE_EVENT, &event); + return true; +} + /** * \brief Enable or disable frame start event notification * \param[in] enable True to enable frame start events, false to disable them