From patchwork Thu Aug 14 15:17:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Antoine Bouyer X-Patchwork-Id: 24106 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 64959BDCC1 for ; Thu, 14 Aug 2025 15:18:27 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1866A69259; Thu, 14 Aug 2025 17:18:27 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="WZ/84ZYp"; dkim-atps=neutral Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazlp170100001.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::1]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C614A69247 for ; Thu, 14 Aug 2025 17:18:25 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lE0x1edjMDJjReXcrjjelc9YH76C9UiCWrNBqjn+H1pMD3X1KsjHRxK6DiB+58DQQeZPGYj0uZokd8bVURW8bjWIG2Du5d8EVmLM9d9Dopa9dslREDyn6OGxma1eLzN1eww7R1HjHxUqO8fAk0THk6dWSE8Dm/jzG8Rqv+7Se/SyEOSPM7MuI2vyH6D4m0g5OKBroP6lWaTiAhtQBDPObjxcGQ7kT7nPs/kZrvhj4okqi45ejZjSDAuiCqJlsL/XkxPkX3aXNyyKfNQ/zAkFNe2GIPpofgVQ0w5P16dEjG+8rpS5RTnfdfOim0RomQTg+ygw4YNyG9QMj/+d/NbD7w== 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=ocUjs5DKg5c/S+cHX9B3FcvjwptepwsP6dmzZXFJl+M=; b=VTFYd5rJ0XiqHLtscSl4/dT8lgKh0pDFvrAlAIMKwgtZpk3MsBzAsBPJMp4Or8uMOTXU6W0iIcJtoJZPjtmza8d9ud4zQpaHk0BuGQSGeW1z3/LxdhbDGqLln5w+PLsFF41KHMVcQcrryiIJA7VQoC84YQnbMQblUW+/J8FlDlp9016QQ/zQgXTrY3TU5hxumxZki6unH9fWXc7DsReMOzRNOG3u9D6ZuAx24UKEVf9XaBLMyBL+hC5nbVIHQDtEVzCuzk1sdBJXC+fE1NIG/wvjDNZ9x+yKf98obUU8zXEynF+YYcLD95Jin+HY1HEDmRCu6PB6GqQ9DnfquEU1ug== 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=ocUjs5DKg5c/S+cHX9B3FcvjwptepwsP6dmzZXFJl+M=; b=WZ/84ZYpSCjB6FkqkePnUHXGrtyAH7l7AyPl6gunGVqoKLBL5hIR388o7Xp/9f8S0Lrp+ifo0MQbJZuITRvlYTwG91HW46/g4u+DNwLpTaLI6KRJl9DZttX/J2HACNQz157HR1gNR00z1kxWCoQJb0KwmMvAZRaip15hmAkD10X6zxUVUWzuXoOn5qEKyK2W4oCTqzt6UnH//hNkAl1CIVQTh3HkUsMKF+ppF8Bc1anO948RUYrgBAIu6TPwV7sLkAKrcNyTetzOPef+1eSh8woyGfzn9+aEfUVHrmZnI4zI0YLtlAg3TrOXp18DHKuMLL8iFsCJeYydBxsPpBzYTQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8) by PAXPR04MB8942.eurprd04.prod.outlook.com (2603:10a6:102:20d::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.17; Thu, 14 Aug 2025 15:18:24 +0000 Received: from GVXPR04MB9831.eurprd04.prod.outlook.com ([fe80::4634:3d9c:c4a:641a]) by GVXPR04MB9831.eurprd04.prod.outlook.com ([fe80::4634:3d9c:c4a:641a%6]) with mapi id 15.20.9031.014; Thu, 14 Aug 2025 15:18:23 +0000 From: Antoine Bouyer To: libcamera-devel@lists.libcamera.org Cc: julien.vuillaumier@nxp.com, Antoine Bouyer Subject: [PATCH] pipeline: imx8-isi: Fix crossbar's sink pad computation Date: Thu, 14 Aug 2025 17:17:35 +0200 Message-Id: <20250814151735.3973329-1-antoine.bouyer@nxp.com> X-Mailer: git-send-email 2.34.1 X-ClientProxiedBy: SJ0PR03CA0211.namprd03.prod.outlook.com (2603:10b6:a03:39f::6) To GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB9831:EE_|PAXPR04MB8942:EE_ X-MS-Office365-Filtering-Correlation-Id: 8aa8847f-8e28-49e1-9382-08dddb45cf5f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|19092799006|52116014|376014|38350700014; X-Microsoft-Antispam-Message-Info: cP3rtiQgjV9lcpPXbvm3DKZykttZu7lHKHemkAKsJoYNZsDhFjS8XdozX1wCTUQ7yJqg8iFybpbdKFvDKY7hLC1igVYLyEwFHIXrc21QK8norKhErpnNTE+BKbHeRFpi5PxXYJBDPhWmXsy62/IDa5CAMvtD505nN0I92GpVkGoGjVwKl9WLZfltaA0ji/7AJMzWFAXLC3rcNym+PQd4g41SORgtpID4BgYeaRLA5Emjr+AjsmH4yVznywelnPfupubLgKsbZraP/OyfVjimt8xERsY6VC+IPmti5SQFzhrjvs9+FnUT7pEY+kbn2e+2VoYgXqNdfRFL37ewML0fQ6YW84p45zjHIoCtyBEBKibPyQFV6mvtKwnsjR1a9ulF1HreFK3YpfwkzO1AB3XeKnEy/GFpS5r1/gI6UHqu4Ed5CR7xAmTIqppt2vzlLGGJNf2PACAky5tpvSerw2okDqTSF+biWSHxtNN3vECrEbydpB3oQ0ad8AsQ0KZ0JLQNAykAJecZb5uO+9Elngv8lcaDOWTBqpUITBA+UdAq+s2eMvBLl7fokduKEk/WaMXie6onwZPM/cXue+CYX14PjwbQOyunjSqWeTmuSLnp6CqRmJxq3UhRIBBXHNtlicvU366MdH3JGQRbiyvhxi56WV+qJB3XoNKtKPm/SX5cWrirkLktU4F2mJHRScHdoxLdomTCRCDWPuYVjKyetF7ohe91k7Em6rke+aOD2ncWU5Vb6Rj0HXMnVnkpgZOAt99XOeQzSv3M75HGCmLmRzoEy/ezUbfZJ2NhLqpGnNlKEDfue/F9BnETga3rm+B6JlfPqyvIAMSbdRLRydj+WOoKFIy963wwWHlqlN+veJpaDvhtpJpx9xSQrOD9Qkws1pYC17BKfjUzE8SGW5zsSY+GHqI9ykWRnPQHJSIezUOx1vsmijwoagFwKk0gYJHJHDYqwPAsApKKQGE6btMf+XQ4jJW6MqHNOadKb85CDHKc9Mo5FzBTHvfisMt7r6QyXW1VIF5dH5pJAmqwOB5QD9UPF6imio/+AAZ/cbbL48uolbUGYJw7c03Rli8bLY/O/zg0l78g3fwUaNe0HQZUkB+AIDUyEvY2qMx5ediJmfEn9txbCsVNGpCJpweVlqg/ycY9kcnU4YI2ZrzkoqNpZzORkxL3x5d/YZYwLEw/G0vgg6OkJaMLKZj77qndd2ln86+AaAmfgWf2bTypPg3qH11g2qEiBUw5dbQWVhG/HDPilHOlG+r47tfBycW6FNCEIIr5rDg5OcdjGi0EE5Qsf3PKhJjrj1qHxk9XNdQhxsnx1x/YxddyqQks6K5IOj1WxuwAiUyDAeWqfutscr6KSDIPVVA6fODd2X3oNxwhJShrn+GV1VMekOa6HCnPfy+kNXnAwPYgOIR4kAzjm6R8YWT+ASYK/DUVMPGk2FfkhhvlIOVTs5CC7Dwb4v4OflTDN8y7jyGGLZsUVHsCW4/H10fcR8dLsPwydkVQn7QMGXQWhg0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:GVXPR04MB9831.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(19092799006)(52116014)(376014)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jFh1FDYlJxTbjCTXqAMHVkOAwaRDKpVkeP8PZy/RY6/9K4qASNweAOT60bDSa9sVUg487fXu27VhBqgdv2u5o+SrkOJwr0J1kgtjKjlKxI6NlTi/aJgguM0I8L2jo95SP27mxwg/h1vQxT9DQ9Ns6AMAbgc9pDlbOU26nH/DDhSOSgDT8Pq4dra2F6mR/k92MffYX5IvJ9H+Dtk9VdQoVwyfd7jFQUqUhdwi/JuhNvhS4pDN80nrHO6r5xr8MDKQqXp+9lDn/aZT0Mmn+2CWBi8rMrh5u7/mSSAFZib1n+QxTOl3xmie8E9wc2zPJjblCrNjlYOFNc74ZbIgo+rnfN+O4kPcsTpUczI6Fj7itSVdCV4dC91lsPdDpsuWbtHM2TCVwDP+cQ/n8R0K5vkYOVvv+DNVnsKtQ3z0CMvmkla5/nFrS9qEfPPQN8AJ7Tmx0/GFq174qepptENQt4YK+OVHLHZCXR/e7IVPRmcr3qS1Q7FxUYuGl6epQO4DlJ/8VhBXXT4Yt9dV0/d8jr38CacBJxNsVx/nblL6ky5VMHxP62HyOusLOOotaop0TbF0lImrgZ2IpxzBusebsllBe615tnY4nsNrA/EjyduWiVQ4diX35b+5p9PnmA+DsCbxs68NvOPHa8wu0uqu0LNLgt/C4558yl7IWFAd+UMWmk0Yh0RuvlCk90AkXbNZdc4wLANxb5zFp7cPTEO5KJJguKnLY4Z/NWNqHkv2TQuN5oBgVRqZo4jdnrZSDz612+plysWQYVx1WB7lvF6B7O75ysi8VIcpkBoM3habInPc9DaC6+3gnO41hFe/ObZONgj2VOMM1Yjan77xlEPripD1gw1aqiJwlKYYLR2JgjXJtSp7j9FHZGHLCST3+mQDLwIg2UFwaqTDktrZwCIU8UNFAQ2luRAaWmZI+96YKDZN9chFWrszTix37o3p0Q6C3ZuHvyMEytA1ERunUHTy6+6WVKkJwetR4oM+9pwJfYScjS/LJr6kf+paQwaK5LIo3eN+n+2b5ToK7i7PrFCXGjD0ElpyqUAXSC+NdH0cgDCv9SkTHQ6gFusatvQU0kIqf8ZdMcj1Mlg9gDOTEW4CadcxlCV1U0mbFINyWyFUxyH7zo6h08e9s/GfG2OnQlCBUvX0U9QSRPi8/VNHQ1Gd+SBynhMDo0Iq8a+Jlei8a6XjXmbtii6Kwkc53DHpWhfdBDyCqA2GhlCUVQNpt+6T9k/CIxPLZuims20VHjypHX82HuZwYjXaDTjYw36gv/ilzj3D1fHD3c9d/1AfhzPlSrmKlBQKWRffGVqgbFgEsQEhtxMSNrpGi9X36x2f/74HSXGz701K4BQpKuVXTPQMBsmnA0i+dON+a7PRN8i3D2eT+aZYjiTbFRwUpYrsRtvh2EYib3XGaQqm++XsZIXA1cIGhZY95jKWHveF2rrtlAQeTQkKyDt5OCWRjGB++X0vDfEg1ckZaVIM/ORDMiLFjjr0o0HHGDu/bexrmTu0pr/RwgMWx7wu8RH12pNA8wV7MXmRYmG2uU0Z4Wq67W3eiA5kIgBYppXqHx8mIoU9CJ+7YJHHCr8jm7QmnaCLL2DuuWw/JYo+/eqYGLpFoLD5wV+IOA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8aa8847f-8e28-49e1-9382-08dddb45cf5f X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB9831.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2025 15:18:23.8142 (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: WVdBbMjNKHCeDvMwYDumC8SMZyPYbp1v6ZQxXofjthOACa3DHlgLn3ElbC/SeEbrJGCALPpwwi0sTnHTdh+cmQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8942 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" In current implementation, the sink pad counter of the crossbar is not incremented if the pad is not connected to any subdevice. This would lead to incorrect routing and format configuration if CSI is not connected to first sink pad. To avoid such issue, every sink pads must be taken into account. Then if CSI and sensor are present, current counter is used for routing at match(), and stored in camera data to be reused during configure(). Signed-off-by: Antoine Bouyer Tested-by: Pavel Löbl --- src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp index 72e055e400c6..de09431cb9b9 100644 --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp @@ -1039,7 +1039,7 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator) for (MediaPad *pad : crossbar_->entity()->pads()) { unsigned int sink = numSinks; - if (!(pad->flags() & MEDIA_PAD_FL_SINK) || pad->links().empty()) + if (!(pad->flags() & MEDIA_PAD_FL_SINK)) continue; /* @@ -1048,6 +1048,9 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator) */ numSinks++; + if (pad->links().empty()) + continue; + MediaEntity *csi = pad->links()[0]->source()->entity(); if (csi->pads().size() != 2) { LOG(ISI, Debug) << "Skip unsupported CSI-2 receiver " @@ -1082,6 +1085,7 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator) LOG(ISI, Debug) << "cam" << numCameras << " streams " << data->streams_.size() + << " sink " << data->xbarSink_ << " offset " << data->xbarSourceOffset_; ret = data->init();