From nobody Mon Oct 6 08:30:18 2025 Received: from MA0PR01CU012.outbound.protection.outlook.com (mail-southindiaazon11021104.outbound.protection.outlook.com [40.107.57.104]) (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 8293E28C5CC; Wed, 23 Jul 2025 10:26:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.57.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753266377; cv=fail; b=XhJsh5aqMQAjErDF74hqXssfx65GrE8oHQmS21abMxHbDzKGvMH5PHce23YAfTxOnesh6IB8g7KqHiy1DJb1fdx9gp5KAYFzqiIwG1lIwtC5yHu6aTR0iPjDffrPPXNNKTeLjfH36U++mwdR0w6CJfQAo6gipyUNtTX94pDBXh8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753266377; c=relaxed/simple; bh=sqXuZYEdRo7wqk4sX9Px2lh47eyWUaV8TD061bm9RFU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ovRW6UEjd+oXc5TE04+gLIKerDVNi0HVzjZYQYnqN2cOOHW0S/ZU5sAkD9UI4mRNkEycMEuht6TRu2Ht/97GIdOx4hNuqcfcd5Oca5L59BGlqQxKXVDftdCfD3/FVFiQqlkg/14EdeZa7lDaDPpmXMKwPCJddE+1C8HW/rAzntw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=siliconsignals.io; spf=fail smtp.mailfrom=siliconsignals.io; arc=fail smtp.client-ip=40.107.57.104 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=siliconsignals.io Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=siliconsignals.io ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=g9b+ctNZolL25YbUzX4o2s80xa+9tUAKNvm43C1LWRe9sy3XDzsoe2kj0EdHWOXbL+EeiBncDDmDzgD6wXpLFuGQ0TDkdHJKeB4+pwX+LwvJj4pC7ZG/SXIpz0hvAh5oJqwPjXkoedE3HCQEKdawtg1QJi2jzl/jhlo6h7zaq1HZ5U52LW0PK8gm2y6vYHStja3iYmqeOyxpUFccvTlb5EIBJGNiBWecYy/UX3si+ioqx5MKSc/SOZmfBJgr4owci2T5sgbK8HVCkQPCizPX4HSA1+wWDGVYV+1NeOsb5aowNKac1523hmyDVMQ++pytHkgOvYH8gyiaHKPtCFP+FA== 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=T5V/EML5UZLL+xpw9oeG6mPZiRwfrSv3Gmx4m/mfAo0=; b=PaJSmG/ajtW9kK8mhphSq2nNpUdrKGVugsL3ByGC/uhtsZ1wj6uksI/49bGDy1RRZk8PHYonqFxp4X3cJXP9usl360wKRr0RhMl0VVkzjD820tvHNMg2HqXrh8nxRyqeQtNlsvFMe/qjxFlGR34XIr5GzgAMICozDtU834NBhwIUjMrSOoGihXNJXWHJt5AXO44mLIMh+p5rDcNey5vtCgJR4YGzSrMbC4ucg+Fag1r7FVbLdSMYFJaUIEl9nYOE6evKgL5O4kIDXwLci8yy2nfO6ZcKp+lDabGG/skwb68qYQVs4YCiWy/E7sSJPZ9uwbRgRXNpQWUS5zIsBzdzWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siliconsignals.io; dmarc=pass action=none header.from=siliconsignals.io; dkim=pass header.d=siliconsignals.io; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siliconsignals.io; Received: from PN3P287MB1829.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:199::7) by MA5P287MB4176.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:162::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.21; Wed, 23 Jul 2025 10:26:07 +0000 Received: from PN3P287MB1829.INDP287.PROD.OUTLOOK.COM ([fe80::58ec:81a0:9454:689f]) by PN3P287MB1829.INDP287.PROD.OUTLOOK.COM ([fe80::58ec:81a0:9454:689f%5]) with mapi id 15.20.8964.019; Wed, 23 Jul 2025 10:26:07 +0000 From: Tarang Raval To: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hverkuil@xs4all.nl Cc: Tarang Raval , Mauro Carvalho Chehab , Ricardo Ribalda , Yunke Cao , Hans de Goede , James Cowgill , Tomi Valkeinen , Lad Prabhakar , Tommaso Merciai , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/4] media: mc: Add devm_media_entity_pads_init() helper Date: Wed, 23 Jul 2025 15:55:05 +0530 Message-Id: <20250723102515.64585-2-tarang.raval@siliconsignals.io> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250723102515.64585-1-tarang.raval@siliconsignals.io> References: <20250723102515.64585-1-tarang.raval@siliconsignals.io> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BM1PR01CA0152.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:68::22) To PN3P287MB1829.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:199::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PN3P287MB1829:EE_|MA5P287MB4176:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f22e124-91b6-42b8-e834-08ddc9d355ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|52116014|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?AGGWeuG3sYaI06cn+NY4JYFkpMIhZxRdK4Cw9Np6MemTZW2gleL1BdG0LIQf?= =?us-ascii?Q?3W3e5DgDdJFC6cZiO/Gfa5OoZdiVHQ1pONle9FpHvOpF38gqkwaPburceTpm?= =?us-ascii?Q?P3NQfhbm2u9OlzjkaO5AghdDhwpP0k5tkQgUxmagro1x8EeZ+RfSuprouqOX?= =?us-ascii?Q?anMLl9Su2xFi/K4U4YUczZ2b/nHQ0inuMvfv2C22aA3/lZLw3AYOAns5v4K2?= =?us-ascii?Q?jKOYadY0HTSzn/v1Mf+Hkhx3If1UuHbB1nP6h4h6iGxZ9SGpzoKeXkAJzmPP?= =?us-ascii?Q?HX+yBQgBZh7mNMSXCQnsZfQgZZXzm6gIm0SHs8oWMD2v3k+eLD2aD8VkzeIj?= =?us-ascii?Q?xHUMwY2QbexWfkCO9Ah6EwujMcoti5GjHsYzdYKgF1+g5zXEvvv/CY4EyxGs?= =?us-ascii?Q?EsRxogVIbCpYxA2AfiBAYMOxQPFi34B4//nRzOifeG8XRB9no3vpUpFEk5IY?= =?us-ascii?Q?hkg9N2A+ijlc6445RxzTrdAw0RvKuW57LqFblrFFrNuuATfViOWk562GyJJz?= =?us-ascii?Q?xbVIaeVVGCj5oU2QHMRDrRHG7J3v1oEU+QOqVhc+qzSQk0hKZyqpa8HdwuJ7?= =?us-ascii?Q?O0iylQPjqBaS9k3h1D2VtrWV3wgeK0voQ2swzLbAIMoHZrUvIMS//68dMGrf?= =?us-ascii?Q?aEfaqapypTjOKteYK4MyeyWIQL/RSOnpJWNs9UHxGmUCRUREBVqrwqp+cjMI?= =?us-ascii?Q?JKaZA7PnFCNZ0ZC5OidFFuDYIFy7G6gUpIGqCTocGAtzWM11YW206CcGZukM?= =?us-ascii?Q?T9hDQPbHaZdkBXPtYMYLfJdujHdeuuVy9heB1xobu8obr8qDp033wpYJUZ7v?= =?us-ascii?Q?Hvs3Kw781885otXCdnmid82b7X3ldLYG/rMRwjDzX11GVpjZkik5lcthXCBF?= =?us-ascii?Q?fbR4PBb8f+9XnxIiHqxmB3rsZmjURnGgOeX1pX8LL4WRWABtEZvF5QDildwt?= =?us-ascii?Q?51+ejm8711Ynl5wAoqzN1OB/RFhxGZ9XuamRQnlKy+9kgfeMbMRiHAAxxqsm?= =?us-ascii?Q?8FVGDNNeRP9gCGT4Rp7TDAIgVNC33cbv546rioJ+o6/Er9bvQEE7s8oGPp1l?= =?us-ascii?Q?q5+TaQaR7JfO8+lIjwn6OtsIRRQCXu9TssK1aRWawkahVkIwu21/R28r//Ma?= =?us-ascii?Q?OwnOXPg51+t4vQGrnNDlJKctzfkhm/Thtk2zrft9CDjUcEWwEkAwAmcaUqne?= =?us-ascii?Q?9QHmMlbUI2soSYLgvwtklKfZ1KQJWu/QAiYQwo0hvPYb3ToNsxICkWU6+lwV?= =?us-ascii?Q?7FSCp8pkYdhuvqgHwIROvg8e/wlQQOD8mpZYkjVnDxl2sjI6Nt0XghrhCKsJ?= =?us-ascii?Q?t9xguUfcY7miF0aAeCNDhj2hpGu4Iffs6HwiSlwtNN+ym0riI7yLLYZbGUo/?= =?us-ascii?Q?mPAK6H2C0UGoQjAiHjQBqVNNh/XE//e0PznDx3iMooRXu6un41WiLA5pW7vl?= =?us-ascii?Q?06/n4hfy4pKFnb5JWIh80b4rSUEdkgNCFwBTT/dAit3iaAejXCLt3Q=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PN3P287MB1829.INDP287.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(52116014)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?q5+BypQkSdnRQvoo20Tg83nbA6XM5L71AIppje6HNWKhX9HNfgAtvtqdi2kJ?= =?us-ascii?Q?R4LePiPVGY4KDEsH1/0PoVv0MUkLim+r7tCrxfF7u1q1xP1CMA3SwQLbMhpp?= =?us-ascii?Q?XEWplveDxmZJ75O77zwS6H6HluhKSfBfhlInnD0ZjUMzb83c4XFuWceDh+WN?= =?us-ascii?Q?g25dh/4P3+p8VpZgb8PJnKxalmvNagOVZlIuATXrjPV/GmwmOM1y8UAtP8rm?= =?us-ascii?Q?0qmrXaZQ60CYBFK6PSmd2mzsBLJ24U+cxCi1Rk+Hdyd2g96Y8qE9NzYOSwWM?= =?us-ascii?Q?foDCAybfhFcRq3/yActqPY+/QElCq2uWqCmw2wcUrAhVXEQyuuAUQRUl68La?= =?us-ascii?Q?BVTm6uWyn+t2oCCMWM10H5tqhn6moexKTEX7k5qL+GgRJpVRAupmcYfofrqk?= =?us-ascii?Q?rMkMBX9F7wm7ikG8UY4nxGctjiaPWKPgxji+iOcEi10knlBD4HyebfjteVCN?= =?us-ascii?Q?AM7CgANanX8Qs5nPimlQP7eSAQTcrdQzZ88R49m2KbxmFMaNDEIyHmEDRIKH?= =?us-ascii?Q?yqZgTguKpeuzmOchf5Ofbcof2t7odxoD/MnLsvdFXK4D4vuwD9CQhim4juFY?= =?us-ascii?Q?lIOnRKwxABOvYiPwtx9JbJXnSJNCzcY8SM+ZGmWqT4wZgii7FoJmU/o3t3J5?= =?us-ascii?Q?BXc1hCV8OE9mjWLgQzOtabwi0bF2fw1eSlB6CIs+8uDLIC7ijG9x10G/xSt/?= =?us-ascii?Q?I8uDuA9exUgWydnjPFSWnP6JmTi8pEM1w6iLPexnIzH8GWWE9GR/0OiBSSWp?= =?us-ascii?Q?bnWU5X+RjneN7enNIXhpUWOLdb0PG8XruFnZzgIeqwKDI5oewsNA2UNQBtYT?= =?us-ascii?Q?XgB7Ffkr7/kcrmzs0tYqBr+p9caRe4qygA/O17pte5f5XdReZGue3rBrNcjB?= =?us-ascii?Q?WkRzOI/i1Qdjwp4RmhDLofhWV6AJvLcWMCOzhfRI6pP7spruHhZqPTqAebG2?= =?us-ascii?Q?DhfgZVet9pXtCA1aiKk/CDezcc1r6IykYeaRNhCU9dvkVSA/tnAr5LyE2X/0?= =?us-ascii?Q?2bVNQ4epCZn/7oQnUNrSu8D/XGkvGEMWNMZstwlhVr5dk33LBoyDZoVNTM9h?= =?us-ascii?Q?x1yBpNz1/g48svFa/5d2NtuRMISrI+DaMbyAO9drVi27pm8a+d5/QIT5//M2?= =?us-ascii?Q?Bqk5SNfwYbEg+bpbxtJgOylDNCHeb9RQ887sf0gjcjuGOY/PaziGCkk6D32g?= =?us-ascii?Q?X01RWgrJ8a/AXevVtyoYxm8yj6tQuqptwJ5tbr9eGjxLqQ8jdBRIr5IAZa4D?= =?us-ascii?Q?PWBIOFGa0AXbSMOMh6s4/ljS7AF5MneRqnmRZBA5mwu6k3WqgsHQTXttWKEZ?= =?us-ascii?Q?xdVrtqhgMjeggR01YbwUK/hLnh7kjOGjID21S0Dc+Ml6jTM/D2PQv55b6fbp?= =?us-ascii?Q?4UyQtWM2QnXguhO9XFfkETra6a1Syp3KjHiZ2aSXLGtHPageJ0Ca5HQDMM/u?= =?us-ascii?Q?MBby1LJ0kNBQmZQ3roPWAC1022etwGe5uuT1SIaGSVA1Xti8/GsVoWI7Gl6C?= =?us-ascii?Q?1zEe44ejPlbbm/MeXKdJ68jDOoLSgclraVldsQuopH7uvpYmcqNiam09+bT2?= =?us-ascii?Q?Bcca0yllgPLO+lSxjU15sYfsZuBOMzdw5PISBWzG4kLnMzpPYDs0OKJDgqCw?= =?us-ascii?Q?TQ=3D=3D?= X-OriginatorOrg: siliconsignals.io X-MS-Exchange-CrossTenant-Network-Message-Id: 2f22e124-91b6-42b8-e834-08ddc9d355ff X-MS-Exchange-CrossTenant-AuthSource: PN3P287MB1829.INDP287.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2025 10:26:07.5577 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7ec5089e-a433-4bd1-a638-82ee62e21d37 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cGhzjiSaOLrDV4MTdu9mpRtchmCoHyWrVCboCd4/sQVaK9kTjZZeOuGui1YC4q0al/XBSS7lN8OfoAepCe002dpH9nerKEauRdBdHXIjslc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MA5P287MB4176 Content-Type: text/plain; charset="utf-8" Add a devm-managed version of media_entity_pads_init() to simplify pad initialization and cleanup using devres. Signed-off-by: Tarang Raval --- drivers/media/mc/mc-entity.c | 19 +++++++++++++++++++ include/media/media-entity.h | 20 ++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c index 045590905582..fe50da3faf08 100644 --- a/drivers/media/mc/mc-entity.c +++ b/drivers/media/mc/mc-entity.c @@ -8,6 +8,7 @@ * Sakari Ailus */ =20 +#include #include #include #include @@ -235,6 +236,24 @@ int media_entity_pads_init(struct media_entity *entity= , u16 num_pads, } EXPORT_SYMBOL_GPL(media_entity_pads_init); =20 +static void devm_media_entity_cleanup(void *data) +{ + media_entity_cleanup(data); +} + +int devm_media_entity_pads_init(struct device *dev, struct media_entity *e= ntity, + u16 num_pads, struct media_pad *pads) +{ + int err; + + err =3D media_entity_pads_init(entity, num_pads, pads); + if (err) + return err; + + return devm_add_action_or_reset(dev, devm_media_entity_cleanup, entity); +} +EXPORT_SYMBOL_GPL(devm_media_entity_pads_init); + /* -----------------------------------------------------------------------= ------ * Graph traversal */ diff --git a/include/media/media-entity.h b/include/media/media-entity.h index 64cf590b1134..28b904fe34ae 100644 --- a/include/media/media-entity.h +++ b/include/media/media-entity.h @@ -717,6 +717,26 @@ void media_gobj_destroy(struct media_gobj *gobj); int media_entity_pads_init(struct media_entity *entity, u16 num_pads, struct media_pad *pads); =20 +/** + * devm_media_entity_pads_init - Managed initialization of media entity pa= ds + * + * @dev: Device that manages the lifecycle of the media entity. + * @entity: Entity where the pads belong. + * @num_pads: Total number of sink and source pads. + * @pads: Array of @num_pads pads. + * + * This function initializes the pads for the given media entity and regis= ters + * a managed cleanup action to be performed automatically when the device = is + * detached or the driver is unloaded. + * + * This is a managed version of media_entity_pads_init(), and simplifies r= esource + * management using devres. + * + * Return: 0 on success or a negative error code on failure. + */ +int devm_media_entity_pads_init(struct device *dev, struct media_entity *e= ntity, + u16 num_pads, struct media_pad *pads); + /** * media_entity_cleanup() - free resources associated with an entity * --=20 2.34.1 From nobody Mon Oct 6 08:30:18 2025 Received: from PNYPR01CU001.outbound.protection.outlook.com (mail-centralindiaazon11020143.outbound.protection.outlook.com [52.101.225.143]) (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 8E11E28CF43; Wed, 23 Jul 2025 10:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.225.143 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753266384; cv=fail; b=e+nCPxhfYGAFWboyyvESI9I/cItY4OS/FE9X00eu5q5ewSenQiSV34h1NRjpjAFE1rtOLGHrBNwvQ7JVROGxPV1fI8WONqCLFUrw0sZorzU2dGm9raNxlBrDgB9LAsvxFSkwLPVfY7NNsH8Woo/WtaDOygtHeVSr3elnsunE5cY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753266384; c=relaxed/simple; bh=3HRROs0D+B7zajq+qSKPuyoYMFpI2ksuhnTxpnO+iA8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=uRnxQoP65mREX68eYyzM5Ioul+xg0pjeO16lKOOqJQPZTQqwR9X9ia/QkAv17goBBr4nPWEe37kivrfPbi8MPc2YuvK/bA7YpIqT1/NFHaXruD+mlpj93nEyaCVMisFCFWrw9QZGFOFNuHI0WTSoMEOHyZ2NYqgPjW87QzN36mc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=siliconsignals.io; spf=fail smtp.mailfrom=siliconsignals.io; arc=fail smtp.client-ip=52.101.225.143 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=siliconsignals.io Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=siliconsignals.io ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YYtKNrjr1Om/VfoZdGzqX4VZVQdUWgBfS5MgN7J8bWf7jYYuwLxjmoBT9NfYAa0VxDRjPBSd/IknCYyLUT0qOkT1xUtnAtRix1jfyqcs2Kz2+1VkFaT2w4e8tdVPtn/Rt5lUdqfz8cOaW6RJtrEnQoDCQUq+oYz9m1LOqXWDt3o4z9NGaquY5jIVhOvwLhl+GAGi2IW24DYJy2qGcmeaQWmESeO2fLY4AHroZV2PRoneeSlH7uBwlo8FUyGNIiAajJhLOsvsUVeFXfDXOrdPfoL/Eo/cgDtq8ff3uR0CJruyKuFnMHM6YPPrrHUMtStT0CWPCeLYW7dmwXNr5qWX0Q== 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=mnS7UGelQ9H1HjROEmUzp9abmqJQ/rYycosdNW+pZmc=; b=OlAInMITeViM75J544nJvuoaz3fK7NvEfaU5ny0FABq2Wdx/jTMGPcyvuQLTgfIlc5ITBpxm180uSZP232jj2e1JTYjHe9TiUcd2aAyeQwzQfVBATSn21AGvkWZ2HY+WKU1bP5Ibzif5c5f4kw085S9TQY8aMsrHtHJ/K9P1hUD1bHfglT1VmuJIManFzZliCMUjwr+4lqFY/W+QIvgVRfSaSmHvREfjQpnGwxqtMxcFhgACUzP1fRVrrXsQsavP29bxlMSXVAN2IZTAmoszJLWETH+1qGMQ7y0fl3w07XY01oYzzDcn55r3ZnsoJ5rt8bhZ11bTJpByT/tjwoGRuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siliconsignals.io; dmarc=pass action=none header.from=siliconsignals.io; dkim=pass header.d=siliconsignals.io; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siliconsignals.io; Received: from PN3P287MB1829.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:199::7) by MA5P287MB4176.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:162::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.21; Wed, 23 Jul 2025 10:26:18 +0000 Received: from PN3P287MB1829.INDP287.PROD.OUTLOOK.COM ([fe80::58ec:81a0:9454:689f]) by PN3P287MB1829.INDP287.PROD.OUTLOOK.COM ([fe80::58ec:81a0:9454:689f%5]) with mapi id 15.20.8964.019; Wed, 23 Jul 2025 10:26:18 +0000 From: Tarang Raval To: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hverkuil@xs4all.nl Cc: Tarang Raval , Mauro Carvalho Chehab , Ricardo Ribalda , Hans de Goede , Yunke Cao , James Cowgill , Tomi Valkeinen , Lad Prabhakar , Tommaso Merciai , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] media: v4l: async: Add devm_v4l2_async_register_subdev_sensor() helper Date: Wed, 23 Jul 2025 15:55:06 +0530 Message-Id: <20250723102515.64585-3-tarang.raval@siliconsignals.io> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250723102515.64585-1-tarang.raval@siliconsignals.io> References: <20250723102515.64585-1-tarang.raval@siliconsignals.io> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BM1PR01CA0152.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:68::22) To PN3P287MB1829.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:199::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PN3P287MB1829:EE_|MA5P287MB4176:EE_ X-MS-Office365-Filtering-Correlation-Id: dd4fe0ba-0760-4ed9-0032-08ddc9d35c17 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|52116014|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?TeQgpkcZKkKXQlVv4Af4K/zAmFCIYqdb39qgIXqB63OnUrcJa2+Xe6KY/bNT?= =?us-ascii?Q?1r3CgirkjQNPeBMeMSKKv6YtPXjnq8DylSmAkbCW1zf+rrYPtbIUHgOG8CgF?= =?us-ascii?Q?Qzy6L3AXk50/TYUKVdpMRwyaI8QR1geEcZ+kCnXk4h7uMY4ge0iOloEH5vTC?= =?us-ascii?Q?P+wG0Fq7qpLUkml6YvY8I9ZKVs/YGIE/n4GSRWClrF24lR+1ferqLn88O/fo?= =?us-ascii?Q?hg/Maa1hSysw+GqCIfM8fSlqwJYBYO3YeMiyNZLPd4VLpoA6gNpEoJRh9RGd?= =?us-ascii?Q?rQ7rIzdfzQPYYYJVHpyKCMAAJKopVSDRpP+CM3Jx/dzYzisP/U4WOO/Ku1k1?= =?us-ascii?Q?c+nCesMThjvaVtk4dv/nAXkBwjNp9ou2DrwAoQ9o+cJiLtPFdkC4V7N1d8+N?= =?us-ascii?Q?CiOCIdQ/ioBLGk5G+7D2dsIoUhRDu9pQNs0ReSk7Lg9ZD/6/AaEkiDms3lwl?= =?us-ascii?Q?J5Z5a3kDFnbRb6qxlpFAq0F+dfbawTbl7PXWYhHjq5QeN1wGiEoi5QbCpeyi?= =?us-ascii?Q?1iV8j8tpBNjbVLwLv8/BiuM/VJpuDc1u0EiK0coTyFUXfLKXCQwvvBE8qALn?= =?us-ascii?Q?UQSR7/pJacr3yd2qutJn23ts0jbnMf8dlS7um9sOlP10Vl+Wbd2Rvk9y8r8/?= =?us-ascii?Q?sCyhEqle9uW1V2JIA5CWQ2wVB2AlmfmmkhYmAXZFEpNhDjGrGicVYSE31Hh3?= =?us-ascii?Q?2YRpq2lmuKNWWe32J3gzVwbJy/IttpGXjVLv0i66idWUZXE9kmOg7quD4MXt?= =?us-ascii?Q?rtBwULugWBjzANS/fFjSDWDbv1PMICFyDDfQpDtrAzKFhCHqMfghg6bIC++x?= =?us-ascii?Q?57Y4XcJT9B5dr622H/4F/QMfcjejrWZW2xpHkQmYx6mpPOwgafMyDK/Q7edl?= =?us-ascii?Q?HTKFzeevRafJeGk4pSIOrOWEVoXqBs3IaVn8jCE7nbEA/yDD5c2CJorGbi0z?= =?us-ascii?Q?pNAW6UK2LjdQKg+/4OKl9HUOW9fTlBhvFEmn0BLwHZugVcDdMSty+YhDdd6C?= =?us-ascii?Q?CnPeJwmEf0I1TgL+nKs3YpQ+zXT+xhYG2fTrVRic9L8EtgytfS+6Dupkme91?= =?us-ascii?Q?ltm0GQ3kNeCVXFsMdxS4Wj55QJyEMPue7PiPnNpjMmwX6GGSI7eIrDVjWJaX?= =?us-ascii?Q?C/7nOTq4cIZl4MB4+mvw9riJH4OEwsLGqjtBoANLhL1UbpfpN461hLiyZoqq?= =?us-ascii?Q?HyAALt+Z01M9JzVPv3MkSyF533SeWk/jOcJzuKJRO1T622EPxdgYzO+ZtzQn?= =?us-ascii?Q?PNwfL0PvM9EKTMl3FBjInYtQg9Heol6zoT0XR/WdcXtLwIPZhRb8j12OukCd?= =?us-ascii?Q?aI2o/TOEIuUhn6kLlVjaEjp+CHfuMTfPBcaVhXG5Mw6YRDecAbL10BWGB7qr?= =?us-ascii?Q?g44j/yc2kTikLsOH2jIilFoqhGkZwNCen4Fo2lex6Olvzlzo0sXVi3wnBaA8?= =?us-ascii?Q?pPq6zvVnnk1SZkwwhyv3kO6DMhEYcWS9MFBnhherTf16R1P8hwjXMQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PN3P287MB1829.INDP287.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(52116014)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lWFYmPnYdbHwrmyEW373W303/MVOmc2NvsMpxQa2GxYUTdvUJMBTsY7b5cdu?= =?us-ascii?Q?Z+1D+r7xn3CVGRJNfIm9s0O5N4JxRTKsWJWaWw2OBnLXb34dlIqG+dda8t/q?= =?us-ascii?Q?zuaD4XpVIqpzyrOy4Gt9tVwLALf1Q+tuiYm1/3k+3iw+HW4SO2c6gTP8WpuQ?= =?us-ascii?Q?49XzF3qHyf5UlvrIxpxuoNtFv2DjOAd3kjG5JB1f/qQKWQWmOaj1jc6kM3Zp?= =?us-ascii?Q?jjwtFFPUpOlEpKDNm1Rg4J9sgv3Jy0Ryl9I1xE3TAA5AldMaYHPf3k0PslLy?= =?us-ascii?Q?8AXF9fPSQ9DxqylK3oGNBulJFWtyA8R3ADMTuJE/MJwN1zKEiRdqTqzjdJkI?= =?us-ascii?Q?dU8fnqkznNezxHAfH5cl7Hkwvd7uYHCb9CCf+O8DvOCaZsA3I9OCZWd5NtA6?= =?us-ascii?Q?zwUn6zUZvEQaQQF3LqYviYUvUROxBpT6iP9AsELDp/34e9iXeSSz4Gvgrcq6?= =?us-ascii?Q?hO2g5Jtt79tAgeF64y+jA1VrHInjrbkyWvf0K8+PyzbcLGJGIOWsDUIN1uUA?= =?us-ascii?Q?YoSieBt7mNDgwfnpgBxae5K2sZBAtuAGo4Oe/klDlxJLLsTv06lFoNCDRYEq?= =?us-ascii?Q?1w2XG9TNhurSOxKgXj49fGVhrik8gyQNeVLySORcUM03wyuVcZAD6TNzTe6g?= =?us-ascii?Q?u/PqR/7aL23tiiX9hRaaZuhdcLpGSj1W1eodXdkTcjfUnLnvDyNRYG2UDnaH?= =?us-ascii?Q?7qnf4TdGmgv/TICY3+26zJWh4rIzBkAFjDr6hY8S9AYFTl5pCudDe6JrOF+i?= =?us-ascii?Q?JRixVj8QaOJNOPFeTrcvjMAetotu6KRZgqcxgSGUqvPzrKJJLApa0y3MEBXT?= =?us-ascii?Q?GKPlHmHfDhxfF3cvih28Ht5ZSaeQFZKD6v6h3YEEqnQvzhzvJrRTkMQFX//C?= =?us-ascii?Q?IpEiulaFUVdhoEl5LM/OI0n8LDyiDdmEFssob/5rXp0mNoQFwJAVY42cct+v?= =?us-ascii?Q?OMiIPmkY1ozujqmB4di4xZgSsNX1AtOOhp22GtWOguRyc1awKgEdBss8FMqo?= =?us-ascii?Q?lg199f8ipT+RDOnNF3Ae1Kqo73Wf25uX94R0zQ0oT80AKAwbwA9vID62uQ3o?= =?us-ascii?Q?qqVd6nMNjX9xMvkCg+4DNNWajn/czSSoQXqfNGeOXmJGqdjO/J4d4iLWK3zu?= =?us-ascii?Q?rYPTenksKLPwYQ0TIhEaVkyL3r0gaMUxJhVgWoyHtisuJnpgSkRmVParZMwV?= =?us-ascii?Q?3EehAWTrz0DW7N/v3eomHW+Q0vpD5G03t5KJH8YvF5rOvWbQsmDX7wmbHVFH?= =?us-ascii?Q?aR89iabafs0xCDOhPFVd8X1nycDt67eYYqXr6juihov+4dTTDea9IFKqZO9t?= =?us-ascii?Q?nKLc1kyRmm63LcQLUhYSAbclyubBoSW0cZlc7ATuXtqo9NR70CeO6W+pAGCY?= =?us-ascii?Q?R6911Q0Lkpn3I2VAjsDWqWP1HMD9uXrtvhpMIu8YdmPI0umxnDODki0+A8Jz?= =?us-ascii?Q?/uxyLVtpZzreOAK9WWJJ81lMp06PyCIxcjMMNtKNc43XHlxY8STi6dNte6XQ?= =?us-ascii?Q?Ec5pYpcp8SUgROYOOnP85JPN5E3Y4qaWVVDKmlRiX9TrAuAV1k1tMlgWRKIM?= =?us-ascii?Q?Ge2p/I1vnZdbV/9k7nz4RAPxPyHwDFHp04qx8Yr7rvWFOpgmWZ/bGm82RSEn?= =?us-ascii?Q?AQ=3D=3D?= X-OriginatorOrg: siliconsignals.io X-MS-Exchange-CrossTenant-Network-Message-Id: dd4fe0ba-0760-4ed9-0032-08ddc9d35c17 X-MS-Exchange-CrossTenant-AuthSource: PN3P287MB1829.INDP287.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2025 10:26:18.0184 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7ec5089e-a433-4bd1-a638-82ee62e21d37 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TmCLv9VcEQly5K3pYBbewqZTNT0KfNMyHWxGJqyTvQLUmiRBq3QfhlNendtPNH1r7nq4tROFKd4XeJJ7VhRSmMgDahvXCpxkFxndudHyn7A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MA5P287MB4176 Content-Type: text/plain; charset="utf-8" Add a devm-managed version of v4l2_async_register_subdev_sensor() to simplify sensor sub-device registration and cleanup using devres. Signed-off-by: Tarang Raval --- drivers/media/v4l2-core/v4l2-async.c | 19 +++++++++++++++++++ include/media/v4l2-async.h | 18 ++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core= /v4l2-async.c index ee884a8221fb..197a01a2d5d6 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c @@ -7,6 +7,7 @@ =20 #include #include +#include #include #include #include @@ -894,6 +895,24 @@ void v4l2_async_unregister_subdev(struct v4l2_subdev *= sd) } EXPORT_SYMBOL(v4l2_async_unregister_subdev); =20 +static void devm_v4l2_async_unregister_subdev(void *data) +{ + v4l2_async_unregister_subdev(data); +} + +int devm_v4l2_async_register_subdev_sensor(struct device *dev, + struct v4l2_subdev *sd) +{ + int err; + + err =3D v4l2_async_register_subdev_sensor(sd); + if (err) + return err; + + return devm_add_action_or_reset(dev, devm_v4l2_async_unregister_subdev, s= d); +}; +EXPORT_SYMBOL(devm_v4l2_async_register_subdev_sensor); + static void print_waiting_match(struct seq_file *s, struct v4l2_async_match_desc *match) { diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h index f26c323e9c96..df0e7337fd22 100644 --- a/include/media/v4l2-async.h +++ b/include/media/v4l2-async.h @@ -343,4 +343,22 @@ v4l2_async_register_subdev_sensor(struct v4l2_subdev *= sd); * @sd: pointer to &struct v4l2_subdev */ void v4l2_async_unregister_subdev(struct v4l2_subdev *sd); + +/** + * devm_v4l2_async_register_subdev_sensor - Managed registration of V4L2 s= ensor sub-device + * + * @dev: Device that manages the lifecycle of the V4L2 sub-device. + * @sd: V4L2 sub-device to be registered as a sensor. + * + * This function registers a V4L2 sub-device using the asynchronous sub-de= vice + * framework and registers a managed cleanup action to be performed automa= tically + * when the device is detached or the driver is unloaded. + * + * This is a managed version of v4l2_async_register_subdev_sensor(), and s= implifies + * resource management using devres. + * + * Return: 0 on success or a negative error code on failure. + */ +int devm_v4l2_async_register_subdev_sensor(struct device *dev, + struct v4l2_subdev *sd); #endif --=20 2.34.1 From nobody Mon Oct 6 08:30:18 2025 Received: from MA0PR01CU012.outbound.protection.outlook.com (mail-southindiaazon11021141.outbound.protection.outlook.com [40.107.57.141]) (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 E3B8528D8C4; Wed, 23 Jul 2025 10:26:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.57.141 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753266392; cv=fail; b=PH+to1Bx+LZVq1MY31BXm672hWhjmvgzVcJPIb7JELI61RxLLs4V66F/uWKnnbKuoH+EWvQAd0JLd/3GhJ16F/0A6ttam13EwVceBI/XaTL8M5Ad/8twntjinVrUqzICSlCocsPYZlruUSCnKGZju3sg3A+CUVEQt6Mq9pS1mY0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753266392; c=relaxed/simple; bh=kaFwLkElVI1SFP6eNZDER9C4JCemVQLQFzkKuxLJW3E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=NSAXotFzhFjWGxBjUBHFzA1LJqI0/izOeEMP/hLpoQaYE1KIfzms/bOww/L+JwVom7pgGYbTkMjXzbkyP281UcSMGnEIYWVzYt9W/ZYpLQru69Szyup9un/DdgObfbJMdqK0/sVqefs98KGiuAGnZiu1O5/3kgHznN+7pKAP9s8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=siliconsignals.io; spf=fail smtp.mailfrom=siliconsignals.io; arc=fail smtp.client-ip=40.107.57.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=siliconsignals.io Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=siliconsignals.io ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=t6c56ZAG7D4ZialkVvNZWcDGVxbdT6gJY/uPU2g9Lwug9a+uJaDHrQGoXs/mD87FjDb6sgMeck2S7qoOoDx0wTBsOEoET6H9hwj9mkJB0Cc+SZNlp3Y5K/9eZuQ/mpouWEv6r32yGy+2hKiWFM0eFPV0d/rbNklTqUBia8jKpNSsTNcBdsjJN0Du+mOVpeGE63eSlUNLpc9z/Q4vCaAbBFrbPslrzPEG9zSb7Ge/HoppO5ZIkX9dRrJqW66EfiarAE/iaObJzXj/uNZqEI8XxclIT4iMp78Uysru9ny/Z+iMXs8HKY6q2wVSZOKuJUG3egVX5x9JD5kxP/M2BSg8Jg== 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=M1AXEpaMMUf58gpAzaHEXhZgWFNvfjz7EIJvKJn1WDQ=; b=vXhQ/PIc7kqQtmcAmlq+tsNR9IIZMWL7L7BHnzObLwFqu/cOYJqk8kNve563tLAFW00EukQur0b7GbiIXgKWVEG98yI9NMOKnLNKz433+t++CFTnkYEX9mZ92YNRxt3IglCuIdgyUg0Q3toKldDa6BemQqlbmM78q5xzRN54fjpazo2FHSDY8KUF0w/W6dua42GBRSQA38eLEUf9w6ivSRQRaqU/kolVGleqrvHSq42GMnRcz3ThvrFICFChq1opV1gI3JZSvGTIELGqsbwP+VJm7rIGXKFWL+DmpZPBq3u3Etuwu/YHmglEpp32sxWkc8udGGJWQ5+bmXEOO+pgMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siliconsignals.io; dmarc=pass action=none header.from=siliconsignals.io; dkim=pass header.d=siliconsignals.io; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siliconsignals.io; Received: from PN3P287MB1829.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:199::7) by MA5P287MB4176.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:162::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.21; Wed, 23 Jul 2025 10:26:28 +0000 Received: from PN3P287MB1829.INDP287.PROD.OUTLOOK.COM ([fe80::58ec:81a0:9454:689f]) by PN3P287MB1829.INDP287.PROD.OUTLOOK.COM ([fe80::58ec:81a0:9454:689f%5]) with mapi id 15.20.8964.019; Wed, 23 Jul 2025 10:26:27 +0000 From: Tarang Raval To: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hverkuil@xs4all.nl Cc: Tarang Raval , Mauro Carvalho Chehab , Ricardo Ribalda , Yunke Cao , James Cowgill , Tomi Valkeinen , Lad Prabhakar , Tommaso Merciai , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/4] media: v4l2-subdev: Add devm_v4l2_subdev_init_finalize() helper Date: Wed, 23 Jul 2025 15:55:07 +0530 Message-Id: <20250723102515.64585-4-tarang.raval@siliconsignals.io> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250723102515.64585-1-tarang.raval@siliconsignals.io> References: <20250723102515.64585-1-tarang.raval@siliconsignals.io> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BM1PR01CA0152.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:68::22) To PN3P287MB1829.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:199::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PN3P287MB1829:EE_|MA5P287MB4176:EE_ X-MS-Office365-Filtering-Correlation-Id: cf38acad-acda-4db9-727a-08ddc9d3621e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|52116014|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Db8gt0SVWTsAIGDuy03tco/hrtecFd3WznWzsxl1N4VauI3O6qnP6ay5Y5wr?= =?us-ascii?Q?MHsPMdxczYpDbxF9J7Ii0IClKgxW6XA9SUp+DddB2pxMugQn9UZXKHV4LrcU?= =?us-ascii?Q?VzBIX/yikByC57yNRp0/b+COi8bSdwr7DfPWAr+7c88pSOLO2bw1ppxqDphj?= =?us-ascii?Q?nUBmUcofFHx5twk2p59s8+m5Y1KRPiXu/qD0a/UrhQniQKdUBZO6VWu+PQt3?= =?us-ascii?Q?hr5r234508pEU+8Y5HwmoSPzHUx5kBy8TBHxiTTAgRDitVouTEJfeBmN3je4?= =?us-ascii?Q?al9GuDuJjWHZSxUb9ox0qPIw7Dgp9uPoOMVEDj9gT7qbJjXyh8kzSuP0s1FD?= =?us-ascii?Q?n5hRbpXjRBeRVjKFIUPb84Z9eARKJ+TsfJLUdtpuLue1p2iSV7JIG991ZXak?= =?us-ascii?Q?8/OIk9SfADVnivuns42Qe6TrVW1a0fuRpdkDtfC8Pa8lKJiGI3+1WMrq3rxS?= =?us-ascii?Q?+5vglJ+bLFZASZWY+hwsuklJN9/XjAvYS1rzqVaFQQgo9QE/NHt2vgnerqj3?= =?us-ascii?Q?loqhx3lpAdaarVEX1amI1Ds7GKmifg5gBgqrMMrJOYYbgXLZ/+ZjEdxcMps6?= =?us-ascii?Q?b5edJP+rXzcS9jiFnwXnOjCBxGU19sZtiQ8dcCoAC///UGJIWGG7fygH+rfF?= =?us-ascii?Q?pron87KC/Owcn71Y70uos6y26eLtuOwLnYRr4rLMIX91woZOKHAfAngdWT6k?= =?us-ascii?Q?1xm4YKY4walBKEokSDJzCIxJ0sNBqeYZQCmYH8hsd9srGCZxmj/8PJN7bnn9?= =?us-ascii?Q?uHu/B39pVNk/nOB35LBkj9xgc1iWxKJ+5bKe5CkIY5Uy26gRDGrn7A/dq6AQ?= =?us-ascii?Q?GqqapBNk1LmVWAHh0PjycYo4zbUNxaWMej8H873foEdPyhgk/U2LG+zp9DIi?= =?us-ascii?Q?YiAynagxuVUv9+yAWk1cBUHk5/MvTFhEx5xbFb1B2L/jd1vObogrfZHPJidh?= =?us-ascii?Q?PMXutTVuPPe7G5F0m8cikZ6H9OGUWMMhEgwX6V9GvlThm01iH5naWSy+gqRu?= =?us-ascii?Q?A2+u2i86L11nJR+muuViS7wMo6j9fKpuVZPuonvmeOpd6Vx6AglwTmNWcjqR?= =?us-ascii?Q?NnJvFpxte/ZZ+78nG0FjKkWcQGcP9GY5JwlpYn38JFPEU+LTCL5mvx/uF5zG?= =?us-ascii?Q?0qIHdrR27Hwe2YTM9EwiwRTuO8dJQSMRf9KKWaPisYJKljZiLnYwli6RdPW0?= =?us-ascii?Q?IoOddzBdkfeXtYp5lhZo2rKPC8Zm/M6MSQ4cPYbyk4wbnrCrnHoFEwfcMKfe?= =?us-ascii?Q?ANcyCMsV7hdAVAAXppwd0sXLvO6oR9lVj0o5jwVdHTgWXI3UOwObmifR2/zC?= =?us-ascii?Q?WZRYxLBJqdlysaQTvqiH5m3jn5KGG1P4BII0OyIHvzS2ojamlphRzkddhaFS?= =?us-ascii?Q?yubaWqJ7c74NoJni2gXl58uZ8Psn7AzICCV3f5+Q6ZkcJUe0DBvxKAsyfkrl?= =?us-ascii?Q?xSMOgN7FnTz+u9tS3DTE6gm3NFhzTz0OUzNWKMRsg+5Ghpol0qpNFw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PN3P287MB1829.INDP287.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(52116014)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?56mvHxA4Knpy/i/1IBlA/R5DDXqDmEdjDKdk2++0pOK2ist3bvewoH2sOtfh?= =?us-ascii?Q?gPbe25rzmnYK6mF6Mtv1x62PJGW8+nSdw5gkB+ZJot///S4dyN/n+0IjwO7l?= =?us-ascii?Q?WHdb10Z4AXckvRq3FrYPGoibxn8tfFGqiwB5syD4NM0Sq1WPMy6mNTgtGJSU?= =?us-ascii?Q?kSmuXBXLZpo7ca8fSxcvKgjjM13Zn3C0/Kaepvfg7fT8nJ8RY+FLACGscG6f?= =?us-ascii?Q?G81FCUB5bcaZKNGLIIp9ytXp2C6UbWAtMntWyzzpmL7IWW02CUnEt6Lg3rDi?= =?us-ascii?Q?I8foGdD/w8pHuAvnUzDsNt1ggaC95r3DZhSYcq8WZKOsmR0HptpHVxtd9kM9?= =?us-ascii?Q?etbgDZXEQrZvvO6w7L9PGgd2bk1w/tQ0AlGbC+YCSYtEBKxyByeJvKbsKxvv?= =?us-ascii?Q?KCux2YB1unEdSdXvQJFl2D1JH1hmYRhRxEbkpf/LwNaPC83cLV96PryU7UOi?= =?us-ascii?Q?im8R8/6cM2otxN86fb47pSPzNFgTQ8aOjGtBx2EP/HO29+9QZd65GA0LG0G9?= =?us-ascii?Q?hwQcbdtvnE6biHs0GIKrIiyHkiWYlYkRj0A1QZd/PKpGpe8heOmBS7PrGvdV?= =?us-ascii?Q?ykt8wvDL1uVcu44eCyILAk/z7ygJ+5s3N8dTigWi82OgvDD0LFiE7FCNZMhA?= =?us-ascii?Q?UTPV7qH9KHkh6Xobgk37kd/hwvYkqkueEI6uxaRQMe0dZ9uhlcpX0R1LmhxT?= =?us-ascii?Q?C8OxCvSrMbhFV+2YrAJGccs9mQM2Qh1IdrpUVLeEhrcFX3sAnGdulZcX3zjX?= =?us-ascii?Q?5c0j7/TSXXEVYRZKyIXQPBVHluSPYkrdZ2aWi5sahZ3OhGV3mbwy49AOHxL1?= =?us-ascii?Q?tGSO+990Ad5w/qhC6njqmGOd94qwVkgCGkr728WNTxDAFcrNGvDCvRmHEtOT?= =?us-ascii?Q?YL0MFFUyFwQtbGCbU0C8iiPbtZdus7UPQmfUzJ9anC1jZQherh13EW8AV5OB?= =?us-ascii?Q?bK/fzOI9dtRPNiUJu4CbiWxzPZh/CQ7PnzUkkra7y2lzoHHFriY1Zi8JN4og?= =?us-ascii?Q?lICnSm9POiV4G8ueIXJeYDBEhpH+oezu6UV6E3ZoDFQrzVeLL7TX3JUlK7W3?= =?us-ascii?Q?WODCjQZIp3ozOtmTF7cqG2Y6QJojro3Ee2GGNipdnJQ70q3lw7hMiZVJY1Dr?= =?us-ascii?Q?ULAeHFtVmpsfeEFV6Orj+z6GT/BgkQQUYvQJ7x7GhVZpUVg8F8HRTE56cM70?= =?us-ascii?Q?bjlnC5+JxLziHXRDTsItmEIhhBMGURIUDEbVuxtNWNl8bpxvDMlXlxPo8Mv2?= =?us-ascii?Q?lslRHVeyq90jldDR9Ut6vIv4DiHBAlhe8j5n7EH3TCabWvjjFqsw+uMEzXLy?= =?us-ascii?Q?07PyiyoSknJeQpFM9hqZJ6tXCfShyoj5Wj/Qq5TZGOKua7/tU+LXW6itU32l?= =?us-ascii?Q?FwWuCCk2Xca/+g6AZ2iS5qrx8vhZHtTOZcNp1AagIjMRA+5hYdaxNYFDCe7g?= =?us-ascii?Q?QkwxOnnPHJladnLsT3V30IY/HUy4vwJqluGN3lY6yxwsdfYGriJiAS5Vy3bO?= =?us-ascii?Q?qLc/YsUairUisZMJ/SygfCRkeDXktkAul+EmlKLfhbf9QeZJCDHVoYRED+fS?= =?us-ascii?Q?srbUHXSKv//Eqwo4kNV03tqC92FlB8Hd157oDnlPncdXJTxZ2h3glqQ87Tig?= =?us-ascii?Q?Rw=3D=3D?= X-OriginatorOrg: siliconsignals.io X-MS-Exchange-CrossTenant-Network-Message-Id: cf38acad-acda-4db9-727a-08ddc9d3621e X-MS-Exchange-CrossTenant-AuthSource: PN3P287MB1829.INDP287.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2025 10:26:27.8905 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7ec5089e-a433-4bd1-a638-82ee62e21d37 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: N2vhrqScqduEwRjYLIyWAr9Ft4+0Buz3nzvCArF95gL+l1s5apPAFyHdeOykhq00jhaBcLMSlsRNekSkUHQQiR71K0QnYdVOReq9sZoOFp4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MA5P287MB4176 Content-Type: text/plain; charset="utf-8" Add a devm-managed version of v4l2_subdev_init_finalize() to simplify sub-device finalization and cleanup using devres. Signed-off-by: Tarang Raval --- drivers/media/v4l2-core/v4l2-subdev.c | 18 ++++++++++++++++++ include/media/v4l2-subdev.h | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-cor= e/v4l2-subdev.c index c69d1aff701f..da7a479584bc 100644 --- a/drivers/media/v4l2-core/v4l2-subdev.c +++ b/drivers/media/v4l2-core/v4l2-subdev.c @@ -8,6 +8,7 @@ * Sakari Ailus */ =20 +#include #include #include #include @@ -1710,6 +1711,23 @@ void v4l2_subdev_cleanup(struct v4l2_subdev *sd) } EXPORT_SYMBOL_GPL(v4l2_subdev_cleanup); =20 +static void devm_v4l2_subdev_cleanup(void *data) +{ + v4l2_subdev_cleanup(data); +} + +int devm_v4l2_subdev_init_finalize(struct device *dev, struct v4l2_subdev = *sd) +{ + int err; + + err =3D v4l2_subdev_init_finalize(sd); + if (err) + return err; + + return devm_add_action_or_reset(dev, devm_v4l2_subdev_cleanup, sd); +} +EXPORT_SYMBOL_GPL(devm_v4l2_subdev_init_finalize); + struct v4l2_mbus_framefmt * __v4l2_subdev_state_get_format(struct v4l2_subdev_state *state, unsigned int pad, u32 stream) diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index 57f2bcb4eb16..a5da32783846 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h @@ -1337,6 +1337,23 @@ void __v4l2_subdev_state_free(struct v4l2_subdev_sta= te *state); int __v4l2_subdev_init_finalize(struct v4l2_subdev *sd, const char *name, struct lock_class_key *key); =20 +/** + * devm_v4l2_subdev_init_finalize - Managed finalization of V4L2 sub-devic= e initialization + * + * @dev: Device that manages the lifecycle of the V4L2 sub-device. + * @sd: Pointer to the initialized V4L2 sub-device. + * + * This function finalizes the initialization of a V4L2 sub-device and reg= isters + * a managed cleanup action to be performed automatically when the device = is + * detached or the driver is unloaded. + * + * This is a managed version of v4l2_subdev_init_finalize(), and simplifies + * resource management using devres. + * + * Return: 0 on success or a negative error code on failure. + */ +int devm_v4l2_subdev_init_finalize(struct device *dev, struct v4l2_subdev = *sd); + /** * v4l2_subdev_cleanup() - Releases the resources allocated by the subdevi= ce * @sd: The subdevice --=20 2.34.1 From nobody Mon Oct 6 08:30:18 2025 Received: from MA0PR01CU009.outbound.protection.outlook.com (mail-southindiaazon11020123.outbound.protection.outlook.com [52.101.227.123]) (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 59B4F28C2BE; Wed, 23 Jul 2025 10:26:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.227.123 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753266405; cv=fail; b=Xto7HjprnW0qeZrdoJYBAbqB2rPphuWSph/CZ93QzBE2lr4w+1jSgr8nAiQvtjyAvXsgwwgfJCNJCu3A8Ud17JUxQDtH2izOSnAssi4PZ5klPdcS4gw4K6dl30o1NSDcYGQGPk+a88UqswhJnhK+Kg6TJA8alsBliC3ZzTD60ug= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753266405; c=relaxed/simple; bh=0XCyCZDZY3oz1MxGB/VIvBTzXTm9VERDEb4nY5aBR2s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=FBBOdDXeWQyKqBkXx57X09lAbWYo9wQuaxTpHk9VE6ooaHK8yMT9F1k8MG4jzBhewcbJyiw32GynjUhr2dblfEO4QDFeO1WD1sswyK84YIYZLG3RvcIa1yzIMXFyHxEk3mRsxFvtWXzKmiXRRI4MyPLCtFpW7JX3BDPkZ/nGLQc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=siliconsignals.io; spf=fail smtp.mailfrom=siliconsignals.io; arc=fail smtp.client-ip=52.101.227.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=siliconsignals.io Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=siliconsignals.io ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c93oxmQGx9TtUxWH1PK2PB9YL+GTsnyQEVIuGjqPjWBcIpK7PO1WwDC1/X6pcH5LuTbByR3ajMFx5TPLRfjXo8Yu1Z/9xBxQgOWsL5ygIJEYAnN933Gdm+xa/oWk2z/uw3XUo4gLTUbxO8Zd/7zfxvg6podmxbyCXbHsESOkiXlcuerqeymVozw8x9WHH1LOM3q+fedorG5Q7z4EL4y/fQ9xDopBol8iWbzWixWAVVK3Kd5cC/P7/1dScgudFaSr3Xj+oJKL49sJe/jZNZEUmLCrGhD5f8OqpD/AYz8v6B6E4FoNhcofK/rqi5KXKJxAfsuAi88O9BRinkJHbC8lIA== 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=JeU/x8ON6+gem/qNqZrMnJ+95syTqeJk2P1tVYy6/f0=; b=agOzjEOKc+K45GOLjiNxykrB6S9uK3zzXwKaMPxOaF52VoNAZJ7gc4fGqAetpql1KEN0TPq0LR9tHiN9s6zgMu3bJgMyy61tYCaLxM28wdy97oS7V/W7fMK3QlKRzRWM7R73EWDu3Vdodb0de+jkbRWulD27Z77JDCYpLgE3e6W9JJAG4A5avbHsSHKP2EmGvk5v2VnSpyL1ZTIVaoVTK26Hp0yuCVG5wsYui+Rn24UlrfQgaXopNhdA0ITTeaoY0oHw3LfDQI+9ZdPRtY++zLQqZNIwFiyHXkEH27oN7I+Ii0vlf+0/PfUbWBBCyvxSO9EvOiA/cUpY35tQHws1NA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siliconsignals.io; dmarc=pass action=none header.from=siliconsignals.io; dkim=pass header.d=siliconsignals.io; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siliconsignals.io; Received: from PN3P287MB1829.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:199::7) by MA5P287MB4064.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:165::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.21; Wed, 23 Jul 2025 10:26:38 +0000 Received: from PN3P287MB1829.INDP287.PROD.OUTLOOK.COM ([fe80::58ec:81a0:9454:689f]) by PN3P287MB1829.INDP287.PROD.OUTLOOK.COM ([fe80::58ec:81a0:9454:689f%5]) with mapi id 15.20.8964.019; Wed, 23 Jul 2025 10:26:38 +0000 From: Tarang Raval To: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hverkuil@xs4all.nl Cc: Tarang Raval , Mauro Carvalho Chehab , Ricardo Ribalda , Hans de Goede , Yunke Cao , James Cowgill , Tomi Valkeinen , Lad Prabhakar , Tommaso Merciai , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/4] media: v4l2-ctrls: Add devm_v4l2_ctrl_handler_init() helper Date: Wed, 23 Jul 2025 15:55:08 +0530 Message-Id: <20250723102515.64585-5-tarang.raval@siliconsignals.io> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250723102515.64585-1-tarang.raval@siliconsignals.io> References: <20250723102515.64585-1-tarang.raval@siliconsignals.io> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BM1PR01CA0152.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:68::22) To PN3P287MB1829.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:199::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PN3P287MB1829:EE_|MA5P287MB4064:EE_ X-MS-Office365-Filtering-Correlation-Id: 6bb5d647-7dca-4c7a-676c-08ddc9d367fd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|52116014|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Exj+6RmDeKtlIKLBbPscatpfleB4FmrWES3QgnIHyWjS4cZObQwSazZLrALo?= =?us-ascii?Q?NmxQRq6NmAnT4Kc7tM3WryPUnnHKwZenCx00wWOWG2ZUKvKxvXQYs+YiyYhJ?= =?us-ascii?Q?ZLkfGX7ctoIcbt4j/PCEVJYZt8XxBLTf1K8+iQ33o4X6IkDwBNLYkkdzUxXd?= =?us-ascii?Q?Jx5jCuORe6uZ2IOVPNgHxMQbDAGQDHssTvJtGY09BAd01vxNayhJFnsGDV+Y?= =?us-ascii?Q?4kdZttjCm22wbrSiiqk9u7l32J3EaFhHPBIyd4QsbTgQZe+Z/TpFCobFDvnX?= =?us-ascii?Q?WmEprYskyyEOtbEYs8tHnSvhqGuMsHRm4RKjhl+jfUFxfy2igbVDUKj3lwb8?= =?us-ascii?Q?NmRNnQqmmQqT2/zx8TM9+eXLmmQSrx8N9xgVXb+M8W7VIO2kFjdVPZDtp2ge?= =?us-ascii?Q?V4QbDE4znKu/pW0ZN1YE2oCqU+LObmZ8coccLvRzzOv8bpmZXZPVZYM0D4rY?= =?us-ascii?Q?xGshL5IqHvDXueRe+mFT5s0PwowveZjgKcJ+Be0rMSIsur1KkMAwdRnO55qd?= =?us-ascii?Q?ISHzfBf+Q4W/dBjUKs+Ucjrh42iDRa2fM8XVJ8DOiVHz/HTnSO9iGEiKoIAv?= =?us-ascii?Q?p27f03QtX6+ae6gZkRHyZ2Kp3S/PVDDtSKL6Wato8l9Yd43/hvZmSn+6hdmq?= =?us-ascii?Q?dzBPibk8LhDiaD4jcjDjrGMOWUJV6Xg0uy2FBkXdHwMYWwH/qa8o8z1kvMax?= =?us-ascii?Q?NkBn5N3oROx4RZ1P2XgsxQwbKbDWOrfCF254vIkUKjqjnGA4jMjm28MjZTLd?= =?us-ascii?Q?e93rx2W3lHIh40ibEnJS5ItaUzpG2ZB7oTjoUkDMYr5bNC/v1yildzKQ8aq1?= =?us-ascii?Q?7/iEdEFKuzWKUPq6bjSMgGfxA+8GhpCqM8Ma7uvbh+8KYictSK9gmV6tUUsB?= =?us-ascii?Q?c6rPxG59SP+diCnP9E0eBL7BWnIzxsYDzdug47VT0f8pFwqTkd0s0jblNMHR?= =?us-ascii?Q?azlddLAN6gIHjjlovRL+nbdrI8kX93Rw6ArfJeE03sN2FAU6Non2C0p5Y8dR?= =?us-ascii?Q?K0vUWINyOCF6KzJbAnKsRzFXVWwwhhB9h5JBU8QjUFUuWva0pF/s38FDGAUm?= =?us-ascii?Q?Mt0Te5VozbjijETpfmFyPn44cCHUEzyaaS0tsCpaDbEN1sTVoXh/5DLxOago?= =?us-ascii?Q?6y7Go+PzYsf/+GLL44+ky8Q24w45MrE8A9XxZ1HzOaB0tU6epIg24Eio5dsp?= =?us-ascii?Q?84J71EK4WhbR2ef7YR78FGL6afiXO7ykTTDeLDTTO4GMA+Dpzv9bf4ixZzyi?= =?us-ascii?Q?rm69Ej6/MPewqNwMQWBrB3W66Xe8GyKgcvz5nptm6n2ZrfVpRhDrsRaYZP1v?= =?us-ascii?Q?Vs0QwCHMAWOFCqfp35BKZe6zjGnvcCRHg9C67+YU25JPB1gDj2zLi2BtqWEZ?= =?us-ascii?Q?UWRnNBjWFJxX8ljDwfTwVAScI3k6IZM9s4uMrCLWYYGfmI2BdbMSFCM36+vR?= =?us-ascii?Q?ChuuDsVFgTL9tXve9lxibH4WkPuVDbEyrYWXDZXREwuf0d71iP3nkw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PN3P287MB1829.INDP287.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(52116014)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pYxhIzIZaPf7MUnjphJEdT8KJSXT5IHNXjT+9GQe9cF+NBqOwohNth94BQ7C?= =?us-ascii?Q?PrBTN0LP7zcwIGnwfi06mc3/usGplKNJen3FqQGT0cgXQXBhlkUTjMnwrulE?= =?us-ascii?Q?mK09QosSnPGtRrgR/7pTDvZ2/QhsYkPIsaqMtE8oKUSqPA1gjkJ/lKWCoFZB?= =?us-ascii?Q?SrUbjTnrjNtLn4Ru18GbG577QlgNBExEVB5UxSvVKdwmkn+RxC9SYPy6H9aZ?= =?us-ascii?Q?ucKOVV56E1XnRth5VCFhD1/AhhNq674+K6fTIN6cMb73KNAe75J5WuMOrZFD?= =?us-ascii?Q?ORV03iXHdg4NEvbvgeEfOOHlqirWJ/IRC/2KUKk63vP5/XUQ2/oE42FNAleO?= =?us-ascii?Q?wiLHzofECW6+Hl4PTzrHdrCr1VuMHQZQU2petn9qtqRsuCiroViDdsiUFUeF?= =?us-ascii?Q?VDwjBBfmsdJPLPHjFBLAMZpSvNkU3l8yVkgyR2u6GBpEpdc8HtFX5wofboDu?= =?us-ascii?Q?0Boz+9SPHh3B/QT2hNZRaG6lqK3pqJ2fWMIEJ2TACQyPcyaRMy2UNBbrd2a3?= =?us-ascii?Q?CJUIod07PmL36WsgilIacRUBKOEYyDprsUSY0dEQr8uLbaYwSRn8MdxtDOTS?= =?us-ascii?Q?MGDqwBnXVedNH7Ed4Ij+nD0ZGhZm29eMCBPLeoKOBQHn8M4/HH3c6cimNJtd?= =?us-ascii?Q?GSnEcCRO3kM+mUX80kEwQTSpliq5F01cHWh2HTLLTPRxWAYOm+i9cvw3Ckqq?= =?us-ascii?Q?ZQDOZbyr8BytA5GKqNF+Ut8yUQWs36DwjUHc+hluOzf5zhvPgHv0CES50ppv?= =?us-ascii?Q?0uaCAKqX9Sr0faXzD38nOHq4dgpoUXPgwa7DvSlDtqlwE8GoinyiaOou6mnO?= =?us-ascii?Q?ZQC2v/7NowOBpak10L91FQParZQmgCiFmM0wZ9fNnUM9gJ1BFZNW+eENf/wd?= =?us-ascii?Q?Pned+6fRVprnfjAA3OYNY+QzD5eKrQmKGVpMOJjdMtx47+9NInKRi7lmIVu+?= =?us-ascii?Q?dCNykb/N7B6MHgZ1wHHqv9Ue4bBge/2328F+79U2AMRLHEeERcAalMpF8Vmj?= =?us-ascii?Q?nKHr5iTKz6lCgr9c38Sa9UstSIYANZz8n7otv4wOG+kIMCtrXCn6NaFUVhD3?= =?us-ascii?Q?0fnei/VRfIP1n6ByjeXwCf6+NmP65rorrZgnfiWd8/bfyMBuit27oUX6iAn+?= =?us-ascii?Q?BF+jAylhgwEJbhjMfXnhnZwQxhqlmA79bpDXaYZhnojKxZhc6krhE41ZVv2f?= =?us-ascii?Q?eKIBPpto175MTqwLNQJFqp4yRI32EA7XwB1qSr+fEaMlsDBjgkhCAhvDUANi?= =?us-ascii?Q?PteAWWprBK6QGCOMhHTNSPxKc/qjfe8M8nr8RWhyzNv4bi8qNjBo6TgbrKE4?= =?us-ascii?Q?euWlFBXrGWUieC/m5umxQa6oCzPKfJKBL14LUAv1w5u6vIaD650O++rdOMI4?= =?us-ascii?Q?4yQXRKA8il5gEiAIg84isG3Dmxn+Hq5It2riThx6eSVyRbNEaEqj0238WD3s?= =?us-ascii?Q?MYli17sNSkooDUIFlwS3VDc01yoeRN7CzaRyiBaVcdAT/1mN6oI9pT/JUwA4?= =?us-ascii?Q?zpCBs2e5yvdV1D7CghjhpGvjA6ihasTMOmVN98l44RPvzJmI37aXMCEsh1ya?= =?us-ascii?Q?WgSZPgg0N3HDXv3iTD3J+sg4sWZ6JwUfJz2Hc5P7qq3KCL6fJbgkk7aiNg7C?= =?us-ascii?Q?eg=3D=3D?= X-OriginatorOrg: siliconsignals.io X-MS-Exchange-CrossTenant-Network-Message-Id: 6bb5d647-7dca-4c7a-676c-08ddc9d367fd X-MS-Exchange-CrossTenant-AuthSource: PN3P287MB1829.INDP287.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2025 10:26:38.0310 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7ec5089e-a433-4bd1-a638-82ee62e21d37 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: //oeyFPKKDcVcsbQqBd14GfTODvd1/9KfXo0b858iJvBY8wymiVT/RnE14YCk/qs72lKE4s9L93zPr98uJV5TsrGa5kHqLXcEpGhMTeTW74= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MA5P287MB4064 Content-Type: text/plain; charset="utf-8" Add a devm-managed version of v4l2_ctrl_handler_init() to simplify control handler initialization and cleanup using devres. Signed-off-by: Tarang Raval --- drivers/media/v4l2-core/v4l2-ctrls-core.c | 20 ++++++++++++++++++++ include/media/v4l2-ctrls.h | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/drivers/media/v4l2-core/v4l2-ctrls-core.c b/drivers/media/v4l2= -core/v4l2-ctrls-core.c index 98b960775e87..2c8c46bc8d30 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-core.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-core.c @@ -5,6 +5,7 @@ * Copyright (C) 2010-2021 Hans Verkuil */ =20 +#include #include #include #include @@ -1671,6 +1672,25 @@ int v4l2_ctrl_handler_free(struct v4l2_ctrl_handler = *hdl) } EXPORT_SYMBOL(v4l2_ctrl_handler_free); =20 +static void devm_v4l2_ctrl_handler_free(void *data) +{ + v4l2_ctrl_handler_free(data); +} + +int devm_v4l2_ctrl_handler_init(struct device *dev, + struct v4l2_ctrl_handler *hdl, + unsigned int nr_of_controls_hint) +{ + int err; + + err =3D v4l2_ctrl_handler_init(hdl, nr_of_controls_hint); + if (err) + return err; + + return devm_add_action_or_reset(dev, devm_v4l2_ctrl_handler_free, hdl); +} +EXPORT_SYMBOL(devm_v4l2_ctrl_handler_init); + /* For backwards compatibility: V4L2_CID_PRIVATE_BASE should no longer be used except in G_CTRL, S_CTRL, QUERYCTRL and QUERYMENU when dealing with applications that do not use the NEXT_CTRL flag. diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h index c32c46286441..dfb956a5ad9a 100644 --- a/include/media/v4l2-ctrls.h +++ b/include/media/v4l2-ctrls.h @@ -573,6 +573,25 @@ int v4l2_ctrl_handler_init_class(struct v4l2_ctrl_hand= ler *hdl, v4l2_ctrl_handler_init_class(hdl, nr_of_controls_hint, NULL, NULL) #endif =20 +/** + * devm_v4l2_ctrl_handler_init - Managed initialization of V4L2 control ha= ndler + * + * @dev: Device that manages the lifecycle of the control= handler. + * @hdl: Pointer to the V4L2 control handler to initializ= e. + * @nr_of_controls_hint: Estimated number of controls to be added. + * + * This function initializes a V4L2 control handler and registers a managed + * cleanup action to be performed automatically when the device is detache= d or + * the driver is unloaded. + * + * This is a managed version of v4l2_ctrl_handler_init(), and simplifies r= esource + * management using devres. + * + * Return: 0 on success or a negative error code on failure. + */ +int devm_v4l2_ctrl_handler_init(struct device *dev, + struct v4l2_ctrl_handler *hdl, + unsigned int nr_of_controls_hint); /** * v4l2_ctrl_handler_free() - Free all controls owned by the handler and f= ree * the control list. --=20 2.34.1