From patchwork Fri Oct 24 15:10:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Vuillaumier X-Patchwork-Id: 24809 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 B0B87BE080 for ; Fri, 24 Oct 2025 15:11:54 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 7A3AC6099A; Fri, 24 Oct 2025 17:11:54 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="RcZSC1MV"; dkim-atps=neutral Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::3]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 13DE26097E for ; Fri, 24 Oct 2025 17:11:53 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=o368siMqi7r/7URWbuBnJqF3hQM4gIZlb/QrPkyDD7+wpFIAcCsxiNLAvxdkPiApbqF8acTildNyc3z+zvtxcFnhYAX08ZKoxGhMD59QFfWqcS+fF84hvKCdKdFWnV2f3LdkMqbSaFcrbZr2JnTCRV6DSzk1MAoZ7yQehd0Wu9uKGVih0MAyemKHTyNJUrNvLee3sCYMrWhMxg8rDFA05Tfuf/e5tOaA9fLjXlc6WGVWKhzL3u8mHvvkKZzCcc+9vQdatLNSbKKjsg/++qO9yehw/EQNrrsKi6OTdAsGx8wRu2T0a6buATQBJyk5dhSXI9J2tWO68XF3DzPREaDo4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mczsg+3/T/YNuRuNP3YmjbENhbzZovqQFt8XLjBqGOc=; b=dPV1nCMqqgcwcqq+0J4D2X3oIXZT0nYw4qq6rBV3OYZXS/OQ2BoF4lyvH1ji0PY22ZgsKt4w+W8xbARkaOMMfhB/lnGsA2hSzWOhFNaBUuHxZjz+lljO+hR5mwjwu6sFmj6RAwokkIXGGaEJPDqVqEx5vYTJhZerxw/ENZkmMyznoQOzvdCzOQ5YHbZ62BOeWP3yCJWXr2/EPEV2Dus9oyjZt/2qQQiHBZWmIlr1IEQlNokvNpEfq3QKVPB1djNOc+Gbubea5sRdtZv+qReU7Wc5aFK40KgRWO6pPv8aGsfXv9IUVN77XpgrGlfQYnxw5BW4QT1shznowpg2bKD//g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mczsg+3/T/YNuRuNP3YmjbENhbzZovqQFt8XLjBqGOc=; b=RcZSC1MV8fUP47IGeHTvJ7XFdrpLHLAkBSKW5JCoHcR1PPRee2rRcAcqRgjnkNyVA5hQbYRcN9RAXUC1FNRDTfmyJhOCXKqW4gHigQhWZl7YQcPHQLzM+bfHanD3nFlTi+MHyUNGDnMs1iFlov7Wn4PkV1IDsBP77h8tZGE+BNjGhK4NzvJfYFm4cNRujchMfdxKYeQcUBmpjY9rfuz830FBY9GrRwTl9yiX/C7syzz4Rz+1lpMPaVzqPz7Fg53oO09ZMsNgVRdOO5dwgFp9RCGJFRLMohz7spxbGyh5hm3TIsNYIZXzL2W6V15/RKi6l6LjDduFlLCg6/C5G4x1Zw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8147.eurprd04.prod.outlook.com (2603:10a6:20b:3e0::22) by VI0PR04MB11784.eurprd04.prod.outlook.com (2603:10a6:800:2ea::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 15:11:51 +0000 Received: from AM9PR04MB8147.eurprd04.prod.outlook.com ([fe80::b387:72c6:e33c:8656]) by AM9PR04MB8147.eurprd04.prod.outlook.com ([fe80::b387:72c6:e33c:8656%7]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 15:11:51 +0000 From: Julien Vuillaumier To: libcamera-devel@lists.libcamera.org Cc: Julien Vuillaumier Subject: [RFC PATCH v1 1/2] libcamera: camera_sensor: Enable routes to query stream formats Date: Fri, 24 Oct 2025 17:10:57 +0200 Message-Id: <20251024151058.1523308-2-julien.vuillaumier@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251024151058.1523308-1-julien.vuillaumier@nxp.com> References: <20251024151058.1523308-1-julien.vuillaumier@nxp.com> X-ClientProxiedBy: AM8P189CA0019.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::24) To AM9PR04MB8147.eurprd04.prod.outlook.com (2603:10a6:20b:3e0::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8147:EE_|VI0PR04MB11784:EE_ X-MS-Office365-Filtering-Correlation-Id: 1cb577a2-d184-49f7-e080-08de130fa8ce X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|19092799006|52116014|376014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: 6gwDfILNBmMDgifFHD+6k8P5hvWNH6tHVA2vTtxM29g7Hg+6ebCVgCDQyKfgURrnxBjBpXGVJxeLxYhcLDPm63mIBQueXZsiZPBx+Cv8jjMYkeRPkvjNxOkmMYJcU86IUO/4wZF4rN3WOVphbd4piRevVaKl+YysuR+eZblM+m4yZGLB0DsoBAE+73nN+pUfOVfCZEIdiFUnaodCeGLYBqOZi8HVZTL7VTyvlSZdznnnl/bIjJpFkCDYBhEhfECIDgu8nbxoUvsDm9yXdR1ojjygTllv5zRCXbk0Ywni8eczeIHt2TMMGvjlpFluXJU39y503Ew3cwXYDCDCF8ASeLe3jAaOsrX+eQuYqcBAEchkQIr/DjPapVB12NhsiKK3dIGUTEwYEYakN/1SjJmsh94vuECsP2wKYXEYWyUMnhhrTILhAGkft3n54gXaYQiMqSaai0qjr6UxYRdodsP5xsrh8ZpHsnnN+7kohq32rF4iIsf88+pExvrvQF7cl0kkjHbjaXnt+cefpxReCSeDAHjIjhClMcERW4hZSXF5JDjaOJgVMNxdGm5hiz302/B+jpcUeqQhTkpBlOYzXxIJ/F3iATOnegmeRYQDdA+bQ99xpYGGQ/ha2yJmShyfvn85L5XD+vw0nLzaPNLtdpG0bH8NDfw8+OnJcdMkIAcdG0MJM/nITG5/+/M29ltJIr2SoYqocGAsDaJMg/rjQ2SGbylwBzS/oeadHleAWLMyzpPOY6cL41nHtKBo4Lsd0iw0t2+Ykq1SvCXK9KBjj5Q9MCbZQUxIJxi9GejrlJTbzSimdq73FhFbLer+VwcD77cKVdFjk2t7uBz4dY/EMoIscuEvyiYasbw6vlI+mLFznyJGFM4f+nTiCu9hqSoap+O0ojvKN7acGxTE34xvB3P4Xizoz59qz7uSARIsbfjH7rXeBosPuzjiWRMMcl8kEOZA7ouMagM8SccIPkCDtMS8iIDvYvotodyovTdI8SHHOi2Wd9T6ByA2YPhJ/3IUgEvwYlyRRMX/2SVPaWImZ/w62EN1tH0l191rgJIdwqAz9ZwiZQtDgi7EFS1jkOTIbUYn0lbYun8AbMo6Cp5b19DzJfJ4FbzmBNnq7mLuhtuz9ESrBMnfd4fo1su93+rjLTF/1AFB3V3I9DY2dm/OCtarGB5Y8LktXPa174+T7I6C4VKdBOVjnBhKio7qoSjZJpZ4kbK4mTrdhnj5rN6vs+YZFYf6xd3z349adDOvb4tfk+XVoQIrJRMJwfg7TcLd03yEzvOie2RX96pQ0W3F5/wIVHtmMmAbylXR7rnEVgYtdfjD2aP9GoSoVZD7BQzlAEloDN7/U559p3PKpX2WslYzIPiLD/RvQ0o2T6KxEqpkUHg4G3wWwXuUp7j+q1EO8kU3SNk3fld6Gk0JKVEWXB/Xitzfva5fYt8CFZW5iGHdWgez1jCMjafgeQqHYtWwFtUNkg2Ia4rl4GxbCjzGI7JQ1AfXLGk0IXkHpF+MR3ATYCsZC923PdBIucaARcnC55kS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(19092799006)(52116014)(376014)(366016)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: bwg2rOIulO8Ptrif4FfHhrpD9qKVcyq5oT7+X4yuzDFt9oVksfxLvrwKuXGSbnyacTPT1TBCujgSgJWOiJHflu+sJiCXORuqmoPaMdvb6KvUBm85+O6b/RhLjj+4+B63NxiP3MCyIauHYqUvJCcqAbycKYujyl+7Xag4/lbNPurgTor6Hb00MIXKlkR1gNFzOuFbjAJtQkMQSZRF1per+ZTMy7Q6wYrYL2qoc0UUUbjgBzGgBz5B3BvshxsDmnWFqK5kmWLUXuHp5DvQPtdjGrmmFjOUayx7kD04nV59yjN/SObupGzKfcNNhGu4eq7+br5hhrN8jKhn9ThncmHrIlH4VAJvL0i7Tv1flIk2xIycvd9cPKfpnF0xrXIwmILX0XI4esSnn/9WI/mDlDNzuBIMHsIbbqeBKzampR8afngLQJgIF8VQbumpK+zik85Jxpa30tZK57evwIlY0eTKoK8VVr/q+3ba6YlYFtkL4pzsuOzdvufTlR3FuTAXECK6N5jxiSHQGYuYUKDoNA0/uxdCzmH8RoxexebRIvZkYkGoChNqV2vWbT1UQ5RH06VVZrp5R46zJqC3a12NgOLT/aaQPkSKwURkW2/G9DlUl3u91QjO/crfxrk0itmCF4XE2hyFK6P2I1sGJvUn3NCaVYUjHE51HX+84alsDnEH9geMLklb+5W48DTEsF+3tV6bXvn7J3LEmJPE2ynJ1x2mH2pVWnCfKr9p7C3F4Mjre6m4K+f2AeWR9cSGNo93gpR6LeaQQwL2Yvv0nEyXhS7x14hDBXTlfscYVriwafdGSWFT4l3Cjyr43YLTp3X1TyrUoYN1dm7K2Ai4JxV+/GZVacE7AJwInwllsSUiUVuFDqpcHoPJ1+v63D8C//aajHBAFbDaYV/SBW/F9OprBqAT0G0PYYupupUY7h7dnu5GTTEzoVKSYqrEhOzDRJfsBlIyFT75H3+3qzdwtIL+FL1xKvT+wP4D7Wi+iQJfLdgLiHnRVquAmP9E5vxssf+PrEjnDgBlpBeOZ7S/FVQ5QlacGfqm3d6LQPeYaWt+gm5OG/uiAlIvohoib0SOg/EXm5eurwafJyURA9885/fm4+kxVFIpwkXSBYRITcn/tSlLPTcMzwx4GHS6FIi9xUQ/NQXVFnGE6Ra8uDpQuXZ/6svgj9O0Oz3QQl0DeVRaz+ab0DI7tfzuS+1RcvvKIb6Xj1D45eYNPlSZbljedIq3NXO2U9UzKAc5S6LxjQrCsdNqC200mmABXWS8F8jyomxrjhJBI8r15yV7B1mRBwVaW/xtdTnCq7uutqPk7RLtRYrce3NLhzmHo7CCV/l0Q/S1uKTtkWOR1bSHvgIjrHwEyVU8qyNY7rCFCgE+V1VQjtgOsQ73ZrDvFou35B8PwAgPvkmrhXArtSzMIbxTcL/xV5cdqiXZvHZG6BH38cHJDCvyYs+ypFMAdDfM7Ni7W7bZU7Gacx6VEmgJR6JEz+/lpEu/epkIWW9IGzkcOWI5g0s1g92nK6m6SKOt0jbLMDohFWdIBlFtU2rBNQgsyNCX+wv7QcsCK9fW1epF1GynDh+iIf02l40ascFs+56wIWmKRXXpgCFq3O0oTrccpnhyxU1fow== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1cb577a2-d184-49f7-e080-08de130fa8ce X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8147.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 15:11:51.2935 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vsMI02ZrGELZsVXSlg0Qd9Xolz9zwUey0KQDXvjgsPdzNQprh1TrAT75yVLG2ulZlNqCsvlOrb6n/qf8Q/yBYN5zm1EoHhabueu9wjENza0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB11784 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" When a V4L2 device supports streams, the route activating a stream needs to be active so that this stream format can be queried. For a raw camera sensor, an internal route may be inactive by default when it is mutable. Implementation of CameraSensorRaw::init() probes at startup time the format of the pads/streams attached to the internal routes of a camera subdevice, in order to identify the streams it exposes and their type. To make sure the format of the streams can be retrieved, activate the internal routes of the subdevice before querying, and restore the initial route states when finished. Signed-off-by: Julien Vuillaumier --- src/libcamera/sensor/camera_sensor_raw.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/libcamera/sensor/camera_sensor_raw.cpp b/src/libcamera/sensor/camera_sensor_raw.cpp index 8ea44236..ad4a94ad 100644 --- a/src/libcamera/sensor/camera_sensor_raw.cpp +++ b/src/libcamera/sensor/camera_sensor_raw.cpp @@ -261,6 +261,21 @@ std::optional CameraSensorRaw::init() if (ret) return { ret }; + /* Activate all routes to query pads formats */ + V4L2Subdevice::Routing routingActive = routing; + for (V4L2Subdevice::Route &route : routingActive) { + if (route.source.pad != sourcePad) { + LOG(CameraSensor, Error) << "Invalid route " << route; + return { -EINVAL }; + } + route.flags = V4L2_SUBDEV_ROUTE_FL_ACTIVE; + } + ret = subdev_->setRouting(&routingActive); + if (ret) { + LOG(CameraSensor, Error) << "Could not set routes to active"; + return { -EINVAL }; + } + bool imageStreamFound = false; for (const V4L2Subdevice::Route &route : routing) { @@ -348,6 +363,13 @@ std::optional CameraSensorRaw::init() << "Found embedded data stream " << streams_.edata->sink << " -> " << streams_.edata->source; + /* Restore the routes to their initial state */ + ret = subdev_->setRouting(&routing); + if (ret) { + LOG(CameraSensor, Error) << "Could not restore routes state"; + return { -EINVAL }; + } + /* * 2. Enumerate and cache the media bus codes, sizes and colour filter * array order for the image stream.