From patchwork Fri Jun 21 12:36:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Peng Fan (OSS)" X-Patchwork-Id: 13707526 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2074.outbound.protection.outlook.com [40.107.6.74]) (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 9F1BC152188; Fri, 21 Jun 2024 12:27:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.6.74 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718972861; cv=fail; b=N63G+MSLh9GXDJp959E7NjiMw2TK3Xn6Ata5UTjVSTF4+R4NbbnV87wSXuGe3P1QlIS4ZdWNzjPzQyq4jg4tjUP0Jw748NZgfJuiBKtHbxhYuqcUb26DTmfNRYJHn7fx744/kQvFRCh0OSlKFdPV/g+kkcLDU0CuqMsylWVBIAA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718972861; c=relaxed/simple; bh=xRvhaZZ3DcQeIyPH+7md57sueeYi3CQhVi/8YTmLZgY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=lcsIooJ0qq5eKWNXQ7NP7yFgm0zSOu12DPJNUm5HpR6Q5a/bt7NVN7tRmWcEQuHK5u84q+oj0rYgH9XV9Nd+OhfwPWOznD3tkDddBBkx9LKZxuPlTE4NkW72GIVSb4eaUF1in+feKUAuh1bFZCvqxWpv0rXLn7DRJxVlz3k2HmY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (1024-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=Jo1XWV/P; arc=fail smtp.client-ip=40.107.6.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="Jo1XWV/P" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K5vG/IkTBGfUHJraHXH7Xy1KQqdDmcXn7E9FaFFwe0IeJ4Y2gYqMtPzfn0eanwKxmCjuTZHBpQmWRSf5hwMgLRxxkwvsMPFmZds6KQVnYnYz13SsLwcTxTvad34aK+4iw8whjbA6LV78YXnXEHTMIcaIUscR09h5cegIRWJW7tHiOHGUIb9eoGM3PyO8Z6pYQ/bOGP9+QdoD9aZKnV4u8BA40vkwPcLDj1vMl6E2erGGol1rjWjkrC94X3zHefLOxdtjf9WQcSvy/kpEPEx0D8ldYs/M6yKUp2giiw2rfoKFeDqOvzfZgPFnJ9R74pNGZMbd6DmgsdTSgk4ZH8DLxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=XhnjjHEPZkyj/I8sdCiVwwGtcqPe795gcKxBrpX9EEg=; b=BK2uIxkuwmbPD09sOCxnKkvbryyNMmKeOGdvY4C9aueWhmqozKkK+slEFUEUZW/Ht7lruTsLFZGFA+kyc/I42/u3c9qmQpcW0ho0WnuGlhetGb12yeYg8AeK2sZ/fYhzHbrvSBXEjnNlV5kucrmQBANhTYN3B0hxvHkEnBz4VuTqPqWMYy7mAP2M88ySaiRrgzgZoZNdE9mOeaLHXbyY9SkWkFQyemxZl7fANTgnRuIT8yE3pmkXQFTxLMHxrKllBzTQxywG3gPosMOW89fGeVLbSTer+fVlU3MCacD5vPSeC3dqvbXIqoHPIzoDjtWg0y9Raoh5Y0l3R3gCEdA8BA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XhnjjHEPZkyj/I8sdCiVwwGtcqPe795gcKxBrpX9EEg=; b=Jo1XWV/PQ5i5Huok3MI5Fa8JHgYBf/sljwxAC7T45Ejy7N3W4sjbDxQIOOR8J8kK0AJYD3avtV7xN50vBXFlEVvcASLeS9aezCZtPJhXCErn1SiC4SRYUf5rLF63EkoxFWfTK3Bx18UDS2SrEG4qokQ+oW1ihetaP0Wey7SnwR0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from AM6PR04MB5941.eurprd04.prod.outlook.com (2603:10a6:20b:9e::16) by DB8PR04MB6795.eurprd04.prod.outlook.com (2603:10a6:10:fa::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.19; Fri, 21 Jun 2024 12:27:37 +0000 Received: from AM6PR04MB5941.eurprd04.prod.outlook.com ([fe80::9f4e:b695:f5f0:5256]) by AM6PR04MB5941.eurprd04.prod.outlook.com ([fe80::9f4e:b695:f5f0:5256%4]) with mapi id 15.20.7698.017; Fri, 21 Jun 2024 12:27:37 +0000 From: "Peng Fan (OSS)" Date: Fri, 21 Jun 2024 20:36:39 +0800 Subject: [PATCH 1/2] of: property: add of_property_for_each_u64 Message-Id: <20240621-clk-u64-v1-1-d28a611b2621@nxp.com> References: <20240621-clk-u64-v1-0-d28a611b2621@nxp.com> In-Reply-To: <20240621-clk-u64-v1-0-d28a611b2621@nxp.com> To: Rob Herring , Saravana Kannan , Michael Turquette , Stephen Boyd Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, Peng Fan X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1718973409; l=2684; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=VQgWQEkZAtD8vvzYVsrC8omPI8Ofhy4Rly8IvK0keKo=; b=ADQEs54+VVKIEpx9O8ZEtAc1p4GG0/8hr876i9vHvdAPJhXj2gGoxzggTx5yAberty8YeLgbU Sp1Up56JaVuCcIFPhKyXGwrVLP8VKiMbqgapV6/39ObFVBUUNwXkF7E X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SG2PR02CA0124.apcprd02.prod.outlook.com (2603:1096:4:188::9) To AM6PR04MB5941.eurprd04.prod.outlook.com (2603:10a6:20b:9e::16) Precedence: bulk X-Mailing-List: linux-clk@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB5941:EE_|DB8PR04MB6795:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c2077ab-8588-4fa3-3bbd-08dc91ed8921 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230037|366013|52116011|376011|1800799021|38350700011; X-Microsoft-Antispam-Message-Info: =?utf-8?q?J1/S5ag35kY6U7Cll/NrUu3WIwdFC3v?= =?utf-8?q?aCDzf5UtmbkRqKjeAf4OJ/fNpQ0Pj7qzOFdqzLEpNXk49GieW5xnh5YWPBc0mUq5Z?= =?utf-8?q?YSrscIPugrJS/h3ZRrt/umDQ+UOW50g/T9zbfgZGTYymgr6ypVF1915tu5LB5AECU?= =?utf-8?q?8JoyLATgCczb5g/c1qPm6qD8xezM3bvhvAvSzyI4c7/zakVgIxQAfCa9eK7T3dkR0?= =?utf-8?q?FKed2uCbKpeUHIC2ZQG4vzXobRYCJr+IxFPHGdbgkTLTD5DoHDV54wyYIOJBYCZP8?= =?utf-8?q?uVDT0HG6PWXmWFnkB+NHR5tMbvRACqENiFw4aJkrMBHj7cq1/ey8CWp7rVrJTb0oN?= =?utf-8?q?aQM3NvICpW0NA06VC/C60NnSzG83hvpHfv3ug0G8wLi8mMpRpWPOVwemhIqWfcJ86?= =?utf-8?q?AMnT0a5G8G9WSM+yHEZsRTtoZuDHLTLFZfnvMnLqGqjDwwEXkunKSHL5MkiTS8gvW?= =?utf-8?q?1QuEhvFKn8uzeZj055i+O3OI44h4MOyZbTWEjeSK/KUkHlCCO5ZPphcGJd4MAbG+h?= =?utf-8?q?VRmHxBqypfG2vxtih0U0HpvTop8VgniCHbdWTqpgCiCqZwCdTBqityEJZWXaPOVCl?= =?utf-8?q?2qqTPj+v/sqzG9WvOtsFlGv1WvQimbwDZUzetO3GwGkbsrRrO61J53CdgFD9ljaa7?= =?utf-8?q?tdoWG0Tv5MQmeOAjFRVXLzkUatqz60yQfyL7UHiUewtX1lFyAyJ+0JlJ+jVsLX2aY?= =?utf-8?q?O4lvz26qJHz+0clOhhtDmAgdyxxO6UVm6MVXW/lbOKc6aiLTK1/8YYxVLFR7xaGaC?= =?utf-8?q?1i1hsg9jSvewNAek//xOGCoAZ6xEhDoeLwFmOIgZg3CUqwUfPLAYc2sIH6esa6W2z?= =?utf-8?q?+Q9qtzA2zruztU1gcXKTpgtxlKbiB3ZqLaHAJVZoCJURxy5nSmhWr6MHcKP9ih/CT?= =?utf-8?q?wTjt94O/pGc6HZcspAUbTR2trJZKRr+5IWRkr5qCBHZu7JEJg610Jcb7aLmqRhkPl?= =?utf-8?q?PjpHayqnmy+yjpp6Ost1IdKGIAAIr5GGKyepTQaMNjWClTbopAEeKC6t7rfwjXmp5?= =?utf-8?q?us4satKdsQpsswz0jGet0YMutzJPj1HPPTTIz4urT8rFq2zyfi7Nd8oYkkqD3Cz2N?= =?utf-8?q?WgrBqZnUbsmDpL7o7hylQfalPvbI5rarVW5xT8vx3EPcuXNaRPf4c47s1V7vDfW6x?= =?utf-8?q?bBlvFoxTiQ14z/Z6ZryS3TuIM8km50egggnkSh5JWZkGMEerx4nGy9URSda+eBU25?= =?utf-8?q?9kzBT4KNL9lC8sCqQJX5CRcUKsRBjqiudYW0L17HljDm9mdei6sdbrr6B9DUBgi/X?= =?utf-8?q?xY8f3FNQhS8Qwi5F6d/fwP9BAQuo+Ri8Q4YyQyvt4YFkbaFPSqFhRDNc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB5941.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230037)(366013)(52116011)(376011)(1800799021)(38350700011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?YuqQenEBfyQjl8rtf0NmjlF9Tqug?= =?utf-8?q?WQh54rD8GDOs2XekRhbBckfbTW17TdlfTjuZoulZpf/5q/VLwomZruZoFemA7AJ4G?= =?utf-8?q?0bfolMxxCfot0ZkfKw43kyLWjPcFlLWOw1gozeJpHF9iz8zc6D/p8jl8yzJppPSJ1?= =?utf-8?q?3jhfIEZYNOaXJ6Lxy63lKDM9/O+vPJZ7fG3VwAJL9aFncI810sY2w62xcR0X4wGil?= =?utf-8?q?RZ2+1H3TqA9bHAz4YdOWGsa04fjrOWJUiAtFXYE+CUAsEX0cfkgTWHLW+6Y/+jpQa?= =?utf-8?q?cogrs1lNwEFEWnQM4BMNfE3Sp4hg/WlHoifnCEAz1ocdLvAHt24HZYzjh95+BaSHP?= =?utf-8?q?qNjAK8Ln10C7SNXGAaQxKdN/nzYyTDB4CbcF3emxml+JuaBxtm1CKkIMHl0ZCnakQ?= =?utf-8?q?hP1vCDAzC2eGCvi32RkZzujE40GrsAlqZY9aVVqAwS0AYLNoalXYGQMbanvGcgUJV?= =?utf-8?q?MZBdhEdoH6UZyYxDLAcpL/f9kxEDXx2CJTL3OY2NqcrFwXtCO1Tvwmjf/gIq1HAD/?= =?utf-8?q?WOsqZILKJDyGGQEixBYFca74sFvE21atcJP1WYGeHI6NQHTNB8lQfTXkoJT8P5TXs?= =?utf-8?q?NRFbRoOSLfG1myi7MaCpJ5DyXXG+7P7om9Y2V96apBPYxCUq/2NHbR27Z8U0ibDBK?= =?utf-8?q?OKd4AfapH7erYTi3FkFaFFKwnnYNFn1SkSjVqJnLvK93zVF3tzTt6KjF9WKKS/k3E?= =?utf-8?q?7nffz/FEa7BX4SfebLqzwdoJEWQe09OGhO3dIA59uQ/xQsuZdQPD39o2+cZf5AxNJ?= =?utf-8?q?uPV2sVHko+yqsnfk+aRUr15H3R3a3CiRnq7AVPW6BggN6Zk995/bCn/xmODoBa3D5?= =?utf-8?q?cp7w+D8PmHxyBL91kDkdUJQychIdU4JLCeWrGpQPNRyY1lSmRCoi2JDQky3/L+ERs?= =?utf-8?q?FzpAWu8+Z/EAbq4UTXTr8w/TkVnNpq8LTJR5Duuh/fKP1Ekfb9I5ClN0lvVbjfMGm?= =?utf-8?q?u0QRP3XFoNUsODgQk/e3dTMUogntvdtu3y5uM+mkC8BdaSDGbSBaC6YcLz7eYHO+t?= =?utf-8?q?qw1dR05ffeBRc9ptHwFbJDOzj7xa1lN2g+BnW35tXcAvSt+YAf3BiwKddyVMTYlTA?= =?utf-8?q?62+AJ9hNOtQkUwBgrzwFKcXAfoVvz1cf7ciwIlh066g9ZMMausYSE4HAQKs/Iw4MD?= =?utf-8?q?qCQ8IaVB0YXw8RTSmM6VpnqOZlNJ/cJBbwCxeDFrTpqMvl9ZNLhUQNNqAIQG7AvGx?= =?utf-8?q?XrM/D7KCu+vlcXLELBWJi5xAvO74j7GlhCN161Mc+NokTZ5KaE4ItxQKIHG3McFPN?= =?utf-8?q?+IFftOMimvH2mKDjUxNXVEelI54+xRD2UfiTyOy4l5q3xNiEtHVWuS0CRF83eaFYP?= =?utf-8?q?SQKwh/lvH3AIZkCSZW4lR+McLDO95QaXXER1amxBk+f7Ft0/jBf/sb43RAq+Y9Dww?= =?utf-8?q?IaxJ1krXLXM+lc4iqVr7VjpJgoPjb6AurtV5DWvrdAT05DpzeGud4dBSkoBI9p6iv?= =?utf-8?q?bVmWuAqjD5sbG+UJjcnisil6mWScgzcEwo1GKcgMygk7Ym6Q8feC4BE7qkkCD4jqu?= =?utf-8?q?lTca8oinUGEi?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c2077ab-8588-4fa3-3bbd-08dc91ed8921 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB5941.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2024 12:27:37.5179 (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: 7r2Cf1gx3u7knY01ib84ba+zQEWSVHEOeJ/fLEmUPwca84nAg5N1iAKGrcYKwzoQlPsT7GSZvFG9jcEi76iUrA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6795 From: Peng Fan Preparing for assigned-clock-rates-u64 support, add function of_property_for_each_u64 to iterate each u64 value Signed-off-by: Peng Fan --- drivers/of/property.c | 23 +++++++++++++++++++++++ include/linux/of.h | 24 ++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/drivers/of/property.c b/drivers/of/property.c index 164d77cb9445..b89c3ab01d44 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -548,6 +548,29 @@ const __be32 *of_prop_next_u32(struct property *prop, const __be32 *cur, } EXPORT_SYMBOL_GPL(of_prop_next_u32); +const __be32 *of_prop_next_u64(struct property *prop, const __be32 *cur, + u64 *pu) +{ + const void *curv = cur; + + if (!prop) + return NULL; + + if (!cur) { + curv = prop->value; + goto out_val; + } + + curv += sizeof(*cur) * 2; + if (curv >= prop->value + prop->length) + return NULL; + +out_val: + *pu = of_read_number(curv, 2); + return curv; +} +EXPORT_SYMBOL_GPL(of_prop_next_u64); + const char *of_prop_next_string(struct property *prop, const char *cur) { const void *curv = cur; diff --git a/include/linux/of.h b/include/linux/of.h index 13cf7a43b473..464eca6a4636 100644 --- a/include/linux/of.h +++ b/include/linux/of.h @@ -439,6 +439,18 @@ extern int of_detach_node(struct device_node *); */ const __be32 *of_prop_next_u32(struct property *prop, const __be32 *cur, u32 *pu); + +/* + * struct property *prop; + * const __be32 *p; + * u64 u; + * + * of_property_for_each_u64(np, "propname", prop, p, u) + * printk("U64 value: %llx\n", u); + */ +const __be32 *of_prop_next_u64(struct property *prop, const __be32 *cur, + u64 *pu); + /* * struct property *prop; * const char *s; @@ -834,6 +846,12 @@ static inline const __be32 *of_prop_next_u32(struct property *prop, return NULL; } +static inline const __be32 *of_prop_next_u64(struct property *prop, + const __be32 *cur, u64 *pu) +{ + return NULL; +} + static inline const char *of_prop_next_string(struct property *prop, const char *cur) { @@ -1437,6 +1455,12 @@ static inline int of_property_read_s32(const struct device_node *np, p; \ p = of_prop_next_u32(prop, p, &u)) +#define of_property_for_each_u64(np, propname, prop, p, u) \ + for (prop = of_find_property(np, propname, NULL), \ + p = of_prop_next_u64(prop, NULL, &u); \ + p; \ + p = of_prop_next_u64(prop, p, &u)) + #define of_property_for_each_string(np, propname, prop, s) \ for (prop = of_find_property(np, propname, NULL), \ s = of_prop_next_string(prop, NULL); \