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); \ From patchwork Fri Jun 21 12:36:40 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: 13707527 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 0B31B152E13; Fri, 21 Jun 2024 12:27:42 +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=1718972864; cv=fail; b=HepleDKcWqGL1Ueds+1NIXljU07qW5/pEk8hppcXDi6BfOnj95LnGMghlyTUn6J3VW+sX2QDXaUZtH2Yr2nsGsG1BcMox3TQxJklgnjQobSb3+ehslVbctdCbQXupGL+5fBtt0kHAAjo13b7XUdrjl4t4uYIVFM2/aIOTVTgSrQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718972864; c=relaxed/simple; bh=OeetlARZl6f4IA3VOpkKER3JYN2OcaKyD59/sux/Qm8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=JtzaRTV0HME9sbdOXrmpNv9rsYVtUJPIQyp+YHyOQzkQAUxVx2b7adfTn5gsfKsy//1O2RZlIWvZhZjtlKGl4oETxIVVPHBgwZZP5p6bZOKLdkKTn9lPrLs+Lz6IE7OeDjtC0F7wqLlRKglaNi+rgyt1CotLub8fPm5UUVFPpmk= 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=LxWWUdGV; 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="LxWWUdGV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R1Mi5rCrZHxQVF50gpKYGdSpUQZyE4feQ1zjYF/cxlyr9H+ovLIZlwfCyGI6QJU60nryy7puMrjQVXZpM24W48OjKYDX4aoVwLlXxmIJcdXm+usLH3rWNy7D/+GtwMdzmiFEkA1aUYepRuPROgt2H7prpm1FtQRxRFVd+z8ta/m4kwZ0a7oA1nz3r/aS3J/lc0GCnMIMVA1Eju7HzF9ewx+z6+tRlXW4KBDO79enhFJHNiABDX/nakLPHhVu6YzpEW2JNTs1mZxmU57VH/9hMT+SRFAPZ+SI9Cpw1ps2iODDWgDZ1qvUaYNwZXAq/v0t48AcEk508tynXzwErAFkCA== 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=eyiQwrVsnMvcTZPe0rBLx8z+uz+MwyNrf8caVNyU61o=; b=h76hE0aHzCJac9XUr/LswMbQzfECXkMZydeqyv1aBXhj/H6pxwW0ruHUsX83JRDASs/TlTH+I4Eoa6UdqaBb4biPK5m0+9khm0U2sFeqjuxM4WGAclIk4NyRw20S3MwMSf24btwhHKQhAIrZhEQckHjq2+FWGZMcnEKesNq4tJwXNod3pTkNML70md9/1xw1g5AS/k8Ed63aA8LBpSMKQwuHEVltsJh2Q0QUP5oVB1UgLFCY/o89t0RKAfAnkTmaL1qStX8Y6bVaae/GkWM/v8+0WGSrOVgg9ep4ORHW0ITl4OFYF9vwuAPMQ1aMqXyM6Ni8QW2jZYp3+boks7sq+g== 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=eyiQwrVsnMvcTZPe0rBLx8z+uz+MwyNrf8caVNyU61o=; b=LxWWUdGV493RQ71T3kSP63XD4XfrRDmOLi7ChAg7Vz90WiHgsgXIO3I+vnLNPa9G/U8fwRDkzCa57D1r2W7mRONzLcCwbK8f1FDMZ4vuTKg4sNAkpbQ6nkvSKdTqRZguxjTunGHXrIwkSqpLCeubTbgt1/QXsAzxSc/AM554Qns= 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:40 +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:40 +0000 From: "Peng Fan (OSS)" Date: Fri, 21 Jun 2024 20:36:40 +0800 Subject: [PATCH 2/2] clk: clk-conf: support assigned-clock-rates-u64 Message-Id: <20240621-clk-u64-v1-2-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=3767; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=nHgr1gsCu9pp4IhyTarapb2dgltw/OjZpRyrv87INcg=; b=Ic+Ic0m9UxbaBf0HyzUhFTxJkhkQrLTPwjuZT8aulMsYhoE5KoqkekhzxXQhL0LQRCYYdxvCZ g1GZMEf+m9PD1VVyiznq+VsqgNsFCM3fVtFoH8Urpk5EW/s7pvPDlTY 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: ef9a35f0-fe23-440d-102b-08dc91ed8af6 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?e46cPWWHVGsuuFpDc1iSIiv9YQ5HjHn?= =?utf-8?q?L5IrjPxJzdQGZVWmDGwkRQ4g8Xq++tpqpyIWseFWYqQTotPdqcMg3pz9KvVMowQSh?= =?utf-8?q?szISSqATGV1H7bKY9aZdMJTWBF0v4S5klE8S16iWODn7zHju6dkD8HM+vIn911wsg?= =?utf-8?q?RBV8IfYbpR+7nT+VtWPii3a+9VoFF9kBxcRxsAhWEmUsoM/DO0lqvOXL4zmoIfWlb?= =?utf-8?q?1vNWNw+Q7vSNk7KFyxkZUwqa4dDxxX/IL4dRMZpQy6A7tJlugsW6E1rRDvJ+LchS6?= =?utf-8?q?xjYO+uwfcykf/KA95GQSMiKyw6QmnhzLjRwmEKhO8bdiTMqOWgrLbDUU9LAvLZ2l0?= =?utf-8?q?EDzsZq0bABUarmVFImPwBpC31458JFkkNPUpFgVzDbiQbuMyeHqQtxXJPrvlW+N7T?= =?utf-8?q?uWS+w2MclLtca3WJybVcL5qoOpkCeRHQY5y455vhQY/Wr3Anq7xGtm1/e5h3aHZ7z?= =?utf-8?q?eu/ftjknCl0sxiVjiynYN+z4BBhOymShWm5gXkzwYbpMHy6ZKbwFLVVOQop4q86SF?= =?utf-8?q?7Almw6pGVTo3Eb9Tl0kpeQFviIBdd2rli0SkYRaXVqJs65WvzS2qeSsGRbaIti9ba?= =?utf-8?q?CToSAZv9u++i5dlbBFECnIvG64F/912RpyPgcEG2EX2b+LpViAmvN6Rj50QSNlS2+?= =?utf-8?q?Njm8vvG+1TPS68IddKT3WucoFxicG3A8S9f0Po8s9yUZboea2riGkPY/oINM3iX+i?= =?utf-8?q?c1rFm2D+9l8QbnwxQbo8lnIOroPkFdJYsHCqSeTD3K1cYHcw7JZb+7BDl/2W7QCvt?= =?utf-8?q?cFFoPtidzjVhvmzILqqYfLEr2wNBRhxzFTyMe/hXMHdiNqc+6mItxWyXx8URR+u33?= =?utf-8?q?PZnMP4EBw2pEAGxFmp9RUcjRuOiQXlMMSNf+LfwUHRo2DB7AEoKAnEWL2daHbaAd0?= =?utf-8?q?y136nL6JC+7Gj8NLqcz8cXdVo8ZEaeJ7uuheYFK262QRd3HXJ6EIsSFgeN/1/kQ3U?= =?utf-8?q?Q4S4hjrRTlP1ClHgrjIWmKXt8RsGWt+PbXzYg1L7EtIt9IFQciJICk6Hh+G7wKT2z?= =?utf-8?q?ItUOX2SxCSjJ8c0qOT0hLOdzBu2nh58FjjAkS3IVDTYuiS6OCOJtAEKcW+XAL6p8U?= =?utf-8?q?dKQUuLnpErSWJD25da0PNimog+MOwJIvaH/16Pp0Q7zSqZlfe7wlt3lWh3ZTM05G3?= =?utf-8?q?Ta7qegKijx5spVNYmBtY94JeG4ZSa1ssoP1kJhk5AUh5ZG0zRf6g2Pr0+AOao3Teg?= =?utf-8?q?m6qeJgL/frRnFebxRkWuQkjhX7YUPQit7a1Ui6lPSxbC4c8B+M0JqcxuLyTN8Kz0/?= =?utf-8?q?ZY9JihORsVYQMKqm3GHOtU9BpkPBJD058zLnM/+RbiOXD/kpKQcrx5Lk=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?6lHi2qMEy5/ed3kLPVvGJMz0tNnw?= =?utf-8?q?FPf9d5ClRwgXp+MXsoqtHZdfkZtHoAR/0YMR8xJJEcGQmg4d3MQdwdBgiEG8vMMsp?= =?utf-8?q?XMNqnj0uS3MJS52TlGDZFy513e+8QbpdZW+fFRAuI9tJR2SZVruZOmr+YAV1zsTIw?= =?utf-8?q?28apXQKnxjjngRL2hq1rt5tBB92tDSzpIcWQ4CwdAlFk861nXrRh8+0krAtoPCKz6?= =?utf-8?q?cCfD0QTMA1oEfNvb345KtE1hBe92ZbLyWrhm8gLS2Xs4pKS4ATXwJgrFSu6d49MOM?= =?utf-8?q?RZuWjgGlLDLBCuo+v5Fec5IcjRJxkBose8VFuSXTDJIze8XyXLbSFSuLx6oFdhYVa?= =?utf-8?q?O0SPZMElD17mt9ykCmx90+6SEg6gWeaa1FYP9Kmd5PuLyWgu9D/5LPXASMT7MQ95R?= =?utf-8?q?F/AlUvWeWD1OIGcnkzaC7W8aME5EqOeWcMkMoOyG216aTGuZdEkxtn2VI0DrjWRUt?= =?utf-8?q?nCZ+pNpvh0R7Nycx1DKx/PpNpo++2+1ePxUV9cN0SzjVI38e5nAg00v2JvZu2z8a6?= =?utf-8?q?HED/fcv5GWoQ4wYS3mrTaf7l5OwMl/IpJxWB1qfDNDwbxJyMbTxxnqmkgef0onaCv?= =?utf-8?q?VCytV6haRyQ9BYrryu9TY1q3A3pqDRRFe/a419NEdb4/QF7Jv/qBN+1aIPdKWrFSb?= =?utf-8?q?i9taeO6nznxCP7wkFK6XQca0yQ5EbRdlkzWBmKEU7BYv74UZVu4JjBhptL3mv3wUT?= =?utf-8?q?VjX1h5RoENTSC/9DFD0g57xaqBDnEMrha529JeRiqjZw8GOS39EtsnBeNzuXJpOkE?= =?utf-8?q?X4wpjPL+jfYAfsHW0/hBzAdXVDwZutrZaC0VPUQ8rKnFg/hgy0oxM+3ROGn7B0Hue?= =?utf-8?q?fGaZaL1QIWJ1JYo4yslC3h1T28kWAAA8z/z9ka1xFOWjQCto1jHMEk865tBBMprek?= =?utf-8?q?OVpQAXYgUAqUMBkZnO+E6EyyC7KQz1k0mKtDWBaHurglLYgeei3tBtr7/UpRqPSVa?= =?utf-8?q?bA9vwBQI8LY0aC1MO523VEQpmT2bnXSPt5B3soSJMJ5oQMxnz9ZUssVAMAivmQAzk?= =?utf-8?q?JIfZGvnSSWwpgaRmMQrP42r/lNmHfLxqb52waTVCZxCKJz0K1Yl/OtSB4e78/uf0B?= =?utf-8?q?8Rn7dW9aPd2eZJ7XywADZRbyZd/4Xk0hP+xtKKzqxmvNDCPocB2Ea6y1E7FwcZoB3?= =?utf-8?q?3/KDLZ+PtrnBWaO58oAHAyYoTshvTzlELMMYbZj5eC1HRjmK7hr65AmThMMgeBfoh?= =?utf-8?q?baQaR9STm/ylPqIhI13pFK4V5fBFz9mZJHMoTSavrPxon1dW9Swes1Wa8yHeR6YZ0?= =?utf-8?q?7IzYNWS+j09SQNpaljxZ7JTz6tsZvpmsGISOhNRoE1JDDuPgoCWNpfU2cpj86gLxP?= =?utf-8?q?3gJrWsAecqFcquRNpUglfxSzW3G2GZ8jcX/Jj7Z05UEftCKyM+ZzzxSAoemIua5w+?= =?utf-8?q?Ga1oJbZKJBP8Gt+TmuJmP2kJYqRPRPaSEo4NGrXOU3S7QitjZS5pRsr7AzAwuWBBg?= =?utf-8?q?c5qWUTMCNovhmoib4AKp27Kshrxy2eCwpffUIlqkk8P8bLbt4brYQBJmwM27oK1VU?= =?utf-8?q?OpV1EHYVDMFI?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef9a35f0-fe23-440d-102b-08dc91ed8af6 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:40.5356 (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: 87IemYHLrohjrybm1ud+kiIm8e/JXHKWs/JgOSmnX0Ck+PoFC0wsUV02am1nuHrAsN9FDJzEG3yRJ09xh4MORA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6795 From: Peng Fan i.MX95 System Management Control Firmware(SCMI) manages the clock function, it exposes PLL VCO which could support up to 5GHz rate that exceeds UINT32_MAX. So add assigned-clock-rates-u64 support to set rate that exceeds UINT32_MAX. Signed-off-by: Peng Fan --- drivers/clk/clk-conf.c | 106 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 74 insertions(+), 32 deletions(-) diff --git a/drivers/clk/clk-conf.c b/drivers/clk/clk-conf.c index 1a4e6340f95c..2bb00c859eb4 100644 --- a/drivers/clk/clk-conf.c +++ b/drivers/clk/clk-conf.c @@ -78,49 +78,91 @@ static int __set_clk_parents(struct device_node *node, bool clk_supplier) return rc; } -static int __set_clk_rates(struct device_node *node, bool clk_supplier) +static int __set_clk_rate(struct device_node *node, bool clk_supplier, int index, + unsigned long rate) { struct of_phandle_args clkspec; + struct clk *clk; + int rc; + + rc = of_parse_phandle_with_args(node, "assigned-clocks", + "#clock-cells", index, &clkspec); + if (rc < 0) + return rc; + + if (clkspec.np == node && !clk_supplier) { + of_node_put(clkspec.np); + return 1; + } + + clk = of_clk_get_from_provider(&clkspec); + of_node_put(clkspec.np); + if (IS_ERR(clk)) { + if (PTR_ERR(clk) != -EPROBE_DEFER) + pr_warn("clk: couldn't get clock %d for %pOF\n", + index, node); + return PTR_ERR(clk); + } + + rc = clk_set_rate(clk, rate); + if (rc < 0) + pr_err("clk: couldn't set %s clk rate to %lu (%d), current rate: %lu\n", + __clk_get_name(clk), rate, rc, clk_get_rate(clk)); + clk_put(clk); + + return 0; +} + +static int __set_clk_rates(struct device_node *node, bool clk_supplier) +{ struct property *prop; const __be32 *cur; int rc, index = 0; - struct clk *clk; - u32 rate; + u64 rate; + u32 rate_32; + bool is_rate_32 = false; - of_property_for_each_u32(node, "assigned-clock-rates", prop, cur, rate) { - if (rate) { - rc = of_parse_phandle_with_args(node, "assigned-clocks", - "#clock-cells", index, &clkspec); - if (rc < 0) { - /* skip empty (null) phandles */ - if (rc == -ENOENT) - continue; - else - return rc; - } - if (clkspec.np == node && !clk_supplier) { - of_node_put(clkspec.np); - return 0; - } + if (!of_find_property(node, "assigned-clock-rates-u64", NULL)) + is_rate_32 = true; - clk = of_clk_get_from_provider(&clkspec); - of_node_put(clkspec.np); - if (IS_ERR(clk)) { - if (PTR_ERR(clk) != -EPROBE_DEFER) - pr_warn("clk: couldn't get clock %d for %pOF\n", - index, node); - return PTR_ERR(clk); + if (is_rate_32) { + of_property_for_each_u32(node, "assigned-clock-rates", prop, cur, rate_32) { + if (rate_32) { + rc = __set_clk_rate(node, clk_supplier, index, rate_32); + + if (rc == 1 && !clk_supplier) + return 0; + + if (rc < 0) { + /* skip empty (null) phandles */ + if (rc == -ENOENT) + continue; + else + return rc; + } } + index++; + } + } else { + of_property_for_each_u64(node, "assigned-clock-rates-u64", prop, cur, rate) { + if (rate) { + rc = __set_clk_rate(node, clk_supplier, index, rate); - rc = clk_set_rate(clk, rate); - if (rc < 0) - pr_err("clk: couldn't set %s clk rate to %u (%d), current rate: %lu\n", - __clk_get_name(clk), rate, rc, - clk_get_rate(clk)); - clk_put(clk); + if (rc == 1 && !clk_supplier) + return 0; + + if (rc < 0) { + /* skip empty (null) phandles */ + if (rc == -ENOENT) + continue; + else + return rc; + } + } + index++; } - index++; } + return 0; }