From patchwork Thu May 22 17:56:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 892358 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2077.outbound.protection.outlook.com [40.107.20.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83F681A3148; Thu, 22 May 2025 17:57:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.20.77 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747936629; cv=fail; b=Vpgu5qd1vzBRn4eD08/hLAOe/V81+TG4zGNYzYElMIXeUgk2ioIsk5C/4DIDdCXe/P+fXm9AIjz2R/EwjYiAfK3snD9FjOTkLhaym9RyTuAJBT2j5+QGNlGf2GeSCYSvMZzGUHVrlerxUZp0uAdI6Q3/btQJ4/C3jMkqUhlikcI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747936629; c=relaxed/simple; bh=dbvfHs4Y1u0Z4nbcX83zBCGc85HmV+AR+iGjoQBpZS4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=ppXh4oALThpcaLaYT3G7sElmq+aA10eJKgeim3KjesCkQzkuQ7uVOMQyemhHnpverEnxmCbhWfVRPNvCbFEPewaDp2i+AwgBlc8LkEkPoE3TLPAI6yE7qfdO8DP8Xf9zyvORBkMdar2V5BE/bnyouSOqjq4QBUGA+CY2okHVC/Y= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=C6HBtYL3; arc=fail smtp.client-ip=40.107.20.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="C6HBtYL3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VbZzQixfOaKS/399ARfEjuUfcop8QA3hgziLl+trWw6Lu/peCMoop5e6x2Cph2p+tTgWPe78pGCLFFs0/JGSAsoCzm+90/BBDW110MI0twSA1SaKGJ+zjx5zKq+sCL1QNuspkFQMHXopzL4k5Y9UA7HgJx33NYK0JGEOHzd8gxC4KqIGmd0WwGc3yK2xQXeuRlYZFK/CMF2RsHtM6wmjkhxmxvZK+FuLZnjgnUohjeEUUOuzqEZMWPjuzYaXINyuORY11ygs6TlLpzgz3m3Ey3CRNUeccc4PgCTYiMXsoelykN5AIFmY4rCh1kwwGvLhIM8DZYlnFP4Vx1UCyBCUQw== 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=+VETvqoxvgoeZOItDUdI81FqR1pnbi0KyE/AF7g8nYA=; b=RJ4CJdw13VVk/9BGJiv/HJ67neaUmsnM7Hqoq/0yTrbMhmcJUxh5/lknUfpYKyI28JppBXlZFCH60vI/je5WL+0tyg4FemHxY5GCnX2/qZWIm/hJNmgF0TRPMEQDuUYnBM5AfbSh2/CDFs4TeWpZdshRWnqBisLq6+H/yUFgbwIPGrhPglKKP41HAawfbIJlJ/DGKHLOvOfb9G2y4hB5+nu57dnuCcdBSfzGXcgJwE5E+JcQCJ7SrXdbX0s2WUJMs4xmnZ0KK6Gu9KisZlZA1yPu/YyW9AAaW6ir5kZarxIUE/KU3rkmF2hUasAyNMUdwdswBLNv/DDl6B7wXzZl+Q== 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=+VETvqoxvgoeZOItDUdI81FqR1pnbi0KyE/AF7g8nYA=; b=C6HBtYL3d5D3HZQNgAlp90/kX65TbwWWe5yLtQDajys83vO/Zq1U20ZYPsMH2WxGoSQZEZCFqmgclgTDrSiYR18wV+MUlMELq4tuF5wyhRn/wDyIjlL06JJj8p/Z/WY18mDM/AAGFZ9vcucNmyw67gyosiWGXINqyLBoaHe7zLv0nqLZccXUIU4ajIewZsLrSbcwND4C6e1V+HVWSYtaSfqC1X7pG7ZT4+aw5PXDpgXQ+3+2XH24IJt1Sdf75A+WFnYWRcx1MIzVZXj20LUkB7/SV8Z9Ec3Bz+Ia1XXKXd0md9WS3DB3zNRFzauJzVc6c3IqwVpJmRQHmBK0szWaCw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by AM9PR04MB8779.eurprd04.prod.outlook.com (2603:10a6:20b:40a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.19; Thu, 22 May 2025 17:57:06 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%2]) with mapi id 15.20.8746.030; Thu, 22 May 2025 17:57:06 +0000 From: Frank Li Date: Thu, 22 May 2025 13:56:40 -0400 Subject: [PATCH v5 02/13] media: nxp: imx8-isi: Allow num_sources to be greater than num_sink Message-Id: <20250522-8qxp_camera-v5-2-d4be869fdb7e@nxp.com> References: <20250522-8qxp_camera-v5-0-d4be869fdb7e@nxp.com> In-Reply-To: <20250522-8qxp_camera-v5-0-d4be869fdb7e@nxp.com> To: Laurent Pinchart , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Frank Li , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Robert Chiras , "Guoniu.zhou" X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1747936611; l=2343; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=dbvfHs4Y1u0Z4nbcX83zBCGc85HmV+AR+iGjoQBpZS4=; b=XYssoSUC7BG/I0OwAGTgjZnBdh8e6lnW7eHuduxdXMNhGZsqJ2Zv+/cdF1X6uHLyyjxbeTbda M+rfI0mnYYiACM3cn+SvJc+4q3uWdnF8t1rZmvqwdGf3+fr04PKZfwy X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR04CA0006.namprd04.prod.outlook.com (2603:10b6:a03:1d0::16) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|AM9PR04MB8779:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e70d656-1375-40c9-d9dc-08dd995a10a2 X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|52116014|376014|7416014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?Cy4e/l4SJnK72bpkHqJfsPxNtfoXser?= =?utf-8?q?FW+muwi+jvpYTS5ko232WOMre69koNhet1KQUK8g1HRPAG1tLeGJdbs527nHQJlnk?= =?utf-8?q?ql+M4gVXSFJeptpZmd0vywjj8wtpmAftuWN9Hzf7Aera1Wy707p2LwvQsgG8Z2KVW?= =?utf-8?q?mfcNAfO0bw3mS+rQx23/vHo0C1zSjtQYnbdeXuKvWgm4p8UjuQlVJ0mry9k5S3CMX?= =?utf-8?q?lz6yov//vCctDoNRPIeuyq6W5Ih2XVvn2ax/5lRY91ihLy5oT4JAPBc0DFqUhxhZL?= =?utf-8?q?0E4hZPrDDden7xwPIRjOaVkW+4jfYRm0zt7lTeWlNWj5yuOifmSK2IPPBReHL8/fx?= =?utf-8?q?r0VcOY7tOG70eflpZevoicTgPcRLG2oINFt7OFmemxSbFN1HV7dBqWlCTHvSbgTS3?= =?utf-8?q?qyYDuL+Azf6BCsN0eKhdIttQaGNzlqjOD+79k8XL8KtxMQcDvqQkCCdE+zXZxHYZz?= =?utf-8?q?4HEyooRd4pJldtqMB2eA236rJqGqkSUqjE/yUXaftYOm/ICD0C1kj7eBIyuC3R536?= =?utf-8?q?ub+Md/c2qcFTMCM/dsOgxeYBMr84ZQBWC9fEZUwcZoVNOlS6RZDL2tLXiuHgILhdn?= =?utf-8?q?yRjMRQvBj4ufvQ42y8exDSxmUJql8dFG2cG9Fmt6jDgwqzUE/BEP+R9gShYR6TDus?= =?utf-8?q?qfWY58vyDah7IhJtliP8WKlLRDDG6uUA6Kt7ss63baMZIjzWfsi+hFPqyFXiZmXtb?= =?utf-8?q?G5eEVaZzQERFOiCMxKKd8OnV4EMq2AGfn1NrGg6k2MrbW+ysDbxwqYUtpAuARu8+V?= =?utf-8?q?I25mJQ0f8jR5LIUYm9DAp/vYW0fo7noXX88O9flXF9eodegfpRlDBqe5FmYRrzbls?= =?utf-8?q?rwEdD7IFgCaWeEJH/4AGDcmP0HjGi0U/hopXnFKrEsrbJeU98jUgnYTy/dvSPsRQw?= =?utf-8?q?hsBqkFyIf+jfQA0D2rLMkIC3qcjWkq+xZp/qCpNwiZbAdypXAJLVNkaQE2VDfBxj1?= =?utf-8?q?GLyDHzqYcRY+Q7QKcfKM1hLqoqwVsaL2mkG/NhB4UVgl0VCYQYHwKLgZDdC4ecVXk?= =?utf-8?q?NsczKZ8df4afdqkmrYH46RNMXkU8fGz9jHKiR2ksqSwVsTCcYnnHDGVaoAeVNRX9H?= =?utf-8?q?t9mvCMZTxb3NXZ2QvtF/BuRaKei2z0CHCCbOwUpr/U6ylr9ztWiOnKzsb95qCDM4q?= =?utf-8?q?8CdechCCtCYGAMmxXacAwA/LEKU2lzgjKbIxTrs3M2HI3cmUc+Vg+8lVU+slTmFB7?= =?utf-8?q?EmYT2xiEbV45+M8Jn2uSEzuj2mKZra9Mx3n6JlaB0mOKtBoY8gfev3cdiXEjFEP/x?= =?utf-8?q?c0RjWgEKgWM+7RUYYS/O8uKR7RradkAHZkEGczD6GwZZ+geJo2rR/NX/5PR5lpj/0?= =?utf-8?q?noeWuvgU53JtR3lZZegPKJnwet1y4N0BPhjEONuVzsau7E/GsA4Yr0iK/QydYE3jd?= =?utf-8?q?49Ndo96wXeDraHzJbGpTt6NofYDZuKooI8zoKcy8antjtPhkLAy4P0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9642.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(52116014)(376014)(7416014)(921020)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?08d0pvsYpuXKMzlSFClRvNOP0FcR?= =?utf-8?q?vXVreXJ6ePm25rYGX+/bC1GaNjftQ3Ei/tZUWk+mkzHucJd4P16Zl63fllM30oX2H?= =?utf-8?q?zoJl2Zlcf36NQqHOreVM9Xdlgziep3G6pqnQdzNxgQEdeWa+ejQReMhJDKO5rL7zg?= =?utf-8?q?lNJzdtoEWsIqq7OCZAsbyAnsJxanN7CAapd5pq5Zt4FnSVL1Fk+qC1f0lnWY3inEz?= =?utf-8?q?xvuc+h7TCLeUOaokR32E5qWaTU9i5DvCHceIRybnEao+Wj885fScm7Cl/tGQhQK+a?= =?utf-8?q?gwOxBOyQDeprbb1gjnWpgXSHvTEts0azWYvpgS5yw3LdiLz7e3QUAw+lRzzvc/WvV?= =?utf-8?q?RHgulkT9V+9eCjpvOHgD8DHqi9iRmqf43NpvdskiiFoTG5GugVuSURqpQiys35oAj?= =?utf-8?q?soxN94GllTHD7xUixBIbVAiWPDogxvwIUTzjtoN3jHw4J4LbGYp6TK8IjT7Qs1CQj?= =?utf-8?q?444Qqf1MSwRm/ww88ytW78bZNsoJlS/kg5ICfwxgjMsbZ6QH49SRQLK/Hc7gW9K+B?= =?utf-8?q?1qsn7m4VTVAhPwyHhF46ico2gUGg/gWHNWbrp1/23jQKMfoiFYEhkQoN/1cFHtMc8?= =?utf-8?q?kJweBt8SWg2BG7b7vDPU/SaBue4M0reJN61CvOXfHwOVjt0ZSYP1qa9mukIJ5JORD?= =?utf-8?q?E9u+xRFurh7Kt+ORW8w4rBtbtG+Jso8qs1KVfJaf33NlYKtREq//E7mE3GsYaXS72?= =?utf-8?q?9lkWSL5hEBO+NdUhhWU8lPj2bTVB308K0boE4vmGW1Gnweu4lhhSVEbHMsVbtcVjQ?= =?utf-8?q?2gxlh3ZyaqMJ6UIHQ00z3CoSMuJiKOTOfkHaL6UM59uQ7dkDEz8bug3nWozP+5IYY?= =?utf-8?q?JGGmerw0zvU1wVshxE+MYkDTfnoKORWdTGZKjJLVhXcfdG2KiHqyFdm6XmLuFfY4J?= =?utf-8?q?CwBfCa6cDzU3yGaGhF053Ct2zE81wCP6tsDr63OG2gE6TQkjyn8HL5nIkIVK31Xil?= =?utf-8?q?IjVUSDlSKu/ioBljoAakuoGfQtBNfEyYbJvvLMEK4QPPtiWE85H9oHCjUawk4lmBg?= =?utf-8?q?mTStTLagMe8Ue7RbLpwgKt0MJmbGXceBe78CxuwWhPqHYFrsvVuFU0t0hnCQQPoSa?= =?utf-8?q?qj9URi7yLiGhtcD9XVYhoJ++fNcO5nRevoNUKaSDptJbjkgkKrWb+rFP4c+w9Y6kw?= =?utf-8?q?+udXK2THv0tuuQy8PtJY1oqg/5wrEmR08pmI2ZXOtt87VNzC5WKdKlnb9yUdR/0to?= =?utf-8?q?uVcQHdstbgoVKeXrNCNRWsMaK+VEt2cnZBsa2jPyYqD0MwimVjZYYZ9ACtDrVzM67?= =?utf-8?q?LEbNa7txA44WxxLosE0u3sE597u8uwmv7+dQ1H/UfrJUvCK1/mxal1iJ85vNZNIla?= =?utf-8?q?yokOinEAoduMNes8mimadCh/jNDMMcXF5G/wNlwM0+OE8RWGLQ0Q0ehMvxifUbJUv?= =?utf-8?q?vTl4R0gM29YxEd1btlMPfHB48lVuBvSEWTL5SfSUd05d+UR1im3d0N9U7Zp1Xd5MG?= =?utf-8?q?UzQ0VnJ8WPsbbEZHJIEMYS4QNE57ng8mYcGboZEkNzsuIr32+hRIbZMMUePYGvLZK?= =?utf-8?q?daRYWqNXlY13?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e70d656-1375-40c9-d9dc-08dd995a10a2 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2025 17:57:06.3060 (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: XIkbaUYdSjULMyAfNaE4MxTbM+FB9om01OOXrmxE+AfrZoiIIuqsja86gtNZ7aGNESF1b9gjl3r4y+6sIYgthQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8779 Allow num_sources (drvdata: num_channels) to be greater than num_sink (drvdata: num_ports + 1). ISI support stream multiplexing, such as differentiates multiple cameras from a single 2-lane MIPI input, or duplicates input stream into multiple outputs. So num_channels may be greater than num_ports at some platform. Reviewed-by: Laurent Pinchart Signed-off-by: Frank Li --- change from v4 to v5 - none change from v3 to v4 - use routing.num_routes = min(xbar->num_sinks - 1, xbar->num_sources) - replace xbar->num_sinks - 1 with routing.num_routes change from v1 to v3 - none --- drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c index 93a55c97cd173..55454445359f4 100644 --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c @@ -188,11 +188,12 @@ static int mxc_isi_crossbar_init_state(struct v4l2_subdev *sd, * Create a 1:1 mapping between pixel link inputs and outputs to * pipelines by default. */ - routes = kcalloc(xbar->num_sources, sizeof(*routes), GFP_KERNEL); + routing.num_routes = min(xbar->num_sinks - 1, xbar->num_sources); + routes = kcalloc(routing.num_routes, sizeof(*routes), GFP_KERNEL); if (!routes) return -ENOMEM; - for (i = 0; i < xbar->num_sources; ++i) { + for (i = 0; i < routing.num_routes; ++i) { struct v4l2_subdev_route *route = &routes[i]; route->sink_pad = i; @@ -200,7 +201,6 @@ static int mxc_isi_crossbar_init_state(struct v4l2_subdev *sd, route->flags = V4L2_SUBDEV_ROUTE_FL_ACTIVE; } - routing.num_routes = xbar->num_sources; routing.routes = routes; ret = __mxc_isi_crossbar_set_routing(sd, state, &routing); @@ -453,7 +453,7 @@ int mxc_isi_crossbar_init(struct mxc_isi_dev *isi) * the memory input. */ xbar->num_sinks = isi->pdata->num_ports + 1; - xbar->num_sources = isi->pdata->num_ports; + xbar->num_sources = isi->pdata->num_channels; num_pads = xbar->num_sinks + xbar->num_sources; xbar->pads = kcalloc(num_pads, sizeof(*xbar->pads), GFP_KERNEL);