From nobody Fri Dec 19 08:56:28 2025 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010031.outbound.protection.outlook.com [52.101.69.31]) (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 8160723C4FA; Thu, 9 Oct 2025 03:48:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.31 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981721; cv=fail; b=SDcUeKA7iw1hqjPCr9XOcgcrHJZlVoen/C2X9MzVkwWVXmFJI936yqfUsgvWaA2OM+GG23d63dmn4dyvxxLnvAEqHnHGrl5+LUj3lUAs7CYfza6B3A0oXh/k8ngE2XQxS+IEzwMaOtY5Zy4YC3aE/MoJmeDAhp1F8RLfknxdI8g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981721; c=relaxed/simple; bh=mIhh1SfmGIhVhlQDSG/qcFdMpAQY1Bw0eKnar9KqTT8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=CrCAvaR9WuAsHqsD5l3/HxG0CtMUCICITp90rws3VPTWnbsodFuJ9tU/0U8PgVKLrD7VaxlpmMgGS0Zt5XnKSsEwpLNhp3TT6rTcCC8YY4YHEKp5tmrGzgBGCYE1XfoTCWDnrI1TQ9RzULAvXSgiLWT7Bl8RsREm/heKruyQbPk= 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=dTJxXqAM; arc=fail smtp.client-ip=52.101.69.31 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="dTJxXqAM" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nHdTcYIxhW58RvTPBE562bWfhIFRaFuMhvYqe6XmIDJlj4ZdFg7bfZqaS9HfW00TWKMIbaKuATsFP/l8iYaptSlfV26aNya/mYx0pns/GhL+vCAZF+jSriwJKWriAYS0q5gVe//kVypAk4esi3pf0zRLzaoRl4hn15qUrsBQHt06ryNVOHCtxRPcLvGVu9wOJSdk8oDA1KdiyIlLiigiU1XTR0g7AKXNE1Ev9k0BwlNLTWKb2rMZbW/PcCZsKOpVmkXHol9HEEz81W90+sQx7l9sUkkDj4h4N+rImL3HBixog/aE6ymNXnSKCcL4aJUPZYO5JTur9eVJ6G2pEw+eNQ== 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=CmvRLlTUnfvGhOyB+z+wb2wR1vDLELekbCKyGRm29v0=; b=hXNY46eg4yCjP8hGdOfeGPGzpTv5h7tmX6GdR3FJ9fRAxStr40s0NJ1Rmtug3uFRDrXaAr6EreS/ugDzCuC3dlAEcPKyRhKaBQDWMRHm3NTYcXn0dEN54DEBfvK15EMS/RbLH1GHCEft1edtU8I2MPyAh21nDNKjY0/BjvK475s7bKFNnqAw8OxJwD3P1hXlfkCY/8LMQ/IFrOuFC3g6KRBTLwVncEtA4B1+NI63wAws3GXCeMwHENIlGUSO+Ch693bVkms7VUYhsH1tbr5fSWCf2xQaTjno7SKydhlHpBBQp/YoYZ5EjEN3jzIAX+enCgu3vS50SH2ihY3LD6bMhw== 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=CmvRLlTUnfvGhOyB+z+wb2wR1vDLELekbCKyGRm29v0=; b=dTJxXqAMAjScuqwDx2NaSbhuRWfKtVAGe9VGfVr10euX5IME5jfGjj7RwQW981BVeJogmBNt1q5tsWDYjhmAdyKwXmPZiMvBH0Lilw1uJNRax4RBTyCD3Faxx4n2q8Z3JU66Tj4T+G/ISf/eQHaTIUhjr0s3/U0OZ5asDkFESSI2Xpu4mOPQprkf1pEmvrnC9xEcQQQ/gnJhg7V1Vo0JPuqM0MIj10moUEdFJwOVjtcU//1bxHLx0NfYycqa+7PZCqdSTNzwWungNVjgrF4yKeXODtQfajVQsLrbzPEZIvYYSat1Qh/0R4U72dBWOFFGWc/+wurWyhxHYlfFzzvm2A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by VI2PR04MB10217.eurprd04.prod.outlook.com (2603:10a6:800:228::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.9; Thu, 9 Oct 2025 03:48:36 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%4]) with mapi id 15.20.9203.007; Thu, 9 Oct 2025 03:48:36 +0000 From: Peng Fan Date: Thu, 09 Oct 2025 11:48:14 +0800 Subject: [PATCH v5 1/6] dt-bindings: clock: Add spread spectrum definition Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251009-clk-ssc-v5-1-v5-1-d6447d76171e@nxp.com> References: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> In-Reply-To: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sudeep Holla , Cristian Marussi , Sebin Francis , Brian Masney Cc: Dan Carpenter , Geert Uytterhoeven , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1759981702; l=1034; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=mIhh1SfmGIhVhlQDSG/qcFdMpAQY1Bw0eKnar9KqTT8=; b=alrWgu+j/dMSjYqGlnT5DfeiOQLaBxJMZWL2/nTBRU6Q8KW2qHx0Qf2YJjCpUY08RpmaA2tGn V+QT4rabrLOCKi9gK1QKhOe/QXRbFVaak3Q4fosRMb+ePqln13CHerz X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2PR01CA0031.apcprd01.prod.exchangelabs.com (2603:1096:4:192::11) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) 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: PAXPR04MB8459:EE_|VI2PR04MB10217:EE_ X-MS-Office365-Filtering-Correlation-Id: babda4e5-d5be-41bf-3248-08de06e6b98a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|19092799006|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Mi9WeEhWNUZZMGpJT1BJRkxkNDNjSU9ZQmZBcnptMm4rOFZTZjVlbk5TS1FG?= =?utf-8?B?d09NMVIxNGFOdHdWYWg3U2dhdHZ1Ymxtam9xN2hndzFYenZvOEx0NDJOenBR?= =?utf-8?B?ZTFzYXJRY0ZON0dDV29iMyt6WFkvcDFFV21reWppMUluZlhPSTZ0ckVFTCtR?= =?utf-8?B?WGFWNUJxZnBadjUwd0JCUXlIK1dyUkJZeDRLMmFrZUppWm5Od2g2TnVJM0Zz?= =?utf-8?B?eE1WL3M4RlN5bmFWWmNTMW1aNGZucDI3N0pYQ2RzOFlKbVlKNXdma2xhV1Qz?= =?utf-8?B?d1ZoMC8zcEZyVmtyUUVBNTV0M2JTQ2VYMHRSOWN1MGpqVVVkQ28yd0htUzRi?= =?utf-8?B?VVErREZlWms5VWRkWGxEbnIzem04bXFXS2prOEw5M01YcXBaTCsvM25FbFB3?= =?utf-8?B?M0RZVk1hRGJMOVdTUlVMbmRDU2huKzM0Wkw3ZXA0NHJTK2phQnp3L042a0RI?= =?utf-8?B?cVUreVlETm9MQ2NVQWppQU0zaTJQeHR3US9xa2JWcnR0Zm1TZGZKVHNHUE44?= =?utf-8?B?T0l2SzZOUTdDQzMzZnBSNFdGOXllaEY5Y09UblRXVC9HSWMyTTI3aC9BKzZ0?= =?utf-8?B?OE56OHJRSlBtREZXSFVqQ2JTMmcwb2ZYdVAxR21nSkVtdkdMWDkvbmxHWlk1?= =?utf-8?B?MmRjV3pXaC9KWWI3S1hqRFkyZEY0dm4vOE8yczBHYzJHN1ZZanMxYnRTY3Fn?= =?utf-8?B?b2E2ZGNCaytOYlUvTURLMmNxS1UwSlYxR0ZkN29SYUNMOU9GSjZNVmdQVU9o?= =?utf-8?B?Y1Z0MFAyMkV6bkZVQUdKODFCSmNteTRMNDNlRXdBTG90TzdZWnJ4VG1jRjFh?= =?utf-8?B?WWVDcDhORXRkb09lV2N5ZTRYcG1sN3ZlRmp0djRnWDlFdisyVlpwdm5Lc0g5?= =?utf-8?B?RHRxbU85QVFtNXcxQ3ptQjg1dnVicTI3Mm1sSVpOL29uQ1cxTTU4SzZhVmRu?= =?utf-8?B?M1lwWi9YTDluRU51aU12OUpaMkwvcmZ1UHFlcmk2bTZ5aDR1bHhrZU00eTlE?= =?utf-8?B?UnZ1Q1Y2eU0rZGhCdE01akFyemlNTmlFRXhsbnpidW0rcS9IQTdnb0tBZDMv?= =?utf-8?B?VnJtVlZEWGpVcW1odFd3eUxCb3ZxMGdrbi9nU3FLY1ArcEhyUHJlcHFkMWRU?= =?utf-8?B?S1FEQ2xYRnZJUmFHWkxOOGlySXI1SHB5ZEtMNjBXU2ZTaVIwc2pRenZSczRW?= =?utf-8?B?Tk5LK0RhdkV4c0NzTDljeXZUR0NYTTlyWmhRKzNSVXJUblFxYVZHd1h2eHJZ?= =?utf-8?B?NjRneURqbHNoa04rMkxHWml6NWMrRC9RTFpjTnNZV2VYcnd6WENzMnhNWjFW?= =?utf-8?B?Uzh0UlQ5WmN1Ym1MZ1dUdWpKbzV1M2FmU0lLam9ldXAxT3FTbmZnOWx5OC9F?= =?utf-8?B?d1RSZmtBa1hCVHdjNXdMYTRlU3ZicWZrWFJ0UFZYZU04cUxnblF4ZGtzZGV2?= =?utf-8?B?aUY0R3ZSMDhJK3B0MXdZcS9QK2w4dVphaW1IMjR3Z3c3WUtNVDErTjc2K2R6?= =?utf-8?B?bk4yckFQeHI1aks0dFRZdGJRV2pOcSt6bVJ5R1VwbzVpQmo5NVdWV2c2amhP?= =?utf-8?B?OXJUcC9GN3h6TDNXOFd3V2oxRjZRdHdlN3lNaHg0NzJFZTJNazNHVVp4NGd5?= =?utf-8?B?YnZuRk1qQmEwTitYYTV3Z0xvalRtZlF6aTErWjduNVRaMXNMN01JMXBWTEVR?= =?utf-8?B?OXFFaTRYNUlNU2tocVlQM0dQRHlKUDhwUXB3ZUErVFRrVXVLVEpTLy9hdHRB?= =?utf-8?B?NDlFMzlXUnREUkk5UVhyRHNVMjNFSDJKV2hicHZoaFJQWlN1bzlMY0xHL2Z4?= =?utf-8?B?YjhSRDFOcDhNL0xPM1hiR21WYnRZMG04a3M3aUROcGxlUFloL0I4eG82Zm1J?= =?utf-8?B?ZVNnTFF6R1JZZ0xlUUI2YU9wUEhNSlZBcmVxelU0YStFOFAwMWlVcjFDVzFx?= =?utf-8?B?cUZPSE9YUTBHanVmSjVaYjNYcjRGQTZmajN4SGR1ZEdvU0IxZ2djUWJmTnpG?= =?utf-8?B?NEZ6UkVqVk1RdHZTVkJVS2o3c2JNS1IzYWo5M3ZZU0lUUW1rSDc5ZUF0U3hy?= =?utf-8?Q?t5e322?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(19092799006)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cU9qMmo2eEhUY1p5ekdWajlleUVuN1RIQVQrQk5zZDR1QWlNWmhMeEpxTGVX?= =?utf-8?B?RzdZa3N6SjBFdDJPRzVETkYwVDJLd2lTUHVxREMwOUJnUHRsUHVrR1pkWDBR?= =?utf-8?B?cGFQUHI3d0ppS3ZUUlNvWG84Z1g1M0RGV3FwQkREZm4yOVdkcnhQaGZ1M1FY?= =?utf-8?B?NnJqeittN21TU0VPQ1VqNmlZaUwyNE9jQ3VCbzZLQk1Ncm5paU1LQXE2aG5Y?= =?utf-8?B?QjUwblc5V3MrOFR2djRNQS9ZNm1qWDB4TWx5WDBxUFJ4N3d4bE4xa1FYQVNt?= =?utf-8?B?VHdaNlJiTFFESzFkblFzK200VWdEZGVIK09nVkVpSllMam5USzk2bkYrMWRG?= =?utf-8?B?UU1nTDEvWTdwcko3WTZ4MjYyM0VTTnpaaS8vNFY3Q1RRMktkbEsrWFg2NmtP?= =?utf-8?B?YWNXWHJiakYybktMUnI1NFNWak4xeDZNN2cva09iR1NpMnNSbnJSQ2l6QVho?= =?utf-8?B?K0RaUHk3S1BQVUNMaDlsR0N5SFpxR0hhRDVna0JNOVlDTGJoMjJ5aGNFMnB5?= =?utf-8?B?bnBVcU9QWEZKRWx0V21jMmJpclFvMlk2c2phR1pSdTZWMmozcEtWTWVWNzFu?= =?utf-8?B?cHpYNkJBcW4rT1VuVWhFdktZT0tFN2dGZ2tleERsQ01wWml0cTZ2bEh2M2Zn?= =?utf-8?B?a3pEaXIxYi93cTdpMGM1eksrVlJBYmNBYU9UazRzdDBtOGdZbkt4Q0ovSXhz?= =?utf-8?B?Y1NaRE1XZ0Z5WjIwQ2lhZlE0UzZ1eTV6Wk5VMCt1ckVvcUdJZzNVaHJpMlBv?= =?utf-8?B?ZW42RXpldGZONzZMRjRJUGtOT1Bra0lVQjc4QTVaN1UyYTl0alA1VGxsYTRG?= =?utf-8?B?dEcxKy9OYU15akNIbXoySzNEbW5yN1lMOE9VdWVnRzc0YnpTUW9ieEsvK01j?= =?utf-8?B?YzN6c3hHYk9QOFNLTitQS1doVmw5c2h4anE0eHBvVnZEN2hQNjNvSWlRYlRL?= =?utf-8?B?TGpidzJUeXNBcklpWEowUHJOald4cXFjT1Z0UHpyL29KSXViTDI1VWVIZWhv?= =?utf-8?B?MHlNcllDOEtFMFN5aDB1RWw0SlBMOE9SUkpad0dxYzYzL1RyNFF5dDRzUzl4?= =?utf-8?B?dFN3bEZMZi9vYmdTVkhpYW1IRUQrOGt2MDBlZVRHdVJqM0RmV1pJckdBWUl1?= =?utf-8?B?OVlteGgxelFaYjZpNzR1TWxuU2Q1M3VaR2RQYWVmcmJEZmZ1aXM4VWVIdm81?= =?utf-8?B?cEN2RVAwM1pTaXI5d0lqZG4wWk1ESXpadzNwL29FaVl5WVVhSU13MXFRWkln?= =?utf-8?B?citPcjdITUF4Uy9QTGZYT2NKRVMySy9DYzNIUmJoc253b0FPQ2hTS0JPSWdh?= =?utf-8?B?Y2ZqTXZnbGFuRXB1TWw3OHJnZ0pOUUkvVDRUNFZTMXZEWFBBUHl2WFpsUm02?= =?utf-8?B?WE1NeUwxVWZYeVpmZ25WRzVXKzdsN1I4WUhvZ2hEb1JyRGl6Nm9qNTRzSGlt?= =?utf-8?B?dVJ1ck1WbXp4c09Cbm1Xa3p4OVFBRUlUVVd4MjVuZ1BWL0g3SWt1MEc3bEJH?= =?utf-8?B?UkNNTmdFaS9nTGpxa1RjcUh0ZE5ZSStBWTkvSjFYcmFLZDNxWXVsNWxzZGxz?= =?utf-8?B?UlFHNTZqcVlhZjVHNnVoV1FxQTMxN2NUOVNOQmhhUko4cURycFdhckxQSm9Z?= =?utf-8?B?ZmNaLzRkaytJYlovK0prK2pnbnBFQVYrTmRBOGI4NDdyaVJLQk9TdzRFZ2l5?= =?utf-8?B?Z0l4eWNwdWZlWnB5RjUrejVyY2I4NENxNytWclZyS2lMclA4OVppcVdFckx1?= =?utf-8?B?Zmd1Y0d3aUJVM243VGVkQzJFRkE5eElLSHFiQnU3QmpXQnVtdy94eXAxdi8w?= =?utf-8?B?YnhUWHo5T0tUVXFhbzNKaGgzQnJOamRxazJDR0pUS1BzdUxCT25BMTZiaDVQ?= =?utf-8?B?UlRqTEdNWFJrTTEvZVZOWjFJYmRiK2I3Y2FKbUcrckRKd0NzcElrcWJYUE1q?= =?utf-8?B?S3RrTk43U3FUNlVZUWtGeXZuYkVmaVVPR0hQNGY2REsxRU1qaURGdk9jd2NH?= =?utf-8?B?SUlrT3NQdzJJMkFvTkY2c05JY2RnTG9sK0tlaWRYWHExNTk3Ym9jZ2hNcGIv?= =?utf-8?B?QlJGMkl1WUN4aWpON3RHWTh3MUhSSDhtWGVzMjA1SWFHdGVBOVBrb1RoV2xa?= =?utf-8?Q?IbWc+ejVs7sMcaHrPK91dR2J+?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: babda4e5-d5be-41bf-3248-08de06e6b98a X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 03:48:35.9416 (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: w0CSECP/Q6ibmm/+GoTtAPpmL912dupvKk9mwYru3mWdz5VilBlIBmQHVfQgHbIYro0alviP717C93GbKNV4EA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10217 Per dt-schema, the modulation methods are: down-spread(3), up-spread(2), center-spread(1), no-spread(0). So define them in dt-bindings to avoid write the magic number in device tree. Reviewed-by: Brian Masney Acked-by: Rob Herring (Arm) Signed-off-by: Peng Fan --- include/dt-bindings/clock/clock.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/dt-bindings/clock/clock.h b/include/dt-bindings/clock/= clock.h new file mode 100644 index 0000000000000000000000000000000000000000..155e2653a120bf10747bd7f4d47= f25e0493e0464 --- /dev/null +++ b/include/dt-bindings/clock/clock.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ +/* + * Copyright 2025 NXP + */ + +#ifndef __DT_BINDINGS_CLOCK_H +#define __DT_BINDINGS_CLOCK_H + +#define CLK_SSC_NO_SPREAD 0 +#define CLK_SSC_CENTER_SPREAD 1 +#define CLK_SSC_UP_SPREAD 2 +#define CLK_SSC_DOWN_SPREAD 3 + +#endif /* __DT_BINDINGS_CLOCK_H */ --=20 2.37.1 From nobody Fri Dec 19 08:56:28 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013041.outbound.protection.outlook.com [52.101.72.41]) (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 116D423C4FF; Thu, 9 Oct 2025 03:48:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981726; cv=fail; b=vAjj9Kyb8ADK7N0B3d3ji+1IEafcYgZWNzJ/8JkfTA2XM+Qrk/9s2pVwFShciWScbdvEt5n6T7MG3tRorXwVOne03j4e/pi9cvGYTjoXFmhWQ/7mfr0FWIGefQ/bEOB7Mcc9DnNO7lMAfc68IlqoZdAl0ggixwPY6bu5DZB4YRE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981726; c=relaxed/simple; bh=LMMWz1Rjdrmydxqbxi44qTT4bO+jr1eCZC17C4TuEIQ=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=ltHuiyaUmrPXckF5mJ6n6X0ZVLZi+j7PeA+Cy+vlYo1LjUyGQj6MxY5f5ONnC0R+9lOzWV9UgfzxotsPvleoO5KtpjbH3Z/2N8k7hPcgB7LYzb7tAj2+9oDtRLY5c2VxZQluPiYPgz4a9qWhWrz6OssR/0r/q2mF+LFc+rIQIjg= 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=nlVkLM0q; arc=fail smtp.client-ip=52.101.72.41 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="nlVkLM0q" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pCx32W8Z0d6KQIPREUJlsOh4FrshQ7cmxJSuJIVEMPpaPBviArjXeOdpVce5GU06N0Y0Eq07baGYG6xBogpcJ1CR4VbIqtICvevaQAuuzAGwXDPuH8+SwtoI3kLEVmDyAfi5T3D7E4xbSLs9WCYTHjQq4IkX6mNYHymSKxj+bGMXEQkqMJ/Jc3P61PCMw2a6eLemU/n87AILe5CA5X92EtEzHu8/jmdpJCBZTC5q2HE3iX8DVJ5sHJXS1onMC/3C+I/SPXh26LCZQ0bh2fSeuXP2yPeg+h46WyyZAM6rKgpMOPR7FBNLgonaae+2oKu1MjNq59OfesTk6XuqCjopug== 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=M5e/q+62StXU5LrlUiprYrNmetBl2i6Z7poJOrmjywA=; b=lUMcLU60FCkYN24ZW4bbnFaFwZVeaost1s0yRZ5ofq/BwIf4cxmDZie70m+hguQWFry1xEgT44wYt+rukfehIgyZzggItg0aK9EvIugR3HefThwcqlS6EMHJISkRWMaGZM1Ojg7f1c/OhY8KXaQGWW1idkNy41ZTlnKlpcwD3W4r0A+YyczqgH63G04CwfJ6BCMUNqOUqmH1kAkBU0G6szj/qW/3mZzqDsWLIy9oUh2iHqMZgxyhv+ZJrcvoXohrwlExqayK18vy+EifQAxwpVhmfMOWtbElPbNb9HKTYSmKN0b5F/j4q4mY75+JiDDtBhnb4QGsi2px11jhNvNB2w== 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=M5e/q+62StXU5LrlUiprYrNmetBl2i6Z7poJOrmjywA=; b=nlVkLM0q9hSSxnjU2bvhtlb7Tp855mGDAtW1sguxQHHBe+VcDTM5Pu5F5xn30eDzFl3enMdrB2tPprJWZdeXbbOCigCDZ7E8LyvKd/o0ZElBFlDw5jgGNHb8QpwH+deyxEhAt3SNgSqLc+4UQdGiuaffVmsKmdnQmcLu/D68crD0K4r8zS77HxOq8sFP4fW0klkPITyJCMHB/eH4FWLwQCkqIArTPBN0XL9z/Mj0oHY4KnxymS8hbJn9/XQ9U1GPdS87OeefN3pI4R5mWiwI3oWlZCDJb33BALAcJ3KaUNvk2jwYVKqQe18Ooao14l24Um/iBYIP+QfMYUkIVPzMew== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by VI2PR04MB10217.eurprd04.prod.outlook.com (2603:10a6:800:228::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.9; Thu, 9 Oct 2025 03:48:40 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%4]) with mapi id 15.20.9203.007; Thu, 9 Oct 2025 03:48:40 +0000 From: Peng Fan Date: Thu, 09 Oct 2025 11:48:15 +0800 Subject: [PATCH v5 2/6] clk: Introduce clk_hw_set_spread_spectrum Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251009-clk-ssc-v5-1-v5-2-d6447d76171e@nxp.com> References: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> In-Reply-To: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sudeep Holla , Cristian Marussi , Sebin Francis , Brian Masney Cc: Dan Carpenter , Geert Uytterhoeven , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1759981702; l=4024; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=LMMWz1Rjdrmydxqbxi44qTT4bO+jr1eCZC17C4TuEIQ=; b=mnW6Ew6neDJ5qD9xxeSdojdbAagas0Q3Lt0OLTG42hUpJuFU8PWZ2+rtHbc2UuZluwEr44eFo UHdlInYnfCdANyJ565w8NucNzWdBLoKZmIkyliXwwEgPaZwRmpidLNA X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2PR01CA0031.apcprd01.prod.exchangelabs.com (2603:1096:4:192::11) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) 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: PAXPR04MB8459:EE_|VI2PR04MB10217:EE_ X-MS-Office365-Filtering-Correlation-Id: 1443f7ea-9080-4e10-e1ef-08de06e6bc59 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|19092799006|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?S05hVlRtcWtvL1JRSFJkQzNCNHJlZi8zdnZNYjNRalM3T09HU0ZGOHd4RzJQ?= =?utf-8?B?WElxSU1zQ1prVEI3azNHYzhpa0ZwOFlNQUNsbTUvNkx6SU5GcDFjMzR0MXZI?= =?utf-8?B?YkR3aVUvWTNId0FCanU0VU00d2I4U3hRMkIwY1pjK0x4NDdqaGU1bXhNb3dS?= =?utf-8?B?cUNaaXpEcTdTYlFxa1dhN1kyTXdTRlZ4ZzJOODI3bDJMVytmREdHOHh2ZG55?= =?utf-8?B?eWlHWHp6MFFjVnpnQ2pkWWVGUGVFV3hUUExrVVN4K2hFUDdJOEVIckY3ZFNM?= =?utf-8?B?UHhldW9WcmhOb0RaVjBRSkNyL3ljYlRTQVdDdDFLVVNuOXdxb1BzVVpjWFZG?= =?utf-8?B?NWZNdWVrVlN0VXRHaitOYklZdWJtOFFXN1dCbmtoYWlVMVNmYWUwOXVYWGs1?= =?utf-8?B?RmdQbXRzSy8xcUJ5VTNWUGVlSWdXQ3pLcVZqWjV0Rkhzd012eUQ5Y0k2eStU?= =?utf-8?B?eERMekFoemNHWEhDYVNXakJJN041cnhIblBjdnNmQ1orTGJFYXY5aVJ2cFFq?= =?utf-8?B?bTZjMDA0aXpHMzdPWWZERzNhMWU3aVErTjdFT1liZ0FoandvWDdkY1hpY0Jl?= =?utf-8?B?QWJWSmpxTmF4eEh1a0czSkJqaDJ0bE5va0FhZFd3RUdEL3huazBYUzZVSzF3?= =?utf-8?B?M2w2cFhHMUw2TThLTzFFM3lLNVR1QkNBVkk2ZXhUV1FuS1RZVkdWbzlWalZu?= =?utf-8?B?VlNHL05RL3hlMG5sYml2Zjhld0FUUFFVdjNVZmxSVDMrV2pobWhoZFRxdVp0?= =?utf-8?B?Qkh6TjMwNVQxSEtVbDRDNWN5R3g3MWdtcHBaRzZFdVJBRFQ0a2YveloydGlw?= =?utf-8?B?aHl5VlR2RmY4MXZNY3BwcXp2VkxvSlFQSlNUb0JrclVCSUdyZmtyNTV4Smkv?= =?utf-8?B?dkVkWEhKWjB2TE1OVElsYkNFOWFjUzdrai9scXMrOEp1am9DT1h5VWRJUVJE?= =?utf-8?B?cFdOZ2RJZGZEQ0p4QUFzUGVqanY1bDR0UFFUVDh1d2RvbmY5T1ZqUFZJR3l1?= =?utf-8?B?OE5rbmJXcUVRREs1MWhEOWtzbTZvMjQ1ZnAyN0hvbmZjckQrVHhZQkNRZnRs?= =?utf-8?B?MFFyazNBMnl3UldNNFBkYmJ5QmRtV3Z5MzRML3RrTk1uTXRlMEM3dTRPbTlO?= =?utf-8?B?UzNJK250Vlk5Qzd4UWxhYTV3WnhTL1lsSzNZeCsvK0ZyY0hlS1RzSHBicnV4?= =?utf-8?B?U21sc0REQ1J4NVFaRVd0WGxxNEU5dTZ3OEJuam9kYWtZeW1NMjN5WkRVM21v?= =?utf-8?B?UDhyWWdSUnpyRnlQUmhaeGVWYjJ1YXFPN0crUVRZenlRSjFueGxPSmMxaWRs?= =?utf-8?B?bWJjQlJic3k0dVpiOVhsaVd6SnVTQnZRbisxK20zL3JLa0dGVE1vWjBPSFN1?= =?utf-8?B?akt1UHpxbExBT1d3RklCV1JVZER4cHBIV3kzMnZSNU5TUmEwUVpHRXE0c2cr?= =?utf-8?B?ek8vc3I5QXMxNURvaEMzUldNanBhdnc0QVJPNWxOVUc5UVVYVnVZWEgzd21H?= =?utf-8?B?TUQ1aVNaeWpXbjI3NkdBYjFBNEpqYzRsWmE3US81UjlweU1iaE01TG5ZMk50?= =?utf-8?B?WlNYTi82TDNCSWlYbXp0ZnZVV084TFpSSTNaUVFFWXRHbnBhMzlPczJtZzk4?= =?utf-8?B?NTJMYmxwOFM5b21sWG5xTFBKS2RyOWZUNmJ4bFFIenczQ0F0V2MwOUhSZjdH?= =?utf-8?B?NTlMYnZ6M3NQeHdHN0YzeWZ2YjZwMnExRDlWc2hoSGorZzdkRzNHUEhhaktq?= =?utf-8?B?RDdFTXVFT2s4UGsyeFN4cVZGKzV0L1V1elI1OHFqZEVIMkZpUUxSN0hDM2R0?= =?utf-8?B?QVl0NEpiSjhjSmpVNTdhOXFBZW44TzRZcXE4akRXNUk0cWZkT1dFZG1wcmp1?= =?utf-8?B?TklveDJHeEZVaWZGUTJUMFFLbXJaamVEQ3BUZDY1V3RYVlIvUm95dzR5QWJv?= =?utf-8?B?dUJmaUtxbC9xUFNldXhxVkd0MlFsRG9QRDNLUlYyRm9iVlJtcHBsL2gxR1d1?= =?utf-8?B?TDhmb2hYQ2EyK3dNV2JlS1F1UDhQTG93UFNHMGhJVTYzcWI0RUpSME1EQ2p2?= =?utf-8?Q?cTNqPN?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(19092799006)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R3hTQ3NDc3J4U3Q5V2hZTVVLVzh1ZUd2Y1pLZnZOZkJRcE1CRTdtTURFdy9H?= =?utf-8?B?cVFmNkhUQmdHaXVqUk1FS3RGRlR1NjdnbHk0bHNVQzluYjVtNGsva2xGZ2gw?= =?utf-8?B?YldjWDlLS2lpbWltSEhEUjhQVWR1V0xRUUJEb0FzVkd5VkczbzBXamFNcEN2?= =?utf-8?B?anNQeFRTeGMvRDdSRUxya3dCdTd2L3VvQ21oT1JVcm1nTGRkdStGbW9WaUlQ?= =?utf-8?B?d0UzNHRIT0lmUlZEWjFQWmFvYUNTSnlSREU0cG1GUnMzdW9ObllYb0ZkaHRG?= =?utf-8?B?QUIyT0NyTGk3VFh5SGo0QXJrZkNwZ05IOUNqdzI3Q2MrNmNkeFhTdmRoMndy?= =?utf-8?B?a1krVzB5Qy9YT2hiRnEvMTBUQ0JROERzSm1nZFZSd00zc3Z0b2MrcW4vbjVO?= =?utf-8?B?QjQ4RXhYd2dQbytEOCtkMDR5Q0NQbnpQVFdORHJjRCtHQlVqK3RnbDA2TkUv?= =?utf-8?B?OEt5QjdkZ1dGZThucGMvTUhTNzExNFR2YWdudXFEdlZUczQyUHZIWno0Tk9N?= =?utf-8?B?R242TkNTSlFWa0tvUitTRDNkZnNSTGlmdExvUVdPeGFLM1F5ZkgvbHFHWVVF?= =?utf-8?B?OEhsTUp4YXRRaiszQnUwTTdqdGQzM3J1TW50WmdpQkJnUkNybkxrMTVUcEY4?= =?utf-8?B?RzYraGpuV093YnlGMlU0K3Rkbk15dmFHY0c1Sk5Wek5rdlRtdzBNbCs5aHB0?= =?utf-8?B?Uk5ZSkRkTjJ6T29KZjdJMVJ4SEV6NmpBRlNFWWlVbzBBb3V4YUVpU3BHelQx?= =?utf-8?B?dXNPOFZFNi9tS0Qxb0dpUC9XM3BtVEFkMnpkcUZIMkFsZlUwT2VOTmM5ZXpM?= =?utf-8?B?djhYTERGVTNvVlJKUlNzcFdGdmxISTMyVXorK1VWRzcxN0tiOVJMTVB1VzVs?= =?utf-8?B?WERMVW5mR1ltSHh1ZEc1TDdJeDZ5TXBqSitqT29Bc0FMOVhJUkVnL1ZyQnQ4?= =?utf-8?B?ZmM1aVJ1ZVRxUkRDOVZpYlVMT3d3ZTZ4QWNvaWFhUVJsckk5bFhBdDFkOE5h?= =?utf-8?B?MVJLTlo5RlhoaXRGSW9qMHp6Q0VWY1JLcmRRdjFhSUI0Y2hXTWJ0Wnl5Tlpt?= =?utf-8?B?SkpuU1BCaE81WDZQY3VBTkhjczBnbEc0WnVscmI5UVhTNGMycUNXcTNXRS9v?= =?utf-8?B?RFpMQ3hCNmdNWldSTVZwcGE3RENpeXpYeklWYU9EcXJRUjhYQndXSThkc295?= =?utf-8?B?Ri93ZzZ1NDlUVUNDVkFSK2kxTGNDd0JkblduQ1FOenNEbnIxR2syWitSSDgz?= =?utf-8?B?Q0M1WEo1K0IwaEtsZFBzaG9Pc2tKc2djOVZJK2dlZE9KcFdtQmoyQTN4cDQv?= =?utf-8?B?d3JCQ0wrL3lQcEtjK0U4OWIySkZ3aFJ4RXpGdGI4OEtlVmZUSzd5RkQ4cUx3?= =?utf-8?B?SW8rbHN6YVZnWHorYkV6TmR1dWh0RjEyYWFQYjJpN0F0V0RGMk9pSytLSVhK?= =?utf-8?B?MEU4aFoxdnN3eWNFcnk4RjFObm1BL3Zhd1R2RGxpY0pyQkwzQTBrcHY2MWYx?= =?utf-8?B?c3NoVWdDU0ZpMFliNXR2cnZUckM4Qy93TlhkN2JOUEVSV2c2dUdIMHBDSDRu?= =?utf-8?B?dnhMK1FOdG1meXhkZlZBdHhLUkgyUnEzdGM1U3VwOE5zL0s4am5OalZOSjNk?= =?utf-8?B?Wjd6czlJaUp3SEl6K3ZmSUlTelgzdys5NWVBVE40dlR5Q0p2emMxWE0yV0dq?= =?utf-8?B?Mnl2UmRJZW4vT0NOU1hVQ3ZKRUNDa3FpUXEzSTQ4UTl2Zk5hMWw1UVRsOVQv?= =?utf-8?B?Z0svRWRJYlljMzh3eW9XZjZqWjRFQU1aeVZmbkNaeWhyZDJaUi82SG9BRFhU?= =?utf-8?B?L0xrK2h1V1d4bTljemZ1S0lUeUxkeUttdXQ2QmxxTEtQdkoxbXNjc0ZJOCtz?= =?utf-8?B?ZWZqK0J4OUJvRzJuaGtBNXZQM0ZUaDVPbC9naWpWa0ZmUGJLdnBXSkZ1Q255?= =?utf-8?B?ZTY1SmdXZEwwclhTeFJEUXdZbDFLVGJnSWZXYzZhUFhWTmlyTjJkSmw0K2hJ?= =?utf-8?B?SXFlQ0RpdUY5KzY2c3Bwd1pieWFLTnFpdlJOOURITFA5WkdubHVFYitkK3k1?= =?utf-8?B?Nmc3MFJNWEpRQWRkaDlJLzJrNGFud0pMNm9oMWF3OVI4dkxHZWdPUWNHR0F4?= =?utf-8?Q?0FGdc+0XyzUVVwmTWbKj7DaQH?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1443f7ea-9080-4e10-e1ef-08de06e6bc59 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 03:48:40.6704 (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: F5f9DTaMmwvuSkviNCg1BG6gsVC2yAjEA3QAgHwfpIiv8oIZxbaO+sfi1WNEi/KuLGlMxVDleekwc7uaONQUBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10217 Add clk_hw_set_spread_spectrum to configure a clock to enable spread spectrum feature. set_spread_spectrum ops is added for clk drivers to have their own hardware specific implementation. Reviewed-by: Brian Masney Signed-off-by: Peng Fan --- drivers/clk/clk.c | 27 +++++++++++++++++++++++++++ include/linux/clk-provider.h | 31 +++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 85d2f2481acf360f0618a4a382fb51250e9c2fc4..6cd941a729590b501d66101e352= b99e51ca18464 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -2784,6 +2784,33 @@ int clk_set_max_rate(struct clk *clk, unsigned long = rate) } EXPORT_SYMBOL_GPL(clk_set_max_rate); =20 +int clk_hw_set_spread_spectrum(struct clk_hw *hw, const struct clk_spread_= spectrum *ss_conf) +{ + struct clk_core *core; + int ret; + + if (!hw) + return 0; + + core =3D hw->core; + + clk_prepare_lock(); + + ret =3D clk_pm_runtime_get(core); + if (ret) + goto fail; + + if (core->ops->set_spread_spectrum) + ret =3D core->ops->set_spread_spectrum(hw, ss_conf); + + clk_pm_runtime_put(core); + +fail: + clk_prepare_unlock(); + return ret; +} +EXPORT_SYMBOL_GPL(clk_hw_set_spread_spectrum); + /** * clk_get_parent - return the parent of a clk * @clk: the clk whose parent gets returned diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 630705a47129453c241f1b1755f2c2f2a7ed8f77..9ec25bbccd613eafd77aca080dd= 7f51b1bfdadc1 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -6,6 +6,7 @@ #ifndef __LINUX_CLK_PROVIDER_H #define __LINUX_CLK_PROVIDER_H =20 +#include #include #include =20 @@ -84,6 +85,26 @@ struct clk_duty { unsigned int den; }; =20 +enum clk_ssc_method { + CLK_SPREAD_NO =3D CLK_SSC_NO_SPREAD, + CLK_SPREAD_CENTER =3D CLK_SSC_CENTER_SPREAD, + CLK_SPREAD_UP =3D CLK_SSC_UP_SPREAD, + CLK_SPREAD_DOWN =3D CLK_SSC_DOWN_SPREAD, +}; + +/** + * struct clk_spread_spectrum - Structure encoding spread spectrum of a cl= ock + * + * @modfreq_hz: Modulation frequency + * @spread_bp: Modulation percent in permyriad + * @method: Modulation method + */ +struct clk_spread_spectrum { + u32 modfreq_hz; + u32 spread_bp; + enum clk_ssc_method method; +}; + /** * struct clk_ops - Callback operations for hardware clocks; these are to * be provided by the clock implementation, and will be called by drivers @@ -178,6 +199,12 @@ struct clk_duty { * separately via calls to .set_parent and .set_rate. * Returns 0 on success, -EERROR otherwise. * + * @set_spread_spectrum: Optional callback used to configure the spread + * spectrum modulation frequency, percentage, and method + * to reduce EMI by spreading the clock frequency over a + * wider range. + * Returns 0 on success, -EERROR otherwise. + * * @recalc_accuracy: Recalculate the accuracy of this clock. The clock acc= uracy * is expressed in ppb (parts per billion). The parent accuracy is * an input parameter. @@ -255,6 +282,8 @@ struct clk_ops { int (*set_rate_and_parent)(struct clk_hw *hw, unsigned long rate, unsigned long parent_rate, u8 index); + int (*set_spread_spectrum)(struct clk_hw *hw, + const struct clk_spread_spectrum *ss_conf); unsigned long (*recalc_accuracy)(struct clk_hw *hw, unsigned long parent_accuracy); int (*get_phase)(struct clk_hw *hw); @@ -1430,6 +1459,8 @@ void clk_hw_get_rate_range(struct clk_hw *hw, unsigne= d long *min_rate, unsigned long *max_rate); void clk_hw_set_rate_range(struct clk_hw *hw, unsigned long min_rate, unsigned long max_rate); +int clk_hw_set_spread_spectrum(struct clk_hw *hw, + const struct clk_spread_spectrum *ss_conf); =20 static inline void __clk_hw_set_clk(struct clk_hw *dst, struct clk_hw *src) { --=20 2.37.1 From nobody Fri Dec 19 08:56:28 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013024.outbound.protection.outlook.com [52.101.72.24]) (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 9DC7F241679; Thu, 9 Oct 2025 03:48:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981730; cv=fail; b=WU+mK4NuWDeMPhb9Yd/MqpG/YcPsp2Qq6BT5HGowlr61NEDLWBYowHrZzyptI1AqD/y9yH1qDvusm6xbkOmSVF9Cfuwa5bh4JliAK+mhw8Ouic1WjS2ZiIk9uyz8hrON8snI7XGFMdrTnqkB2ezmWbYQ9ZpSbqpNjNQ4FZpvz7Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981730; c=relaxed/simple; bh=PeRl5P3IHKJMf909jjQ/u7GR9jCDfliupm8kEswxFCg=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=HnKfNK5uClv/+E5evAY4Rq7+FJJ4kKKCVDWLCUdPgfeSUQgcUTBQdyjaRNVURwDUfYhV4NSGiIaTusUCicAG5DB2Z+L31BDyQN0bVwFIHe3uU8kJ+W6SlImTGvk64KFdCOPtcamsKcm8FiIJwEGwXB2Mt0Q+XDe55E3aeweF/NU= 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=IVuqQ92S; arc=fail smtp.client-ip=52.101.72.24 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="IVuqQ92S" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PkZcx2MqQH312ug7pUTUj5vzY7DNuVo1AlSH5SBmIm75lIbVtRG4rgkS7hDEPI5/HV2d7uToP7MvjIZMtmsoqgzx4usm1fiBZhZteLByh55uzwKYD9QFPf0sofOjLHTfSR8gJFx+rskeA+kL/F3j7TWIEWArCTm1sZEulXf9PkYlFELBjezdeNd3K2E+yfv5Fw+zcMGKQQuTN5IT7plOhAINKPrZrwiXMPEJsohriC1gYxCZbpq0IB2v58skbH86NjUHIzwd8gn/xj0FIW0KPOL4QEs9TBbTUD0OBgvXZcSx/ECt5VGBNaD+IV+G2HuQ70j9orCYkoH59uSAvagMPQ== 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=7RxnQJJTFP/qar4FBocvrDx36TKm9SbCky48kLKdZUQ=; b=J5Z2ogIP2GVzoYy/AnS/jjDk4lURAbdnjSk0AHLpWz3OMiYCWu1pOr2mQXngBbQclQCYbzfomW6k6ZUa0YEOrhgXkMnt0KkWvkP6TlT8KZsKXh3iwy9t3gnBJW5t2+yvkq4F8Pwd/aDxOkQ5hdKyaW9+JkgEskWQDY+ZHBC8wj1E6p6X6roLQSOntqZRcg42I3nEjGOeIhLvlpMCXMYxiwUx/SEE6ZlE9eLmYWuXuhXUwwHK0hvSQYA7X5efbpentiDlFWHlT7RfWfnL/G8AdrhsRVb6C5bIPfMvH5fpHBDcB51vXRXmZvru8x8e62G6blqX1+9HNa9p6tyO5wE61w== 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=7RxnQJJTFP/qar4FBocvrDx36TKm9SbCky48kLKdZUQ=; b=IVuqQ92SSjKnjkj1VjPA62lvh7MCwmCeSHcEmyLJNlAtqxeMrcLF1OkTKfLr5G9RhYLPMAwz5k5VPVFsRAlcbwN4mnJUoUydlW+6xiuy5ASRlXNUpc3viynVaQ9QDfrEF96Xcaj2oy9KwIV5dtn1YvD94NddE9ZWqzINcD0oXK+8Ad/7MpQb1G9F6GIMx9VQUcHyqVQe2fM3jFXlWqPSEu4D+Y6gZWGFDb3Z/Xm5odNQsLzfnt6RuIifqmCnw7JCz/RTW4PlVu+7nfyzNIhKsOvoNMAH1v1g7HCgHU4B4zDuCqNa/K5c5F/mBmxI10H7QUiTQ5B//W4YCTVc0yonHw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by VI2PR04MB10217.eurprd04.prod.outlook.com (2603:10a6:800:228::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.9; Thu, 9 Oct 2025 03:48:45 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%4]) with mapi id 15.20.9203.007; Thu, 9 Oct 2025 03:48:45 +0000 From: Peng Fan Date: Thu, 09 Oct 2025 11:48:16 +0800 Subject: [PATCH v5 3/6] clk: conf: Support assigned-clock-sscs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251009-clk-ssc-v5-1-v5-3-d6447d76171e@nxp.com> References: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> In-Reply-To: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sudeep Holla , Cristian Marussi , Sebin Francis , Brian Masney Cc: Dan Carpenter , Geert Uytterhoeven , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1759981702; l=2996; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=PeRl5P3IHKJMf909jjQ/u7GR9jCDfliupm8kEswxFCg=; b=hFQkr7l/i5hkgATvycq868+z8YTvw4HH0Pkbqp71Q/a4m50V+MAfImxG9H0vcpPINaMb+8J5z 83WNxiGkgoiAJDrAFJcmGVw6+dx6PpBNC5pCtHPkO2q8//P6zuYSz73 X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2PR01CA0031.apcprd01.prod.exchangelabs.com (2603:1096:4:192::11) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) 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: PAXPR04MB8459:EE_|VI2PR04MB10217:EE_ X-MS-Office365-Filtering-Correlation-Id: e98757b4-1f3a-4a4f-b8a1-08de06e6bf60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|19092799006|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VzJEcStqTlBrVTlVRU42eFg2dzVObENXcDArL2J6QzlsaHpONE5DSm0xZ1Uv?= =?utf-8?B?WitXNGRQeURHZ2VHV0d4eENzKzY3T0dIVzYvc3krNnFEdHBjUXZCQ2hpckRV?= =?utf-8?B?dEFjcmFkRUo4MHI1dFJ1YlFkRW45UnYzNWtlZGZhZ2JaaWpJVndWVHlVSjVX?= =?utf-8?B?VFlLUWNUWWFiYy9QaFFWay80NTJsMEgwYnlpT0pqN21qTHA5cWdZbWpOd2tz?= =?utf-8?B?NDRMOFMwbDhmRHUvbDZadEhmSjgvZm11alY2QmlHYXljMHpIdEN3U1dRQzdJ?= =?utf-8?B?ekhaL0M0cHhhazN3WUZjL3A1ZW1Dd0VIZlpRTHFBT0hUekhBTFZYNEpXTjRh?= =?utf-8?B?dkpUeklmbHBCUU9rVkFSSUlXZUh1czNwY0QzVnp4MW5PV3cwYU5vYVdSeHBr?= =?utf-8?B?dHh0NjRTN3VoSklQUHRQUTRUV1NGQTdmTnFGODZiaFk3cUExRUY4OFFtSldU?= =?utf-8?B?ZHpuajBHK2M4eHRuWlR0cVRoenNxelNqQTdLYXo1MlFIcjZsZE84aDNKS2Uw?= =?utf-8?B?N0FsOEZaVTlidy82WlEyRDFDb1dpcXE2L0lvM1lqSWk3ZVQ1cFBHQXFxZ0Qv?= =?utf-8?B?UUtuTGNYL0ViTGFkajgrRFZ0N0ZsOHl1aFhjZkptbXRxUXJSbEJrNzZqRjFS?= =?utf-8?B?V1N0cDdaeHpuQjNOYkNabjN5NUpQMkw0dTdRTXp3anZVZVh4a01DQjlpY2to?= =?utf-8?B?K0xVSnVNUDBKcUJBbGh5bGFSUUxpRVZRcTBQTU9IRlZCY0N1SU0xTEtIKzNw?= =?utf-8?B?eVU1NkMyeVp1SnB5YmU4RzlmRmg4N0dBcDMrQ0daTDBzcTVWRW1sdnJrbXQz?= =?utf-8?B?RWpwbU5nblFDL2NwdUJMY296clhPSThHVVkzVERmSkdzck9SSGtwNjI0MGtl?= =?utf-8?B?QWFyQWU4Q0RDeDZwcjViK3prcDdlR0JZcDZwdTBzc0FFVnB1QzNKMWxEa3Q0?= =?utf-8?B?RDg0S1l2K1VYR01lZnZlOGo5NWUrZ1pEWDQ2TVBFa3h6YUdRT3JaWmUzQWR2?= =?utf-8?B?eVVUUXZENzh6d0J3emhPRHhTMjgxRzRrZGNxcE1OQ2xKcHBKWWpkOCt3N0Mw?= =?utf-8?B?VXpJRGhNWHBQemI5ZEErZFpDWFV6enpTVmR6d29sZGkvVjNGSzlxZ29CQkVz?= =?utf-8?B?RS82YkR1ZmVrcmQrZnA0VXIrdjQxL3gwYjBrdHhRTGg4RURmN0orcUlpbGZP?= =?utf-8?B?WTdKcWNtL2JzU29QZmxUYitMUEo4ZTdaMlZLS3BPbm1qTGRqTGpBNTJtR2t4?= =?utf-8?B?MXlsaUswbTFvRlBPMWNmSkdZcmc0RVE1Rnlld2lMZXY0djEyc1lRbUwyRzdS?= =?utf-8?B?aWtuQ2ppbzVGTW9EbFFoempFdkRiVFRySDYzM2NheXk2NE9PZWtwRDM1cEFS?= =?utf-8?B?dmR6M0t3cXgwRFRUL0tBcEdhMlFxM3ljUXZGdThnNDFLVmNYUWdtcUxiM0dp?= =?utf-8?B?OHhjQkdYTEVXVFc4WHRETk1qQ2VuNU1xN0ZjT3duakNnSVhBK2tncHdGUGJw?= =?utf-8?B?MTNuSWpCTjc4blhrV0pzaTF4dTJudWViN2p0aXVsenF0d0JBRm1YNGt4WTc2?= =?utf-8?B?dUNtU05CUWxYV3hYNUd5Y01GRXNmRTB0cUtHZDQrV3hxSEpjemgrcnJ2QTF0?= =?utf-8?B?YU5qdHFSbEQvcEZVOVRCd3huS0ltTVRaVjE0NTkvZXVCUFFKYUJFN2lFNVNG?= =?utf-8?B?cDllaHBrTUZVUW8xWUNta2xrcUJEemJRWlc2aUZxeDNaWVMyYjdzSVNBTkNB?= =?utf-8?B?R0x0bHlDRlJrVUF2Rm91WHVUc2lLRzQ5ZXY3OE45ZDdTbXJrUmlYbzJGbDdF?= =?utf-8?B?WlF1UFM4ZTVXRzF0U2taSkJlRmQrYWpEME5kdmJhYWduL2pHZmtNdFNLaG9Y?= =?utf-8?B?YllWR0dLMnJlNUEzY0UrL2pPTW43bHEvcWlUVXc5SjI5RENGTFFjc3VUZlZP?= =?utf-8?B?ZFRrUzlWSGcyZFQvcHVCb2FlTUJuSHN0dXpZZ3VNak5Pb3VxVVVoVmNLcDN6?= =?utf-8?B?cTBlTzkwN0VoUEU5SmdqenR0cVBxbTZUSkdSOTJUU1JKa0k2VW1ZQ3ZqOU1i?= =?utf-8?Q?6ynGUS?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(19092799006)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WnFYREhUTTJiY2F4b25ZaGswM1JTTGtBWU9CV050Ry9sQnJYN0YyK2NlNWJp?= =?utf-8?B?MDEyMFc0YXpnaHdZM3dZdlBTRlZjZ2J3ZThRRmpCd0doQmt5TC8ySVM4cVUr?= =?utf-8?B?YytpNklCTWtqNnczR2tqRkRqNnRWZHF6Q3JnRmVrZmZGVzcxaERmcEN4aXVG?= =?utf-8?B?OTJMZis3V3J0dVdPYWVNTjBxNVIvb1hMc2JrempNOVExWVJISysySk1taFAw?= =?utf-8?B?azhSRkx2TmFXOVZBQWQ1WlFCVHd1WkwrL2dPNWlMSTN2dlJPTUpaQmF0VU9i?= =?utf-8?B?dXZ2a1l4Yi9FWEFXZ0pWY0NUYktXUkdjQ3dUMFFDb05KMnBQMkVUME05cTVR?= =?utf-8?B?V09PRkNlaGprU29LdGtkNTM3QmVZTDJiUkNFL3hFYUdSWG1oMExKMVpyY1ZO?= =?utf-8?B?d1VMR0VITk05NDcrd3VYd2Q2RU5ybVhMY1VRZXdQNDc2ODN1RHhBQnBkOHVS?= =?utf-8?B?SVRDbHZpL24yakpvcUIxeDZRN2lSenk1UWxwaTd1S2tkYlI5bWxlZGEvOVFU?= =?utf-8?B?QTRmbVpPUUxwQkhIQlVKNSt4cUNWUTgwSHZmSUpWSGR1WTV5VFE5MDRLRDZP?= =?utf-8?B?NU9LelZaWWRLdjZxZG5SYTRoL1FEWWdUbUNFZ0RoZDl1Q0R6ZjdtNC9SS0Va?= =?utf-8?B?eFZQQWdZV1A2RWVtQ0dCaWpMRnZWVFIrV2NqaG9LSVc2M1Y5NHdBWmRiY2xo?= =?utf-8?B?V2lKRFJsL1RuOSsxY3BsTnFGTVJLOW9BSlpmUGVBWXJZenVaRW9NRFRFT1Z0?= =?utf-8?B?UGdhZER1R3pwTTd6WnZzbFdsZmlndFlPTXgxQVFzeXNnZ2I2ZHU4S2JaQjhE?= =?utf-8?B?SGFVN1BwVG8raHl5SFkyVE9ZRndWUlB2RTBNZHVSbEppY05RbzJsVEVsZUlY?= =?utf-8?B?WjV5TUJ0UUdTYzdkRkVUVDhRREVxbXFrY2lVMmkva1d2bjRLNmNWTjZkMTBC?= =?utf-8?B?UjJSZjBkOG1seEtYbFRWQ3lSWnVpUXR6czRBZVhDRVIrTkdSZUJ4Z2lQZDBN?= =?utf-8?B?OUU0clBHN05uT1NMWUJBSFJ6dzdMTHBmREpUOWxQTE5GRE5mMHphek1SdEV6?= =?utf-8?B?Smg3ZGFPZ045RER3Um1UNGU4NzRUU2VRTTdzRVRDVHQydWNkTmZpTUwrbC9R?= =?utf-8?B?SUovMlM1NVNHN1lRdG4wa1lLTytPQTNKUDkwQ29qam1RMWJROGR4blZzU3Zk?= =?utf-8?B?UGFkNzZjZVQ5UHdrVUVybTI0RUZGaWN1Z1Vrb0pxdG1HbzZvS20yWE1OdXlU?= =?utf-8?B?bVZrK1pYNFh5MmZKSFVnZlVKRUNXb05XSXF6V3MyMUxESkN1NXZueFU5UG5m?= =?utf-8?B?dGc2UXBlU0VQZnZRTlQ3blFERXU3ZXJiTUQrL3Q5Z1AyWXd5Q0o5eTdoS3Rk?= =?utf-8?B?eDJab0VtRzV5L3NaMnB5Vk9wcVVPdUxUSUJXY2ZKVkxGMmxUMlAybHExeXp5?= =?utf-8?B?UWVMNUNqbVEyTndvVlFoWUxLd3UxcWhlYXg0ZHdRdmdkaFRsL3RIM3ZqRVls?= =?utf-8?B?RmkrdjMyVmlmNWlnVWtQbXFKU1VJZ1BoWjlIemt1UkI5c1lVcG5GSVdMWUZ3?= =?utf-8?B?VXJUQStFM21VemtOT3pZTnJURXZxLysvM3R2ZHczLzFsR05mMmtXemlwcmtq?= =?utf-8?B?WlFycmU4ck1jcXpqdUVLM2w4R0EyRlRSZ3BOOXlxN2ZmOUlEQVJ6d2s0VkJj?= =?utf-8?B?cXRORWVUeGVrN2ZuTnFQZnR1R2xTSm5Gd3g3SWlQWHZVbG9oMVdudEY3V2F2?= =?utf-8?B?WEtrUGFaQXk5S1dQZmZCbk1tZTVobVR0UWJGeDk0WU5xSFBSSTBTWklhL3U0?= =?utf-8?B?T3ZGQTIyb2dJTGtMU3FMbFhmU1hLWGFuek54RHFZdnkyNjJJaFNkMks3ZlFv?= =?utf-8?B?L0VvdkFWMXpmaS9leUZIRmh2WTBTaTNlNGhLSkNhSGlLTllJRTVBL3M0WnR2?= =?utf-8?B?bG5xMWNHUWhQaVlPOUlEdGpNN3NmaVFqRmladlhBQ3d6dVAwUm9xSldwVU8v?= =?utf-8?B?VDFRSjdBcCt6eDhCRTJoamRrcURJZzNkaE5PWnlIOG5KYUErVzgyTUs5R0tG?= =?utf-8?B?Ym9wVWhKa3pWQXM2b1VLK3oxdEh4ZXNHdEx4YnN6dVlSeTFRZkdpK3N6L001?= =?utf-8?Q?JX6qBxj00gt2rlp5+XqMs8chR?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e98757b4-1f3a-4a4f-b8a1-08de06e6bf60 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 03:48:45.7454 (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: dUCp8I4n4MSdNBhRL6POkxCZySdBHSAUtMC8i3l5S2M6b7OCIEiTkafyNc4tazfR9efeAVQwe+OBYYK0sp7E1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10217 Parse the Spread Spectrum Configuration(SSC) from device tree and configure them before using the clock. Each SSC is three u32 elements which means '', so assigned-clock-sscs is an array of multiple three u32 elements. Reviewed-by: Brian Masney Signed-off-by: Peng Fan --- drivers/clk/clk-conf.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 69 insertions(+) diff --git a/drivers/clk/clk-conf.c b/drivers/clk/clk-conf.c index 303a0bb26e54a95655ce094a35b989c97ebc6fd8..dd6083597db3f8f27d86abf5640= dfc3fb39a9b88 100644 --- a/drivers/clk/clk-conf.c +++ b/drivers/clk/clk-conf.c @@ -155,6 +155,71 @@ static int __set_clk_rates(struct device_node *node, b= ool clk_supplier) return 0; } =20 +static int __set_clk_spread_spectrum(struct device_node *node, bool clk_su= pplier) +{ + struct clk_spread_spectrum *sscs __free(kfree) =3D NULL; + u32 elem_size =3D sizeof(struct clk_spread_spectrum); + struct of_phandle_args clkspec; + int rc, count, index; + struct clk *clk; + + /* modfreq, spreadPercent, modmethod */ + count =3D of_property_count_elems_of_size(node, "assigned-clock-sscs", el= em_size); + if (count <=3D 0) + return 0; + + sscs =3D kcalloc(count, elem_size, GFP_KERNEL); + if (!sscs) + return -ENOMEM; + + rc =3D of_property_read_u32_array(node, "assigned-clock-sscs", (u32 *)ssc= s, + count * 3); + if (rc) + return rc; + + for (index =3D 0; index < count; index++) { + struct clk_spread_spectrum *conf =3D &sscs[index]; + struct clk_hw *hw; + + if (!conf->modfreq_hz && !conf->spread_bp && !conf->method) + continue; + + rc =3D of_parse_phandle_with_args(node, "assigned-clocks", "#clock-cells= ", + index, &clkspec); + if (rc < 0) { + /* skip empty (null) phandles */ + if (rc =3D=3D -ENOENT) + continue; + else + return rc; + } + + if (clkspec.np =3D=3D node && !clk_supplier) { + of_node_put(clkspec.np); + return 0; + } + + clk =3D of_clk_get_from_provider(&clkspec); + of_node_put(clkspec.np); + if (IS_ERR(clk)) { + if (PTR_ERR(clk) !=3D -EPROBE_DEFER) + pr_warn("clk: couldn't get clock %d for %pOF\n", + index, node); + return PTR_ERR(clk); + } + + hw =3D __clk_get_hw(clk); + rc =3D clk_hw_set_spread_spectrum(hw, conf); + if (rc < 0) + pr_err("clk: couldn't set %s clk spread spectrum %u %u %u: %d\n", + __clk_get_name(clk), conf->modfreq_hz, conf->spread_bp, + conf->method, rc); + clk_put(clk); + } + + return 0; +} + /** * of_clk_set_defaults() - parse and set assigned clocks configuration * @node: device node to apply clock settings for @@ -174,6 +239,10 @@ int of_clk_set_defaults(struct device_node *node, bool= clk_supplier) if (!node) return 0; =20 + rc =3D __set_clk_spread_spectrum(node, clk_supplier); + if (rc < 0) + return rc; + rc =3D __set_clk_parents(node, clk_supplier); if (rc < 0) return rc; --=20 2.37.1 From nobody Fri Dec 19 08:56:28 2025 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010036.outbound.protection.outlook.com [52.101.84.36]) (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 4AA4586323; Thu, 9 Oct 2025 03:48:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.36 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981740; cv=fail; b=BVqagV+iiaEgKlsxvQZxzl9A8AdygAwLD4PWe8BtI8+N3X0o0i7DPVkjxfYXH4MWXsakRHorkMRC43xf39FDSPIMCmHMcKngMxv7XI6G3quGEedJo4EPmfuMV9IrB3fmRdBmAKM9hOvxSLFXnsO4yXDudLUMvs2pSWel9CPAmd4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981740; c=relaxed/simple; bh=AsqkTNTp73C1/4WrJFAiebOwtUCnyb2WWJQjvFHhlRM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=TMyLUlFENTxN6Wk4Q3NzmOpC21mT+u2PtElxrfXpLy7g+zyA/k3hh0deDBfQZlQn+SJ6bWIBUAsPORKcJifAZ5WGigP3dr0P0eVmDKX8CYBMUDCIAjYFFwZeCKLfeBMBlKxFxxe7byaDDi8NsZpfPgfpSkNO4+kgmeqtPDv+CBc= 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=O5Kl7/Rm; arc=fail smtp.client-ip=52.101.84.36 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="O5Kl7/Rm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EClWr9A8A2JYdkq6uonFMpAWlpv52rfbLFoXzbOpaXGqZLlWnfBWiQxegg+Ok0h/EAI2U3ahVMK2yVQsALBC2fmU/6IVxkGrBVWFh5WJE5+XD8ch+UOiFWqtdMNmBSTBvEOmaK3BXpSNtdj1PTwCY++KO+SpapTmdbXWGE6Kb1ONp9e9cCbqf8qU8J9xjMwBkCqEAlayK8IndXTR+XlyL8BfHfdtVbisCDRS88+Yf0DMQaFz/WtWCsYz8JXYdfjm9xR1sdNRqWOa47QrdQnOP75x14wBj9FtiWOuygtnJR2Dnt13JJHoBy2CPLvfHgL3vrcfgmu05NI5ZAfv8lYIcQ== 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=loyQpg5t2Iqq1GHdLoQgHW7TKPsExAYriN5txzChjY4=; b=r1j42mtZR5lEh8XJtZoZlWF/1E06/aNJ9WoGxM3Cuq2zzmRSHcvqNhR/SpgXy9RoTlgUkCzfqbFpe6hA74b0/inAkwsdLMdmf9dEzABcG+dBRAKECsolGww8nGm7S+fON2WE5zNwLpk+F58vJIztmGDXr+hXajdV6ecuR5U9t3JGJJl26ZVLsypF8N6pJjbiAQEVKKt2i87jPVhtLSBZklqECrfD1GtDiJ/A/H0e4CuPDnuGvK9Kd7aVpexfcQOS7ympCPnodiZevO5tS9ruvhHJDNx6DOgtRhZY/uzBsedEvr47SUOlaFqbobl1lFIjK1imXPqdRo4yo0XyNTl3Cg== 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=loyQpg5t2Iqq1GHdLoQgHW7TKPsExAYriN5txzChjY4=; b=O5Kl7/RmomLf8pPqG9QCkL/mTLoVooJ92rgH/E8EDYkVLK0ED6QMCg6AXQSb94XhKAOSo2d/oy3slLy8rDI+QyvCGbDf3OxuA11QDWrVI4rjpn8L7n6FejVbMqHOSvGbkZbR1qUifEEOFODhvqtHZZ8DEU5R/bGh0KSnGL9WHuCKplbrKQmx0BFKCv3WxZlLLjb02CBuDCiqXJswvwbXQ9UCl1z3S1pq5OcB/7y6Onf82CcwpalaFd5YgmK1+0DLPjQrHo81/MtNKmeLentcsfRQqrHdZlrjVp0Y5ZiK9fLen8NwfU+mCz/RJN+1BK1yzeJhQs1Cp+y2hU0U18PEWw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by VI2PR04MB10217.eurprd04.prod.outlook.com (2603:10a6:800:228::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.9; Thu, 9 Oct 2025 03:48:50 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%4]) with mapi id 15.20.9203.007; Thu, 9 Oct 2025 03:48:50 +0000 From: Peng Fan Date: Thu, 09 Oct 2025 11:48:17 +0800 Subject: [PATCH v5 4/6] clk: Add KUnit tests for assigned-clock-sscs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251009-clk-ssc-v5-1-v5-4-d6447d76171e@nxp.com> References: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> In-Reply-To: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sudeep Holla , Cristian Marussi , Sebin Francis , Brian Masney Cc: Dan Carpenter , Geert Uytterhoeven , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1759981702; l=22518; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=AsqkTNTp73C1/4WrJFAiebOwtUCnyb2WWJQjvFHhlRM=; b=njXh3Hm7uesGrXF0z6ojALY1zn7vfdyqq5hhd6lXHZOFDYC5DAHb9r5QgZP6n8V9DrqC72Ogw mcUOuwi0r1fCG8U8lHOaaLBw0Ro3Lonah9JW/fX4j2UqAhnc6wN5l34 X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2PR01CA0031.apcprd01.prod.exchangelabs.com (2603:1096:4:192::11) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) 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: PAXPR04MB8459:EE_|VI2PR04MB10217:EE_ X-MS-Office365-Filtering-Correlation-Id: f85b0b6c-38d2-4140-8389-08de06e6c243 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|19092799006|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?V3pIOVBqbHJqMFF2NnpNT0VKZ2dxRTZZeXRpTXU2YlRhTEdLVmdROFUyYlJu?= =?utf-8?B?SW14NExJUWpiNVNJSXMzbVBYejhoemt5UFQ1U1FObVppUkV2TWJ4UHJuUnZo?= =?utf-8?B?bnRURnNKOHRlQUVqdW1nWVFYcFlLZDc1TVJmVllEdWU4cVZSanlFK2FKenBj?= =?utf-8?B?ZExaeWtNcVpRTkxvc3N2ZGtNS21uTmVFdjk3TE9Zdk5mdVJmdTZnTDdXVnNU?= =?utf-8?B?bEQ4RS96UkxKYXRHdG82MlpBUExmTzB3Wk91dHdBdTBScVBsRS8xbnpRVGEz?= =?utf-8?B?ZDYyalN0SzQ0Y3E4MXcxWFIvSFltWTE2WVNiYUhGRytXSDgwYTYyV0hUWFdF?= =?utf-8?B?Mnhuc3VmYmphQ05FRXJISUhmK2FIeSs1bkVQYWJpaG1VblVaZGZuWE5XMEg3?= =?utf-8?B?UmRaL0JtZUhzU0dib1ZadjNPM0o3eFkxbUZjeE9XY051TmhXdnZnc0ZSbEY0?= =?utf-8?B?LzRBbGVFWkpzcjA2QnNwVGo4T1lwSDk4WWhsU1AxYXFCYTIybjErZDVycnhM?= =?utf-8?B?SWRSQzVVajJyY1lVVHRONjN5SmcvVTRBcDNYeWZGNmJPeFNIa3NHQ1FuOE9H?= =?utf-8?B?WFYwMGp4UEk0ekhDcjRRVmF2WkF1WjFKY2ZXTlN0MUNlVXRFVEZPVEY4Qmk1?= =?utf-8?B?TVkrTkNmdmh3OXB3NUZ1aFJEb1lacHlSbUo0cDRUTkozUkxuM051RGZhTUlh?= =?utf-8?B?R2YyODlpRXZ1djFtanVhNHVNdnhPNmFZTDlieUpRUHlmUmVlR1pBdzlPWmxM?= =?utf-8?B?eGtpbDBWVVpIV25mRUd3ME44Sk14UFNzT2ZDekxaYk95cWVFRmNmdHl1L0xr?= =?utf-8?B?SnBEeEpDKzZwUmV2Sm1ZamxMOWtqOWtOUWZyVjd5VmRxS1dTTi9obWtMT2Mv?= =?utf-8?B?d3lUU1RpanZUM2lERVRtblVlaDY5OWRFeUJYT0FDTDhPQVZvZDBZMUxFTTFU?= =?utf-8?B?SXhHbExTdnRpZGI4Z2doNkRxeUxBSU4xVW42Mm9ZNzRNTXA4cXV6S3YzbFZE?= =?utf-8?B?QWdoUTRlZDh5aTFjeXZvK09saTdnOHArQlNSaE9rNkVFQXp1TlIzNHQ3d3lE?= =?utf-8?B?WWVSNVd3N2JQcEhEb3BmL2JFaFhUaXYxQXlDZzN5cW5weVJITFZJTnlKTXNp?= =?utf-8?B?OUh6NzRuejRuYWo2Q251eWs3T2xDdkNrcjJyNlozRXQ0cE1GQkx0NTRhWHpD?= =?utf-8?B?Q1pYYzhwTWQyN2JuT245bnEycFUxYTRYRFU1c1VsRWM2alpqZGxHL3VkMmhs?= =?utf-8?B?aWZ1R01JSXBoUW9VQzFreTZjcTFNUEprdzdZZnlBUzlFMFdHVTl5Y0pRUXM1?= =?utf-8?B?MVZRRHZpcVhuRkpOOTNZRmFjdEpNN1g1bHJGNnZHZ0dMeHd2aTVLNGF2dWRP?= =?utf-8?B?NkEzbFBzc3FKQUs1dkNOUXhUNnB1UURndVR6V3IwNmxoQzRDa3RsSk1QSzRn?= =?utf-8?B?Q2ovdlFMRm8vTC8za1d0a05ReUh5MzlUdkVXTDNSTzljWnNyY21xSUJkMmdn?= =?utf-8?B?QUFrUnU3QUpUWE9NaG0yR0QvMUM4ZjN1R1FScllZWHVPMVA0KzBuWklxbEdn?= =?utf-8?B?R3EyY0NyZm95ek96ZW5wVjdnOVRTYVVZbk04Q29rZGFlY0pHZVZkSmErQ0Rr?= =?utf-8?B?anIybkJxUmVJaXhGVFdFOWxEeWF4Vlgzc2U0VTlBZUpiY08vOE1td3kwMGpP?= =?utf-8?B?RG1UQTRSUDJ2dDZpK2dvRGVJK1Q4dklETEVkNi9qeEs2TkpPK3RsbG1qbVhR?= =?utf-8?B?SkdCOWtIWjhkcTU4OFAwRkRoelhJME9GQWtKWGJJS0xNRWo3aHpqU0FUUXB1?= =?utf-8?B?ckVaWFRDV0x3L3pESWE2M3ZtSG9Pam9pQTh6dUxOOFcyeUhBeU45Y01GS3BE?= =?utf-8?B?Nlo1MENFdXBCWWJlTGNpVUIza2JkQ25ndm5ZSUttVzVHM3pZb01rbzdqNUpT?= =?utf-8?B?Qm1VME1FczNLRG9CNktNR3pqVXpDOUl6QS8xcFBqT2ovaHFJUHhNRS82Tzhy?= =?utf-8?B?UHlHOThXMllQRTFuSTFCOHlrM1ZHbllGc0laNmUwWTRXRk0zNDAwRWI2V1lU?= =?utf-8?Q?ZuPQX4?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(19092799006)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N3Q2S0tZNUhjWHRaZGJYWFZEYkEzS095ekRna1VrYTJjVENCakszTmNUZ0Nx?= =?utf-8?B?K2U4dVQyMjQzQ29LOGdlK2Y5OXEvdC9jeHlKWWYxQWZSaXEwNUZOeDlFdnNL?= =?utf-8?B?Q3RTR2ZtZVU3dHFQU2pTWjhLMXhDdHlFN2VCb1lCMEZqSkFVWmJNUnVUZlRz?= =?utf-8?B?VXkvVFhKbW02Y2p3ZzA4WW1XYmIyVHV4R2xFUFVMV2xnSzg1aW5MalZzOGFx?= =?utf-8?B?M1JaRDhZcWpxaVA1UGhITkYyQ0VZeGhQN2hxM3VIZW92MEMvcVVCcC9VTXBY?= =?utf-8?B?OHliL1VySUR3NlRKYjZjby9KWlNMVGkrQ1ljbDBSbVR0QllaMUFxTWo0UHhS?= =?utf-8?B?WFlDSkZMcU1KWlpaQU9CdmI3a1Rkc05SZndLUDd6RXF0RlM4U3JZbU9RWGFJ?= =?utf-8?B?c0dMUUdqZXlJMHhobExnajRRbmtXNWlOd2grVWt2VXNuaHV6c1dNNlY2RFN0?= =?utf-8?B?dDVueTNJQ3BtZE82NUlEYXVrVU44b2J5Slg2cmhWM051VjNQUkMvdkZnaHVO?= =?utf-8?B?ZGl6bVhocktOdThBd3h6a01yL24zVXpZVFNUeE55Y2M1bGxEWXhjL1liczkx?= =?utf-8?B?c3NkQUNXZW9zKzAvS3FsZ2M4c2ZkQmViNkdKYVhaTy9MTndxcGZsY0xieVAy?= =?utf-8?B?d1VrMHpPanpyMEFrL2dMRXgzQ3FjbkRlekI1SEdZWFF4T3I0cGdsdWFmVnlq?= =?utf-8?B?RklGa3lUWkVBMjRJd2YySkJ1REI2c1Q0aXZMQmxjK2tkU0E0R3pzSjFUWDVW?= =?utf-8?B?elZBd1BOU3BjbE5YRGs2RjlTbGdlcDdKZVI1Wk83YkR0bC9CNzlpd3FPQVZ2?= =?utf-8?B?bmVudG5vcW0vN1d1MzFvR0NiTHdMaHlTR0t4cytuUE50YnhGSnpaZTZreGRm?= =?utf-8?B?MHJWdStPT01BRHpWWjZzNWtpU0lGUWNYUG5rbGZ4RExGbGFYMU1peThOVG4x?= =?utf-8?B?MktDVERwVy9oUHc2dWtLSVIzTVA0Zk9JazhyZEFjeXhtbVE3WEFXTkRKWlo4?= =?utf-8?B?VEFlZDVGY245WTNabnNKRGNmQ28xUFQ0WEdhWjZPSUw4TmlKRjZ1TktQVGk3?= =?utf-8?B?a0hhbFFaQW10dlpZemxwOHd2REtFUVJKZ25VQjRKZEV6VHJQQVE5bG91Yi93?= =?utf-8?B?c0ZuZW1KQWlSUjBOaVRoVFVIbVgwSjNxSG81UlhabVNCenQ5MWtXTFE0YTZ0?= =?utf-8?B?UndHMDdFcEpMbFpGVEEvRnlZM2ZxVHZjNWVJTkUzYlFYaXAySEE1TXJEM0hn?= =?utf-8?B?Q3h4MFptWEJ3QW44R20yQklkSUE4UUYzeHA3UjF5MWhpRm0vbjA1V2hKNmlw?= =?utf-8?B?cjNGOG44dVNRbzdqWG1xOW5zQ01aRUxFbXJKQVB3aTc2UVpmNEEyOElQSUdF?= =?utf-8?B?SU9zekkrN0ZCV0J5ZzBiNkQ4Y3owMzB6ZTZLb2doMi9mQ3ZIUzdHM0kwQXlG?= =?utf-8?B?VVVYUEZRR01CaUdoK1N0bTlqS2c5TSswQ0lWR1dRa0ZFOXhIckJJVEl2c3kx?= =?utf-8?B?QnVTVDlJVmNjV1ZSUHdodmFhb0RyK0JVWXduZjd4Z1dCVVlCU29pZzFXd1BB?= =?utf-8?B?VXZBbWViT0luUFFabTlUaU5ZNVowa2JNVEo3bjl1Nklhd1FaZUVjZUR4RWJD?= =?utf-8?B?YnMzZ2MrOVh2Q3VpK2laTzZZTjgxMVdVc1UybXJmNlNtY2ZRTmJhaUEzWGQ3?= =?utf-8?B?eXpMRXJ0d1d2QTRzU0tURHFjVGRjRHZ3ZHRCYlMrL3FGM21rM1RKU1NrZ0ZS?= =?utf-8?B?SnoxSnppZ083Um9rZnZNczhZRkZ2eS9WNE5JS1UraGZJQ1ZDZVlWTXJaQ2c2?= =?utf-8?B?MmQyQVFWOWh3K1F5d1M2bU9Kd3FtOHk5SHpQd1pzeVQzdTJhY1p1VWxvRmd3?= =?utf-8?B?YUxGbXo5R3JBVEtIRDBhNmZKS1VDRW1WSElLRjVDMy9BQ2hjdFY1TkJwVnpR?= =?utf-8?B?Qyt3Sk5YZHQrQVpndDFBVDFNV1dLaWljR2VPVjMwS3I4TUJwbDRnMUNUa01o?= =?utf-8?B?T2tlejVPaW11T3hBK3FsUGRNOGU4dmhLbk5sNU9wUVBVaUUreGJmL2VIb1Zs?= =?utf-8?B?THJWZHhVMUMwbzZ5UWxZSmNMWi8vL0xqMFVNQUVOWkN6QklBV2NLcERZSkhQ?= =?utf-8?Q?aMBnr8hfqPoZJliM9aNWueqcb?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f85b0b6c-38d2-4140-8389-08de06e6c243 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 03:48:50.6597 (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: GokBsE0wBsztZ1hJLuunpYp6mdY48UEET5VfLmszUlpWvJn6frWcOd0SUkCxPb3MK9R8C1X9g0RvK53Op4ZOvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10217 Spread spectrum configuration is part of clock frequency settings, and its behavior can be validated similarly to assigned clock rates. Extend the existing KUnit tests for assigned-clock-rates to cover assigned-clock-sscs by reusing the test framework. Add new test device trees: - kunit_clk_assigned_sscs_null.dtso - kunit_clk_assigned_sscs_null_consumer.dtso - kunit_clk_assigned_sscs_without.dtso - kunit_clk_assigned_sscs_without_consumer.dtso - kunit_clk_assigned_sscs_zero.dtso - kunit_clk_assigned_sscs_zero_consumer.dtso These tests cover various invalid configurations of assigned-clock-sscs, ensuring robustness and consistent error handling, similar to the coverage provided for assigned-clock-rates. Co-developed-by: Brian Masney Signed-off-by: Brian Masney Signed-off-by: Peng Fan --- drivers/clk/Makefile | 6 + drivers/clk/clk_test.c | 121 +++++++++++++++++= +++- drivers/clk/kunit_clk_assigned_rates.h | 10 ++ drivers/clk/kunit_clk_assigned_rates_multiple.dtso | 6 + ...kunit_clk_assigned_rates_multiple_consumer.dtso | 6 + drivers/clk/kunit_clk_assigned_rates_one.dtso | 3 + .../clk/kunit_clk_assigned_rates_one_consumer.dtso | 3 + .../clk/kunit_clk_assigned_rates_u64_multiple.dtso | 6 + ...t_clk_assigned_rates_u64_multiple_consumer.dtso | 6 + drivers/clk/kunit_clk_assigned_rates_u64_one.dtso | 3 + .../kunit_clk_assigned_rates_u64_one_consumer.dtso | 3 + drivers/clk/kunit_clk_assigned_sscs_null.dtso | 16 +++ .../clk/kunit_clk_assigned_sscs_null_consumer.dtso | 20 ++++ drivers/clk/kunit_clk_assigned_sscs_without.dtso | 15 +++ .../kunit_clk_assigned_sscs_without_consumer.dtso | 19 ++++ drivers/clk/kunit_clk_assigned_sscs_zero.dtso | 12 ++ .../clk/kunit_clk_assigned_sscs_zero_consumer.dtso | 16 +++ 17 files changed, 268 insertions(+), 3 deletions(-) diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile index b74a1767ca2787a978db36b0055ea34cb909310e..9e8c989b24be0f7cfdf2325c9b1= 9d05e9d2a8eb9 100644 --- a/drivers/clk/Makefile +++ b/drivers/clk/Makefile @@ -18,6 +18,12 @@ clk-test-y :=3D clk_test.o \ kunit_clk_assigned_rates_without_consumer.dtbo.o \ kunit_clk_assigned_rates_zero.dtbo.o \ kunit_clk_assigned_rates_zero_consumer.dtbo.o \ + kunit_clk_assigned_sscs_null.dtbo.o \ + kunit_clk_assigned_sscs_null_consumer.dtbo.o \ + kunit_clk_assigned_sscs_without.dtbo.o \ + kunit_clk_assigned_sscs_without_consumer.dtbo.o \ + kunit_clk_assigned_sscs_zero.dtbo.o \ + kunit_clk_assigned_sscs_zero_consumer.dtbo.o \ kunit_clk_hw_get_dev_of_node.dtbo.o \ kunit_clk_parent_data_test.dtbo.o obj-$(CONFIG_COMMON_CLK) +=3D clk-divider.o diff --git a/drivers/clk/clk_test.c b/drivers/clk/clk_test.c index a268d7b5d4cb28ec1f029f828c31107f8e130556..eb28f0a61ef0057bcc9c1d75653= 357a442bff81d 100644 --- a/drivers/clk/clk_test.c +++ b/drivers/clk/clk_test.c @@ -28,6 +28,7 @@ static const struct clk_ops empty_clk_ops =3D { }; struct clk_dummy_context { struct clk_hw hw; unsigned long rate; + struct clk_spread_spectrum sscs; }; =20 static unsigned long clk_dummy_recalc_rate(struct clk_hw *hw, @@ -83,6 +84,17 @@ static int clk_dummy_set_rate(struct clk_hw *hw, return 0; } =20 +static int clk_dummy_set_spread_spectrum(struct clk_hw *hw, + struct clk_spread_spectrum *conf) +{ + struct clk_dummy_context *ctx =3D + container_of(hw, struct clk_dummy_context, hw); + + ctx->sscs =3D *conf; + + return 0; +} + static int clk_dummy_single_set_parent(struct clk_hw *hw, u8 index) { if (index >=3D clk_hw_get_num_parents(hw)) @@ -100,18 +112,21 @@ static const struct clk_ops clk_dummy_rate_ops =3D { .recalc_rate =3D clk_dummy_recalc_rate, .determine_rate =3D clk_dummy_determine_rate, .set_rate =3D clk_dummy_set_rate, + .set_spread_spectrum =3D clk_dummy_set_spread_spectrum, }; =20 static const struct clk_ops clk_dummy_maximize_rate_ops =3D { .recalc_rate =3D clk_dummy_recalc_rate, .determine_rate =3D clk_dummy_maximize_rate, .set_rate =3D clk_dummy_set_rate, + .set_spread_spectrum =3D clk_dummy_set_spread_spectrum, }; =20 static const struct clk_ops clk_dummy_minimize_rate_ops =3D { .recalc_rate =3D clk_dummy_recalc_rate, .determine_rate =3D clk_dummy_minimize_rate, .set_rate =3D clk_dummy_set_rate, + .set_spread_spectrum =3D clk_dummy_set_spread_spectrum, }; =20 static const struct clk_ops clk_dummy_single_parent_ops =3D { @@ -3097,6 +3112,7 @@ struct clk_assigned_rates_context { * @overlay_end: Pointer to end of DT overlay to apply for test * @rate0: Initial rate of first clk * @rate1: Initial rate of second clk + * @sscs: Initial spread spectrum settings * @consumer_test: true if a consumer is being tested */ struct clk_assigned_rates_test_param { @@ -3105,6 +3121,7 @@ struct clk_assigned_rates_test_param { u8 *overlay_end; unsigned long rate0; unsigned long rate1; + struct clk_spread_spectrum sscs; bool consumer_test; }; =20 @@ -3116,7 +3133,7 @@ static void clk_assigned_rates_register_clk(struct kunit *test, struct clk_dummy_context *ctx, struct device_node *np, const char *name, - unsigned long rate) + unsigned long rate, const struct clk_spread_spectrum *sscs) { struct clk_init_data init =3D { }; =20 @@ -3124,6 +3141,7 @@ clk_assigned_rates_register_clk(struct kunit *test, init.ops =3D &clk_dummy_rate_ops; ctx->hw.init =3D &init; ctx->rate =3D rate; + ctx->sscs =3D *sscs; =20 KUNIT_ASSERT_EQ(test, 0, of_clk_hw_register_kunit(test, np, &ctx->hw)); KUNIT_ASSERT_EQ(test, ctx->rate, rate); @@ -3167,14 +3185,16 @@ static int clk_assigned_rates_test_init(struct kuni= t *test) KUNIT_ASSERT_LT(test, clk_cells, 2); =20 clk_assigned_rates_register_clk(test, &ctx->clk0, np, - "test_assigned_rate0", test_param->rate0); + "test_assigned_rate0", test_param->rate0, + &test_param->sscs); if (clk_cells =3D=3D 0) { KUNIT_ASSERT_EQ(test, 0, of_clk_add_hw_provider_kunit(test, np, of_clk_hw_simple_get, &ctx->clk0.hw)); } else if (clk_cells =3D=3D 1) { clk_assigned_rates_register_clk(test, &ctx->clk1, np, - "test_assigned_rate1", test_param->rate1); + "test_assigned_rate1", test_param->rate1, + &test_param->sscs); =20 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, data =3D kunit_kzalloc(test, struct_size(data, hws, 2), GFP_KERNEL)); @@ -3203,6 +3223,9 @@ static void clk_assigned_rates_assigns_one(struct kun= it *test) struct clk_assigned_rates_context *ctx =3D test->priv; =20 KUNIT_EXPECT_EQ(test, ctx->clk0.rate, ASSIGNED_RATES_0_RATE); + KUNIT_EXPECT_EQ(test, ctx->clk0.sscs.modfreq_hz, ASSIGNED_SSCS_0_MODFREQ); + KUNIT_EXPECT_EQ(test, ctx->clk0.sscs.spread_bp, ASSIGNED_SSCS_0_SPREAD); + KUNIT_EXPECT_EQ(test, ctx->clk0.sscs.method, ASSIGNED_SSCS_0_METHOD); } =20 static void clk_assigned_rates_assigns_multiple(struct kunit *test) @@ -3210,7 +3233,13 @@ static void clk_assigned_rates_assigns_multiple(stru= ct kunit *test) struct clk_assigned_rates_context *ctx =3D test->priv; =20 KUNIT_EXPECT_EQ(test, ctx->clk0.rate, ASSIGNED_RATES_0_RATE); + KUNIT_EXPECT_EQ(test, ctx->clk0.sscs.modfreq_hz, ASSIGNED_SSCS_0_MODFREQ); + KUNIT_EXPECT_EQ(test, ctx->clk0.sscs.spread_bp, ASSIGNED_SSCS_0_SPREAD); + KUNIT_EXPECT_EQ(test, ctx->clk0.sscs.method, ASSIGNED_SSCS_0_METHOD); KUNIT_EXPECT_EQ(test, ctx->clk1.rate, ASSIGNED_RATES_1_RATE); + KUNIT_EXPECT_EQ(test, ctx->clk1.sscs.modfreq_hz, ASSIGNED_SSCS_1_MODFREQ); + KUNIT_EXPECT_EQ(test, ctx->clk1.sscs.spread_bp, ASSIGNED_SSCS_1_SPREAD); + KUNIT_EXPECT_EQ(test, ctx->clk1.sscs.method, ASSIGNED_SSCS_1_METHOD); } =20 static void clk_assigned_rates_skips(struct kunit *test) @@ -3222,6 +3251,19 @@ static void clk_assigned_rates_skips(struct kunit *t= est) KUNIT_EXPECT_EQ(test, ctx->clk0.rate, test_param->rate0); } =20 +static void clk_assigned_sscs_skips(struct kunit *test) +{ + struct clk_assigned_rates_context *ctx =3D test->priv; + const struct clk_assigned_rates_test_param *test_param =3D test->param_va= lue; + + KUNIT_EXPECT_NE(test, ctx->clk0.sscs.modfreq_hz, ASSIGNED_SSCS_0_MODFREQ); + KUNIT_EXPECT_NE(test, ctx->clk0.sscs.spread_bp, ASSIGNED_SSCS_0_SPREAD); + KUNIT_EXPECT_NE(test, ctx->clk0.sscs.method, ASSIGNED_SSCS_0_METHOD); + KUNIT_EXPECT_EQ(test, ctx->clk0.sscs.modfreq_hz, test_param->sscs.modfreq= _hz); + KUNIT_EXPECT_EQ(test, ctx->clk0.sscs.spread_bp, test_param->sscs.spread_b= p); + KUNIT_EXPECT_EQ(test, ctx->clk0.sscs.method, test_param->sscs.method); +} + OF_OVERLAY_DECLARE(kunit_clk_assigned_rates_one); OF_OVERLAY_DECLARE(kunit_clk_assigned_rates_one_consumer); OF_OVERLAY_DECLARE(kunit_clk_assigned_rates_u64_one); @@ -3384,6 +3426,77 @@ KUNIT_ARRAY_PARAM_DESC(clk_assigned_rates_skips, clk_assigned_rates_skips_test_params, desc) =20 +OF_OVERLAY_DECLARE(kunit_clk_assigned_sscs_without); +OF_OVERLAY_DECLARE(kunit_clk_assigned_sscs_without_consumer); +OF_OVERLAY_DECLARE(kunit_clk_assigned_sscs_zero); +OF_OVERLAY_DECLARE(kunit_clk_assigned_sscs_zero_consumer); +OF_OVERLAY_DECLARE(kunit_clk_assigned_sscs_null); +OF_OVERLAY_DECLARE(kunit_clk_assigned_sscs_null_consumer); + +/* Test cases that skip changing the sscs due to malformed DT */ +static const struct clk_assigned_rates_test_param clk_assigned_sscs_skips_= test_params[] =3D { + { + /* + * Test that an assigned-clock-sscs property without an assigned-clocks + * property fails when the property is in the provider. + */ + .desc =3D "provider missing assigned-clocks", + TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_without), + .sscs =3D {50000, 60000, 3}, + }, + { + /* + * Test that an assigned-clock-rates property without an assigned-clocks + * property fails when the property is in the consumer. + */ + .desc =3D "consumer missing assigned-clocks", + TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_without_consumer), + .sscs =3D {50000, 60000, 3}, + .consumer_test =3D true, + }, + { + /* + * Test that an assigned-clock-rates property of zero doesn't + * set a rate when the property is in the provider. + */ + .desc =3D "provider assigned-clock-sscs of zero", + TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_zero), + .sscs =3D {50000, 60000, 3}, + }, + { + /* + * Test that an assigned-clock-rates property of zero doesn't + * set a rate when the property is in the consumer. + */ + .desc =3D "consumer assigned-clock-sscs of zero", + TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_zero_consumer), + .sscs =3D {50000, 60000, 3}, + .consumer_test =3D true, + }, + { + /* + * Test that an assigned-clocks property with a null phandle + * doesn't set a rate when the property is in the provider. + */ + .desc =3D "provider assigned-clocks null phandle", + TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_null), + .sscs =3D {50000, 60000, 3}, + }, + { + /* + * Test that an assigned-clocks property with a null phandle + * doesn't set a rate when the property is in the consumer. + */ + .desc =3D "provider assigned-clocks null phandle", + TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_null_consumer), + .sscs =3D {50000, 60000, 3}, + .consumer_test =3D true, + }, +}; +KUNIT_ARRAY_PARAM_DESC(clk_assigned_sscs_skips, + clk_assigned_sscs_skips_test_params, + desc) + static struct kunit_case clk_assigned_rates_test_cases[] =3D { KUNIT_CASE_PARAM(clk_assigned_rates_assigns_one, clk_assigned_rates_assigns_one_gen_params), @@ -3391,6 +3504,8 @@ static struct kunit_case clk_assigned_rates_test_case= s[] =3D { clk_assigned_rates_assigns_multiple_gen_params), KUNIT_CASE_PARAM(clk_assigned_rates_skips, clk_assigned_rates_skips_gen_params), + KUNIT_CASE_PARAM(clk_assigned_sscs_skips, + clk_assigned_sscs_skips_gen_params), {} }; =20 diff --git a/drivers/clk/kunit_clk_assigned_rates.h b/drivers/clk/kunit_clk= _assigned_rates.h index df2d84dcaa93511694b6da842debdc3cfd3a6c19..d7ae5ec2d25bed79b8438e8ce58= 0872131ce4286 100644 --- a/drivers/clk/kunit_clk_assigned_rates.h +++ b/drivers/clk/kunit_clk_assigned_rates.h @@ -1,8 +1,18 @@ /* SPDX-License-Identifier: GPL-2.0 */ + +#include + #ifndef _KUNIT_CLK_ASSIGNED_RATES_H #define _KUNIT_CLK_ASSIGNED_RATES_H =20 #define ASSIGNED_RATES_0_RATE 1600000 #define ASSIGNED_RATES_1_RATE 9700000 =20 +#define ASSIGNED_SSCS_0_MODFREQ 10000 +#define ASSIGNED_SSCS_0_SPREAD 30000 +#define ASSIGNED_SSCS_0_METHOD CLK_SSC_CENTER_SPREAD +#define ASSIGNED_SSCS_1_MODFREQ 20000 +#define ASSIGNED_SSCS_1_SPREAD 40000 +#define ASSIGNED_SSCS_1_METHOD CLK_SSC_UP_SPREAD + #endif diff --git a/drivers/clk/kunit_clk_assigned_rates_multiple.dtso b/drivers/c= lk/kunit_clk_assigned_rates_multiple.dtso index e600736e70f5041ddeb1bfb0d6074746a064e08a..6c54d65444d5d779c9fa4bb2a79= c4742dd88f6d0 100644 --- a/drivers/clk/kunit_clk_assigned_rates_multiple.dtso +++ b/drivers/clk/kunit_clk_assigned_rates_multiple.dtso @@ -12,5 +12,11 @@ clk: kunit-clock { <&clk 1>; assigned-clock-rates =3D , ; + assigned-clock-sscs =3D , + ; }; }; diff --git a/drivers/clk/kunit_clk_assigned_rates_multiple_consumer.dtso b/= drivers/clk/kunit_clk_assigned_rates_multiple_consumer.dtso index 260aba458daf2bc57fde46b5442453e7de10faac..b1fee396c4b1e51341a41116856= 9d8351bb23b12 100644 --- a/drivers/clk/kunit_clk_assigned_rates_multiple_consumer.dtso +++ b/drivers/clk/kunit_clk_assigned_rates_multiple_consumer.dtso @@ -16,5 +16,11 @@ kunit-clock-consumer { <&clk 1>; assigned-clock-rates =3D , ; + assigned-clock-sscs =3D , + ; }; }; diff --git a/drivers/clk/kunit_clk_assigned_rates_one.dtso b/drivers/clk/ku= nit_clk_assigned_rates_one.dtso index dd95ec9b1cf977883f71564a94602ae518937132..da6e91b9e6bda0ef2c8f601a08a= ef1f10fda4baa 100644 --- a/drivers/clk/kunit_clk_assigned_rates_one.dtso +++ b/drivers/clk/kunit_clk_assigned_rates_one.dtso @@ -10,5 +10,8 @@ clk: kunit-clock { #clock-cells =3D <0>; assigned-clocks =3D <&clk>; assigned-clock-rates =3D ; + assigned-clock-sscs =3D ; }; }; diff --git a/drivers/clk/kunit_clk_assigned_rates_one_consumer.dtso b/drive= rs/clk/kunit_clk_assigned_rates_one_consumer.dtso index a41dca806318b031187c1b8739fcf71eb088a480..4b6e06048f863d014aed8222652= d6d9d38e9238b 100644 --- a/drivers/clk/kunit_clk_assigned_rates_one_consumer.dtso +++ b/drivers/clk/kunit_clk_assigned_rates_one_consumer.dtso @@ -14,5 +14,8 @@ kunit-clock-consumer { compatible =3D "test,clk-consumer"; assigned-clocks =3D <&clk>; assigned-clock-rates =3D ; + assigned-clock-sscs =3D ; }; }; diff --git a/drivers/clk/kunit_clk_assigned_rates_u64_multiple.dtso b/drive= rs/clk/kunit_clk_assigned_rates_u64_multiple.dtso index 389b4e2eb7f74f1770ff5f5c4be5b45dd344dc9c..3a717dab2d00b7fdaff580e30ed= 2cc520683ef95 100644 --- a/drivers/clk/kunit_clk_assigned_rates_u64_multiple.dtso +++ b/drivers/clk/kunit_clk_assigned_rates_u64_multiple.dtso @@ -12,5 +12,11 @@ clk: kunit-clock { <&clk 1>; assigned-clock-rates-u64 =3D /bits/ 64 , /bits/ 64 ; + assigned-clock-sscs =3D , + ; }; }; diff --git a/drivers/clk/kunit_clk_assigned_rates_u64_multiple_consumer.dts= o b/drivers/clk/kunit_clk_assigned_rates_u64_multiple_consumer.dtso index 3e117fd59b7da19cd8a603af77eff29175ce6900..cbee7cbad068f3336f0c8997a5b= 3e9af4db565c9 100644 --- a/drivers/clk/kunit_clk_assigned_rates_u64_multiple_consumer.dtso +++ b/drivers/clk/kunit_clk_assigned_rates_u64_multiple_consumer.dtso @@ -16,5 +16,11 @@ kunit-clock-consumer { <&clk 1>; assigned-clock-rates-u64 =3D /bits/ 64 , /bits/ 64 ; + assigned-clock-sscs =3D , + ; }; }; diff --git a/drivers/clk/kunit_clk_assigned_rates_u64_one.dtso b/drivers/cl= k/kunit_clk_assigned_rates_u64_one.dtso index 87041264e8f544dafddf2e905efc89dc1f917c54..9b04d6927f0830a5621af1cbea5= 03a427b46bee0 100644 --- a/drivers/clk/kunit_clk_assigned_rates_u64_one.dtso +++ b/drivers/clk/kunit_clk_assigned_rates_u64_one.dtso @@ -10,5 +10,8 @@ clk: kunit-clock { #clock-cells =3D <0>; assigned-clocks =3D <&clk>; assigned-clock-rates-u64 =3D /bits/ 64 ; + assigned-clock-sscs =3D ; }; }; diff --git a/drivers/clk/kunit_clk_assigned_rates_u64_one_consumer.dtso b/d= rivers/clk/kunit_clk_assigned_rates_u64_one_consumer.dtso index 3259c003aec0be3269ab60a4a3a95df69f8de1f8..4784d40520f4193e4f08c898138= 6f0772a063452 100644 --- a/drivers/clk/kunit_clk_assigned_rates_u64_one_consumer.dtso +++ b/drivers/clk/kunit_clk_assigned_rates_u64_one_consumer.dtso @@ -14,5 +14,8 @@ kunit-clock-consumer { compatible =3D "test,clk-consumer"; assigned-clocks =3D <&clk>; assigned-clock-rates-u64 =3D /bits/ 64 ; + assigned-clock-sscs =3D ; }; }; diff --git a/drivers/clk/kunit_clk_assigned_sscs_null.dtso b/drivers/clk/ku= nit_clk_assigned_sscs_null.dtso new file mode 100644 index 0000000000000000000000000000000000000000..43b2068c845dea53ea1328bb63a= 2f58a4b8ef339 --- /dev/null +++ b/drivers/clk/kunit_clk_assigned_sscs_null.dtso @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +#include "kunit_clk_assigned_rates.h" + +&{/} { + clk: kunit-clock { + compatible =3D "test,clk-assigned-rates"; + #clock-cells =3D <0>; + assigned-clocks =3D <0>; + assigned-clock-sscs =3D ; + }; +}; diff --git a/drivers/clk/kunit_clk_assigned_sscs_null_consumer.dtso b/drive= rs/clk/kunit_clk_assigned_sscs_null_consumer.dtso new file mode 100644 index 0000000000000000000000000000000000000000..bda008f5aaa35e53af97863e4f2= e6d8a168cc053 --- /dev/null +++ b/drivers/clk/kunit_clk_assigned_sscs_null_consumer.dtso @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +#include "kunit_clk_assigned_rates.h" + +&{/} { + clk: kunit-clock { + compatible =3D "test,clk-assigned-rates"; + #clock-cells =3D <0>; + }; + + kunit-clock-consumer { + compatible =3D "test,clk-consumer"; + assigned-clocks =3D <0>; + assigned-clock-sscs =3D ; + }; +}; diff --git a/drivers/clk/kunit_clk_assigned_sscs_without.dtso b/drivers/clk= /kunit_clk_assigned_sscs_without.dtso new file mode 100644 index 0000000000000000000000000000000000000000..08660846b55c12122bfb211c01c= 377a3a45223c9 --- /dev/null +++ b/drivers/clk/kunit_clk_assigned_sscs_without.dtso @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +#include "kunit_clk_assigned_rates.h" + +&{/} { + clk: kunit-clock { + compatible =3D "test,clk-assigned-rates"; + #clock-cells =3D <0>; + assigned-clock-sscs =3D ; + }; +}; diff --git a/drivers/clk/kunit_clk_assigned_sscs_without_consumer.dtso b/dr= ivers/clk/kunit_clk_assigned_sscs_without_consumer.dtso new file mode 100644 index 0000000000000000000000000000000000000000..e1c089c6f0c0223f16f7ac9a396= e7ac7b821c967 --- /dev/null +++ b/drivers/clk/kunit_clk_assigned_sscs_without_consumer.dtso @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +#include "kunit_clk_assigned_rates.h" + +&{/} { + clk: kunit-clock { + compatible =3D "test,clk-assigned-rates"; + #clock-cells =3D <0>; + }; + + kunit-clock-consumer { + compatible =3D "test,clk-consumer"; + assigned-clock-sscs =3D ; + }; +}; diff --git a/drivers/clk/kunit_clk_assigned_sscs_zero.dtso b/drivers/clk/ku= nit_clk_assigned_sscs_zero.dtso new file mode 100644 index 0000000000000000000000000000000000000000..f39f4e754e532c9c1b1fdf03470= 0e5af1f3f0779 --- /dev/null +++ b/drivers/clk/kunit_clk_assigned_sscs_zero.dtso @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +&{/} { + clk: kunit-clock { + compatible =3D "test,clk-assigned-rates"; + #clock-cells =3D <0>; + assigned-clocks =3D <&clk>; + assigned-clock-sscs =3D <0 0 0>; + }; +}; diff --git a/drivers/clk/kunit_clk_assigned_sscs_zero_consumer.dtso b/drive= rs/clk/kunit_clk_assigned_sscs_zero_consumer.dtso new file mode 100644 index 0000000000000000000000000000000000000000..d6bd7dfada7e2f455cb23e483b9= bd6ce24839e3a --- /dev/null +++ b/drivers/clk/kunit_clk_assigned_sscs_zero_consumer.dtso @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +&{/} { + clk: kunit-clock { + compatible =3D "test,clk-assigned-rates"; + #clock-cells =3D <0>; + }; + + kunit-clock-consumer { + compatible =3D "test,clk-consumer"; + assigned-clocks =3D <&clk>; + assigned-clock-sscs =3D <0 0 0>; + }; +}; --=20 2.37.1 From nobody Fri Dec 19 08:56:28 2025 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010047.outbound.protection.outlook.com [52.101.84.47]) (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 4A7B323E359; Thu, 9 Oct 2025 03:49:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981744; cv=fail; b=qX57fww1PFN3uFUwOxAouftGPtMqf5rkHdt7r4znYc20p0wtc8zjVvf8pbVC07IiXEc6NMTUNemBfWe13733FKf0Yp0gzIskQto25JcrZ3nKtvJKW34wPoGYcASq0THWlArxZuHR62PvmC6/58mPAjsAmb7x3Qdb2MgvMtwjYpY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981744; c=relaxed/simple; bh=NGTTg3PlaerQz8kO1OE+x04WN7zdtC/9CPzewhvK9vY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=kNdPDkGNIIsyaImiyXB+ozuqjYM10nOvt0XXYN3pWFsIT8XB26HJaFdDpj508v43YijboKv64GlXQSblEP4Yz65uJYb0GJT+cwYIL+yOXLZTXgmibSqBI63gZDHSdcutZf3rd7quNUqamjRhaB29HdwqrMYWd3STHAUvzQo3c8g= 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=oGT2ZhJR; arc=fail smtp.client-ip=52.101.84.47 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="oGT2ZhJR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DhgMWdGJRXkhNhUy1cm5B1QvHJx/ob1bdVhXSGV1mGw2DS/n0aS34rqVB2QoqRMGNyBXnWoEQ+YcxwDbixTzvnTgpJzLgVMIjheLP+dWSetAYAEvIJl4GVq9bBbeqqSUknw5OUsMAg1fKKZJvzTPkJhyHbJkEy3/t6VrZAQN9QISFcTDP/1Sy5mSwItEEFEdS0kaKzVlzb9k3rdPrdkEQ5Jr4ylQp3QEJBa1/ga0MOy5T8BDMT2sN52r+nu3WKoZmZ2opA/QPmxcUfG5HN+nLj5sDYU6Nx51Z2Smj7XyW/ybKlbJQ5K3TV1S3rr8wxJOZji92O1bsG0f3K8+KTu0zg== 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=a/dWBPlS8tg2w8bAPeHkCwQAFycscw7MQexhi/fu+Do=; b=Wd2vLle89CC2hoCnFxFysyUJUnWa+EZ4VOHLTDtHq/j4K2Z2r5qOYyBttbJAISWgBOeebO3dAuhJW17xXcaCmtr37IDd3xLEHWudxDj6k6OY2rYbZKuPEiel0Vup05nguOYmj13yw6QIeByT9z0w7aOyMte4799EXKe5lILXYEB6anUnIvq6ERzxvv2ritcu45GUSh2rZD/Y9wcP7UPJD4eGJQ4pZTRnkU4WKTlHIwQz6qRzD75D3ZqvLvnX+2p4N1+fKa004VWKgnKuCWZLpssz4Nd+MRU2Lba2FaAFuS1aKm1z8OdQrDHVdpO5S1v2wXib2dMpkRqvQqssft3D0Q== 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=a/dWBPlS8tg2w8bAPeHkCwQAFycscw7MQexhi/fu+Do=; b=oGT2ZhJR7hjoK4mjYAEA/6H/bd85SYw2+w3zzkZtZXJ+5fNn6KIWBPeYRMjd1/8Sd7EKX7VytinTP0ZmIJUlSEEubTVshgYON5jmRFVZEh3sOqLBeA2Oe/esSwz1g/J29RjOW3bCcIK+MATK9ad5fq0JpjZjjM727tk2w7ioGW4GYuQWV2y8JK+tDwqXwDwQa5mLzB6CZkYPaKgAKD8KfANdkTDyyZvsabRlBXU9Ceyw5Rkka7QvHDd9gDZ8zE0V2Bl4DeC8MB/4j+Bb+8oulk1fXzb02VDs+IOCFQdrTYWC180ZmUrb80p1vXbYSTmkiQJe0LUsQXTJ1vV9RB13nA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by VI2PR04MB10217.eurprd04.prod.outlook.com (2603:10a6:800:228::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.9; Thu, 9 Oct 2025 03:48:55 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%4]) with mapi id 15.20.9203.007; Thu, 9 Oct 2025 03:48:55 +0000 From: Peng Fan Date: Thu, 09 Oct 2025 11:48:18 +0800 Subject: [PATCH v5 5/6] clk: scmi: Introduce common header for SCMI clock interface Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251009-clk-ssc-v5-1-v5-5-d6447d76171e@nxp.com> References: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> In-Reply-To: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sudeep Holla , Cristian Marussi , Sebin Francis , Brian Masney Cc: Dan Carpenter , Geert Uytterhoeven , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1759981702; l=2832; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=NGTTg3PlaerQz8kO1OE+x04WN7zdtC/9CPzewhvK9vY=; b=YpRItsJZ4Y9m9LAFWD6pwgHX3iB3P0yXqWo/M5HwtQUHd0U4m1L12OgvNudtjD/KUhzM+MR4j AGT6+JpA7TcAN1OVFJEqJv+OHsO8M965n55NQAOHvOLqt9dV531DJob X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2PR01CA0031.apcprd01.prod.exchangelabs.com (2603:1096:4:192::11) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) 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: PAXPR04MB8459:EE_|VI2PR04MB10217:EE_ X-MS-Office365-Filtering-Correlation-Id: fcbda495-3e57-41b5-91bc-08de06e6c51e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|19092799006|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SGg5SzNOWTNXdXBBQ3J3NU5OMVpIeXhyL1JjSnlsWUpUdFdySENGN2hrM2Fl?= =?utf-8?B?a3NXV1BIU2RCc09lZ1F3QWVsUElZeFZZMEZaTkFDRlBJMXpQMDBFWWptQVpM?= =?utf-8?B?cHJxc0RyQ21aRjdra0NTMEYyUTlHUmxuYzc5OEpZai9aa2VjdVlCN1k2WnY0?= =?utf-8?B?VlBSY1h6YXBVcUhpajBVN01OSU5rQWlseHVCMkh1SnlzZjV5TWtGdGNnaTgr?= =?utf-8?B?MTY1T0ZSS2JldGJya2djejUwN2psMmZjdW9oR05jZThaQkNvUUdzYXRjdTZn?= =?utf-8?B?M1VaOUdTNkhGNmJ4OGJSTm9FL2ZTQS83RTU3NkppNERjWTVyR2NWNEhvckMx?= =?utf-8?B?THVOdEE4djZoS3ROMVdBZE5obUt1ckZJaTJ6MFUxTi9TbXFRTGhYNGN5OHNt?= =?utf-8?B?ZnJMeXNsN2VVdGNzZHN6K3dodVM0MU9JUTZvYkZRNjJuMUdiSW56MGp4S1NX?= =?utf-8?B?cDBXa3krcDU4dnVFSDY1ajYrVUl3cGdmRGEvbEE1T3FzVFdkc2dSZ0FUWUt3?= =?utf-8?B?N2ZKV2hiUExKczdqMVhtNGNyTWJaaXhHWkVJRHJVOERMbW03N1BCZnRFVktM?= =?utf-8?B?YTZFMzVTNWdub04rZUF0RyttSjl3Y0JwMDNpc0x3RFBtMWk1ZUUrMDdUbDU2?= =?utf-8?B?ejdBbUprVEp1aC83TWZtTE9BczNZL2lhWXlkT3paYjRMMUdSV2JvR2FPREsw?= =?utf-8?B?anl0WUNXMHlXSkpoK1YrblNpeEJYeW1LZWJ2QkF6ekZFNUd4eTQ1ZThwbDRi?= =?utf-8?B?Y0lMS28xQ3BnQ2FIdXhtUnBsQUtWakVhWFJCWEg4RVhpN1VDdjZ1RXdLSWE3?= =?utf-8?B?cERINHFQZlcvVUlWa3RnSmxXN1g5eDY1MkZOWDV5aktrWjJLb2hHQ3FoV3ph?= =?utf-8?B?YnJNUDBYZ213cUhmd0tBaEZ3dW9UWTlHMFpib1RPUHhnT091c2o3RURMdGhT?= =?utf-8?B?Q3B0RTZWcXc4SjhwUnZXNmN6NVk5Sytobmp3V0IzWVJlNm5vNkt1citOZHlJ?= =?utf-8?B?bHl1TTJuMFp0K2tiRzlDSEswRS8yOXZaelppZFNRNU93MTJ5TDlXWXdVTDJn?= =?utf-8?B?UTlkbXpZcXJnM2t3bGlPTFFlSElPdWN1b0x1UzZWUFMvbEYyMG9TWndxVWRu?= =?utf-8?B?ZFp0bmNKYUluWlRiSDFTa2JQMENNeWd0NWlSQzkvOHVmdzhKQUNLVlBuOFVX?= =?utf-8?B?YXJlTEVHbUMxcUlLMi9OUVNOait5MEo3Q0RVL1RyRG9TKzd2SVRRdkR6Qksz?= =?utf-8?B?VGE3bWM2SmMyZk9oM1ptY1BjMUlJMjBIY0prK2s3czk2M2UvVVVHdzZ3Tk1q?= =?utf-8?B?ZytLcUhpdGFYRUJQNkhPR3BDSGJ2N0dHMEh2eFZZWG1DRGh5bjQrbHE2RUpi?= =?utf-8?B?Uys1NllRQXByVC9NZU10T1phWTZnRURwUjVvanozN2hEb3Q0M0dhWXY1K2lC?= =?utf-8?B?a2Q2T2NHbUYyWW1zNFhrRWhBQUZrNVBVK0wrRXJDWW9FV3Y5ZFJubEpLdG1B?= =?utf-8?B?cytzdDNPTHB1SlJ0T1o4ZjlFWnY2WGJ4UHFsenRSLzdJUUROREFzZTR5b0da?= =?utf-8?B?TUdrK0FWYmF3YWhDcEV1d0ZiNEZ2LzI4RFh3aGRLS01IaWIvNkhQMEVZa3J4?= =?utf-8?B?QlNsaytGemlxM1ByU3BTbHFSTDdzT1BEMVNaaDBtVUlNMmw5Y1JtVUVUN3Ft?= =?utf-8?B?dDYralV6ZkdZT0VzamxaQjVlb1lHQjlRMUE1Qlc0UXFiMWpBc01rd2wyNTFD?= =?utf-8?B?Zkx5U0k1SFZMT3pHa09GSG9QTG5HNVZQeGo5UjZyMEdxQnBmME1NU1FyZnF1?= =?utf-8?B?Y041WERBQlNUcVVJdGlJN1NiWVF6TzBudkJGdHBOc3lEK2xxdkR6VXlDLy9n?= =?utf-8?B?YXBmeHUrcldVVjRuaGVIQkhSbmVQeHYxMjNkdE5zbGp6c0ZXYTl0UG1RNFVQ?= =?utf-8?B?aVJxajVSbG02MFBCQ0RkYlU0NmNBZVVzeWtCK3FkbXoxM3lPbnZoczcrUXFY?= =?utf-8?B?eit4VFdmUlR4Z3VKQmZxSU5YVXgxL1A3N0R5bkwxU0RtQm1kUHFIVjZPY0hX?= =?utf-8?Q?pQoQ1S?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(19092799006)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?amJxNmRPWWpaWjhHVk9vbElVYkx3NDBFK2oycHFhK0ltb0cxRS9FTXM5Z0Fj?= =?utf-8?B?NUVkKzFHL2Q1NUZIenp3N1N6Y3dNb0xCT203SXhpUlZ6Z0N1WnBVa2NsZkVh?= =?utf-8?B?SWdlY1VVTzM4SVUwaXMyQ0thc3NOelFYamZHOFBwV2JscTVSRkVmbkRGczZM?= =?utf-8?B?cU11Wi9hRFdhb1FpY0pPa2tRdG0zQ1Q3NDFPcFFuRys4R0xtSkVvOHUzVElL?= =?utf-8?B?bjVlOXJpZHpGdlJuTGxNSkJjeFpDWVBwK3RUb2VLOUZsdndlWXFrRnRkMldU?= =?utf-8?B?VUlZUVNreEJ2RzNLYXNjeExrVVhUT2daS2RESC9INVRtMFNGLzNadnpoam9I?= =?utf-8?B?T3pvSUFqaGtKUW9JcTJLUkxQSjJyNnVITWhKQWNBV1UvK0oxN2czSUV1d3Er?= =?utf-8?B?dm5VRDJ6WkV3UzVYaTNhbTNqUGcranNEeklMMHZObE1kamYxUGlOaTAvNVM0?= =?utf-8?B?SXU2VE13QU5VYkZDNmYzaXhYRVRnWTNCRG5QcUEwckJzQzlBUGhnY1hYL2JN?= =?utf-8?B?dldVQUJhUUoyODNxK0I3RTYzcDZOZWx2Wml2c2h4aW5qbmExbFZUZm1uemhz?= =?utf-8?B?SWdtM200T015elVwblAyd0hteEVnNzFwM00yeDdmYW5DTjJkQk02V3F3Qmtm?= =?utf-8?B?VGxqVUJqOGI4eTU1c0tBSzBKMzdIV1hmYURmdDF0ZVVMa1BBcDdCbUtTQ0hz?= =?utf-8?B?bEJMdkhza2FlSGlrNW1GVnliZVc0R0pyUWF4cVFGeXU1MXJvK211cmFOd3Z6?= =?utf-8?B?K1hjMis3UVdvNUdJZC9rWmI5VGJOS3pBSHhBT29iQ2MwbkpEdWxXTUFPT3VQ?= =?utf-8?B?UnFWQk5NWUlZSld4V3BhSW5sc1g1WXl2UThKcmt5RXZ0Y2ROQzkzTXBMcUNO?= =?utf-8?B?dzZoZ2ZKc1l2a1haT1JOMlBUS3d1QnVSekNJSUNYSTYwdm5ud0lURk84QzU3?= =?utf-8?B?ZVE4TTJobWYrQzEzYjlsM0FSa3lCR3BBTFc1THU4ZUlYYW9adHJNMnA1MjN0?= =?utf-8?B?eDMweXhvYW0zVzBoeVpOaGZDS1NQa3RpSnhUbVhDSWRHSW1VQS9JVmRsSW1z?= =?utf-8?B?cVJlanNWbk1wQUpnaG9hZWV2cW5oZmRHVjcvTVVXeWRoRnZhQ1k1RngyUHRM?= =?utf-8?B?VndnUEszai9Gd1J1OExZZ3dnZ2ZyckEyQTBRejgyajk5dWpHdllTeW5pOThM?= =?utf-8?B?WXFvYU5XdVhJUlo0N1VGbXEyMFE5Z2ZGNC9kdFVPR25BY3dZTzQxaHNHNGQv?= =?utf-8?B?Ujd3SmZiY0NvT2ZrR1ZqaHByNHpHekJZNys0d0xaSWNqYjlQTnNuOFZvNmwr?= =?utf-8?B?K3R6OXo0b2dGb252S1ZkYTVtL0ErSmJlS0JGYml1Mkw5S3l0UTcxL1YvWjAv?= =?utf-8?B?Z2k4ZEhzaGVqYVYzM2JlZDJWaEFjYW9mcHpuVFVxYWw0M05QVG5iL09jYjV3?= =?utf-8?B?SjJ0S2pYQnZQVTlkeVVjZGM5ZVphSDNDRnRUVjFPMkRNSVU5V2ViZEdwNG1M?= =?utf-8?B?dVhQU0VCRVd0YUdlRWpoWk8vdjdVSGh5Z2ttK0FwU2F5dG5ybDZrbFBzdW9o?= =?utf-8?B?dlh3TVY4QTFRWGxDNllzNE95OHE4RUlYNTA0YXhBRENIQUN0MFlsWUVnZU5h?= =?utf-8?B?b0lsemRvdmlnK21KRUNwZ0tLZ3ZyYXA1SXViQnN5bWQ2WE9mZFg1QjUxVE91?= =?utf-8?B?L1l2bi95OHoyTGZGZjdHK0ZoTDJoZFNDckxjUkMybjZMMzBMZm5QbmxGWUJa?= =?utf-8?B?MFJtVVhMdUh1R3NIMS9ESzFqdHVrN2ZITktJc2IzdDAxM0pFcG45SXJVcDUv?= =?utf-8?B?dlVxT0U2OU90YnF4UERoRVBRaTYzaWtGUS9rWldNUkxCdi9McUkzQ0Vta1NT?= =?utf-8?B?amM0U2tJMG9tMlBQcENLZG1DQ3IyRk9rbVlvclBTZE1jbERCMUd4WnNPTWVE?= =?utf-8?B?VlBFdVAyd3EzUXQzNE9EdE9pczB5eWNIbjlNanpVS0g4ZGZ3ZUsxKzhqT3hv?= =?utf-8?B?NERXYzBiVWdIY2xlZG16anlpTkpaMGdLZDd1YjE3ditZcWJSMmhwajJBN09K?= =?utf-8?B?cUhYUkpDME5sbzFRV2VxRmpvSXJWZXBQU0MreEJSRWdXbTIvU242SzFaZUlk?= =?utf-8?Q?9x28z5qcYdsiXAmuE+0613ehO?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fcbda495-3e57-41b5-91bc-08de06e6c51e X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 03:48:55.3712 (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: St0DFbeihIL6+j+oaHiPtvXoymc4i5F/vXqSXf3f2xe0kYrsQY+qDF9Spsj6U4In3iOTTjpzz0tpxeH46J7wYg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10217 Added a new header file 'clk-scmi.h' to define common structures and interfaces for the SCMI clock driver. This header will also be used by OEM-specific extensions to ensure consistency and reusability. Moved relevant structure definitions from the driver implementation to 'clk-scmi.h' to facilitate shared usage. Signed-off-by: Peng Fan --- drivers/clk/clk-scmi.c | 27 +-------------------------- drivers/clk/clk-scmi.h | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c index 6b286ea6f1218c802d0ebb782c75a19057581c20..bf85924d61985eb9e596419349e= b883e3817de73 100644 --- a/drivers/clk/clk-scmi.c +++ b/drivers/clk/clk-scmi.c @@ -14,32 +14,7 @@ #include #include =20 -#define NOT_ATOMIC false -#define ATOMIC true - -enum scmi_clk_feats { - SCMI_CLK_ATOMIC_SUPPORTED, - SCMI_CLK_STATE_CTRL_SUPPORTED, - SCMI_CLK_RATE_CTRL_SUPPORTED, - SCMI_CLK_PARENT_CTRL_SUPPORTED, - SCMI_CLK_DUTY_CYCLE_SUPPORTED, - SCMI_CLK_FEATS_COUNT -}; - -#define SCMI_MAX_CLK_OPS BIT(SCMI_CLK_FEATS_COUNT) - -static const struct scmi_clk_proto_ops *scmi_proto_clk_ops; - -struct scmi_clk { - u32 id; - struct device *dev; - struct clk_hw hw; - const struct scmi_clock_info *info; - const struct scmi_protocol_handle *ph; - struct clk_parent_data *parent_data; -}; - -#define to_scmi_clk(clk) container_of(clk, struct scmi_clk, hw) +const struct scmi_clk_proto_ops *scmi_proto_clk_ops; =20 static unsigned long scmi_clk_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) diff --git a/drivers/clk/clk-scmi.h b/drivers/clk/clk-scmi.h new file mode 100644 index 0000000000000000000000000000000000000000..6ef6adc77c836dc2d599ff852cd= c941f217ee388 --- /dev/null +++ b/drivers/clk/clk-scmi.h @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright 2025 NXP + */ + +#ifndef __SCMI_CLK_H +#define __SCMI_CLK_H + +#include +#include +#include + +#define NOT_ATOMIC false +#define ATOMIC true + +enum scmi_clk_feats { + SCMI_CLK_ATOMIC_SUPPORTED, + SCMI_CLK_STATE_CTRL_SUPPORTED, + SCMI_CLK_RATE_CTRL_SUPPORTED, + SCMI_CLK_PARENT_CTRL_SUPPORTED, + SCMI_CLK_DUTY_CYCLE_SUPPORTED, + SCMI_CLK_FEATS_COUNT +}; + +#define SCMI_MAX_CLK_OPS BIT(SCMI_CLK_FEATS_COUNT) + +struct scmi_clk { + u32 id; + struct device *dev; + struct clk_hw hw; + const struct scmi_clock_info *info; + const struct scmi_protocol_handle *ph; + struct clk_parent_data *parent_data; +}; + +#define to_scmi_clk(clk) container_of(clk, struct scmi_clk, hw) + +extern const struct scmi_clk_proto_ops *scmi_proto_clk_ops; + +#endif --=20 2.37.1 From nobody Fri Dec 19 08:56:28 2025 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010002.outbound.protection.outlook.com [52.101.69.2]) (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 41E41245022; Thu, 9 Oct 2025 03:49:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.2 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981749; cv=fail; b=YmKhSv/PIUbLjuQ+DGaiqjL52n25aa+vt+0pSD/IG0OMUefAvtjr1Ryh3Mdrarp136r3hYPSt7l9+f0LzM4o2uzrAKl6j/02fVgiV1PhUzWh256Sd6E4+9eLM4nviCBIfRsoVnql80hTOQWeksulShp9+79OGjrcCpsbGBXjPtY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759981749; c=relaxed/simple; bh=75cZrqNLayxLEh6MIXBbMp56UatCqr2hni9P6KOJ/Vo=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=rUzQOQ7EfrN1H1jLTMaS/s3xC7bSBIotzDRLbGuZvXcSFik1Hf41RAdh19ItJBiaO9PFdknVzqocImkUXhaPhmKbl7zlwTyBF78lmDitb3NK2D+WOeSwdEN/hna/g7elcXn4q0wWWa8vqCZ/vEufb1q7YFo1V939ZURPp2s9/hg= 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=SHidlbKN; arc=fail smtp.client-ip=52.101.69.2 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="SHidlbKN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Cm79nb4mzpmLp3pvgkaupNzj8ISwiEELzx6xgasgMdhenwqD0G/ema4kv3+ASVwqk5DW9rx9ocdeMvh+PWNmbSYwaLMeSv/G/gRCbuAiMnwSl9Z7ZclE5UDQTlrDzbI1iWiFdaiXVaMyzQg4MrVsAlCgJXYSG4lVRGt0qLNVoMSUojqW2NrF0QMyfStLTKB+WYC5Q4X0RXwUQ3bc8Cz+C/UCQrmUTjHKBwvSw855aquT7rS2jzaVIdhaESs2146RNaprXQRqJeiK/bfHySEaj+rur5e0B17lrJ0yj/ylk3563xR6J5PARaRqW3m7uo5XGvG+PuC4MneMCD4DvO0gfQ== 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=5UKNO31PnXDDu24iKJgXJbyrbta8LohUN0X/i1jK9TE=; b=R4jIQDEK2hp7dDcbd7a4RzqgHUGbWUSjhDFti/Aan4YyVaG5TexFERnCEYeq1StBZDuSf0v2uriD/zuxH1tZhyennVGmVRfekABxSc8n6F3IKmY1w4x5irzGrvWb9DDv5oeAWFLZl9hlxqbYmg5OtfSWwvl09PsKak9wFUi+dnvwtwcSs444eY36skP4ySf0qiUHGgLjNR7QtDqraEtMi5aABTQn6KSdA+Zcytl7SUimR2A9F3Qz42C5JkziHguDJdvz5X3+02F12TqM+xsNva50hBpg1KLIqj+8XQzd9L8ZYWC+ahq20yGVMVVtGS1qR3T3H5Z6KOM0K0vDuF66GQ== 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=5UKNO31PnXDDu24iKJgXJbyrbta8LohUN0X/i1jK9TE=; b=SHidlbKNqMtUMZHreI4yQnQL9dNF3gNz3GvrskXNAqpPsSZafRcvCbsp+C+o/mDilgmKWlFg3lMTtsQoi6oTfiKalI05NxlMC/va/qnot4P/Ga7U18Q7gnu4d1ThdXgWdC3glZlaocroytbMH1+tM6+r6ieExlMSf3S3DO0uQWrGtArfgYZxgrwhtcawsPo40XViPfFGoUvthysesOAuK9oxSVj4SOQyvU2aZgCTWYQ/OjiW8DWPmS3fAtPp2xzV7H/AE9flgBc/PWLx/BVmSL8DzCGtmNBqF/Zk/lY4twHJjds1L+Jp/+WTEiZ1+jQqYqTUZxrk9RxswLjuyeTjpQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by VI2PR04MB10217.eurprd04.prod.outlook.com (2603:10a6:800:228::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.9; Thu, 9 Oct 2025 03:49:00 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%4]) with mapi id 15.20.9203.007; Thu, 9 Oct 2025 03:49:00 +0000 From: Peng Fan Date: Thu, 09 Oct 2025 11:48:19 +0800 Subject: [PATCH v5 6/6] clk: scmi: Add i.MX95 OEM extension support for SCMI clock driver Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251009-clk-ssc-v5-1-v5-6-d6447d76171e@nxp.com> References: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> In-Reply-To: <20251009-clk-ssc-v5-1-v5-0-d6447d76171e@nxp.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sudeep Holla , Cristian Marussi , Sebin Francis , Brian Masney Cc: Dan Carpenter , Geert Uytterhoeven , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1759981703; l=8820; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=75cZrqNLayxLEh6MIXBbMp56UatCqr2hni9P6KOJ/Vo=; b=2SqhEvNyzuK7N/5cZlCA2r9FufkYfbHj2sC24OHKGvcvfrufuh0rrOhuq0xXc5Sgve4+4a4HX CWOaDCLZM4LDeiHgiuhJ3D7ocZplGV6DCrPcA7osESmf/I7CySPsG05 X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2PR01CA0031.apcprd01.prod.exchangelabs.com (2603:1096:4:192::11) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) 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: PAXPR04MB8459:EE_|VI2PR04MB10217:EE_ X-MS-Office365-Filtering-Correlation-Id: 144a174d-7135-4a9c-cf34-08de06e6c7f0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|19092799006|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?emlEdXUwRGhiaG5vN2Q5MG1WamhIRCtHVnJ4NFdaTnhkRTBOOVAzZnd1TVEz?= =?utf-8?B?dEcvU2cyQ0tiKzUxTEU2ckdmQS91ZjRZMzZtdUtxWkpEcXhOSVFQaGI2REJ4?= =?utf-8?B?WTN2YitKVmpNV0MvN0hHMjlKTGpEcnFNZFVNUDJ6ZDB5WGR3aHl0Z2RrU1A5?= =?utf-8?B?OE5CRGNyZUpnbi9sQmpQc3crUC93Wi9TcWYxSDNFSUpKTklFVllLeDZiYWlN?= =?utf-8?B?QzlST0pDWjhJa1AranFwaFNyRnA3a0QrRGFsdVZ4UjRwZkZSeDBqOVVSdXRO?= =?utf-8?B?bC9JM2ZQZjFOZHowUzdBQVB2c1JsR01oMFg2Ukhsd0lBb2JrdUZMOW10MlpF?= =?utf-8?B?VHMxT1lTa2RKZXpCakI3UnlKTFNNUHdXcklmY0hva2ViQ2owVy8ycGEvZ1lR?= =?utf-8?B?V3phNm9WdkozcmRsZmlZRGZTQ2JJdU9NNW1NY0xKWjNneC9lMkxidFNEOCtS?= =?utf-8?B?USt0TzRtQk1qY3lXbWRrcUxZejZCZEdkTmQxTzN5MmZJdVJQS2tFcXJYczVI?= =?utf-8?B?RGRCQnNYWE1SalBLY1JNNkpIK0Z0VHVrTjZOOWt1bmJWVGhmLzJPMTNpOXl1?= =?utf-8?B?d3N5Y2UxS2dTVVhFWUdHVHhrVFNCelcwZEtVSFdvOWxJaXlRWDR2cjliaW9y?= =?utf-8?B?TTFTT0QvczdTRGJJTUFmYk5CODVMU1JKVUFrWERtdWlOQU9tN1U5MnNWT0RW?= =?utf-8?B?UWJTTkNKTFdhRnIrd0VVMDl5MHBOczUxQ05PU2FFOXdVUnRhODBkbXF0Q1Rr?= =?utf-8?B?QUpoRVR3T0ZFbXJ0NFlYazlBNVRobzBSeUlvc2cxN1I4SDEvZEdYWFBHOFl2?= =?utf-8?B?Y3BlSURHcUJEQkhySUJYSXZra2dSRlZ4Nk9ldERnY0RuenRFU2UvQlJHTHJP?= =?utf-8?B?QTFwdE9oWkRJbGd4ZUxuMkxCcmgyL0VJc0FCTnFUdWt2TkZyRk13ZU1nbmFl?= =?utf-8?B?Qk91eGJRakJBSjRFWHFjSHJMallzR25BRW5UQ0xWejlZL2FaNEJrMmthVTZT?= =?utf-8?B?NUc3VGR2N3pOWFA0N09hY1M2VDhUZXFoQlh5bS9jK3A0V3dSVXdhZTE5dkE2?= =?utf-8?B?VmRaQVR6UEdsbEp3cnY4dTFKbnJldkcwWW16Y3pTdzlhR28vc0Y5Qno1QWtP?= =?utf-8?B?NmExWVJ5YmxEbEJwV1JqcC92dzI2TTZOcVhzcWM5V1dXRmhiUkpGNXFWQk1Z?= =?utf-8?B?MzN1eVp5ZkMrTFZ5RGVyVWRZdnFyK2tUSm1MaXdXNmU5aVBNOW92dnFnOExM?= =?utf-8?B?UnMxOWJuS0ZyVVVkcDcwalBtYjlnQmw2TUJxcUQrNFFrdWlhZERRT1hvejAv?= =?utf-8?B?ZmZYRDRUaFFxR2NneVNCVXhTQTRKajFER3ozTFZKMUh5M0E4MjE1L3B0aWtj?= =?utf-8?B?c2wxSEJsblZqSFdnbEM1YWo3MTdaMTlpMDdid3RDcjE4Z1ovdXVjWHAyNXFv?= =?utf-8?B?ZXJHbmtDemU2Q3MzOWRaTGxqOHpydVJiUTVvMnZwYlVud25pSHRkeFVtbnBW?= =?utf-8?B?dnhOTG9ZV3k3UC9aUjNRYmdZVGhHaDhseXNBSEJsNTBuQ2tJSHVUTnFSY0FV?= =?utf-8?B?eVBocUFhZXZXVjhrc1NXZHZrVXdPbk9wSjdacVNNaHNPZXBoL1pQclkxV0Ev?= =?utf-8?B?dExKeDM5ckFQWmFsUkQ3bHZ3NnQ4WGdHOFNxVTU2QlUrUm1VOUc5K1ZWZ3dC?= =?utf-8?B?SFRLOFNvRWdJRGcwT1FndEYwVExoTnpOZ0dpdy85Y2l1bUt3UWZxMFdLbHp3?= =?utf-8?B?NG52YS96RjliUTVPcmc0YzI0eXFPWFhKdGJmeUxCb09iek9MMlVaMVk4SHNr?= =?utf-8?B?ZFZrUy9ySVZHbjNHSGFNTHFQRDNqTjhoaE1mUng0ZDBiNnI0dE1mdzM4UHhN?= =?utf-8?B?RnAxRUpQTGNrak50UVJycElackI1NnBJMUJDbklGd3drNFVhWVhmVk5sRmJM?= =?utf-8?B?Ynh0cXYrME9nZmQ2eXNHbjVzMXdzYk1PYURSeEFiamVxVDIybk13dlRwSSta?= =?utf-8?B?dkRjMVF2U3VISUNJSEN0bFU3TWVKUXVDeDlxd3lja1owdVBybE9WSEVlaEYv?= =?utf-8?Q?hkn5jW?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(19092799006)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YzhSS1VhY0lMcjFoY3NhbzU4QzFJcTluRUVmU3dPOWw2RXBJZ0pqeVdPSnIv?= =?utf-8?B?bEE3SW94MEVELzAwNXFGMjFkWDVERFAvOEtCaTdEU1FITEVLbkMxNHZ4QjZK?= =?utf-8?B?ZGNkSVpZeDlOVVJ4YkIzbmVPcGNUclkwa2FjR1NobGlCS2JYQUNadmpaL2tY?= =?utf-8?B?bHhXb3p3MVc1K2VVR0ZpVVJLLy9MLzF6MEluM2duQ0dwM3hkaWdibU1iRW9j?= =?utf-8?B?M3NCV0ZrbjZLMHd4OTkzcTQ3bzdxZC9QU3RXMVM5RUR6cGxKT1pEajZLTFlr?= =?utf-8?B?bG9OWjBYOU93U3l2OEZLamF5SFd5b3MySHVZaHh5QnZaQmkvL3hSWDZ2VW5E?= =?utf-8?B?RE9XcEdGTVBrYXpkcXlRL1ROaGFFbXVvZCtwakhHU05CcXIwdS9Ha1dJWnJv?= =?utf-8?B?UHVrYjJQak1OQnRobU5Hd0paQ3lTL1ZkK3lqZzBUV3JaUTlWMS9ZMjlqWjhv?= =?utf-8?B?RkZNaFJzR1VWVGQxRytkT1BSd1hVTmFlNnJacTAvSTA5emtvQXU3Qm5EQTI0?= =?utf-8?B?djhzZFJHUVNnZjdOMDQwdFprT2NER1RZOVJOb1hmbFRQdWNiOWQ4cmxCMnNB?= =?utf-8?B?OUdZZzJOQnoyWDVlS1RpNGx1c2RXY3c1bHVScHU5eE5Sbm55N055cFJzaDJ6?= =?utf-8?B?TUlYY0JQN3hKWC9tckorOGwxeXRzamxnbEtzcUJwck1EaTM2M0RkWUtxSDBW?= =?utf-8?B?LytnaStnWjZaN2VQY2JXMnlEc2xSc2xSRlQyMHpUNnB3R0N6UC9hejg0NVdS?= =?utf-8?B?WUVxajhyYzVwem52N2JmaFdkZ01pMWtNOTdZRHhSU2ZUbk9VUGN2eEx5b2NF?= =?utf-8?B?UFJwZzlNUjhXS0NYTWsvdXhPSUlnSEJjU3hPMkE3K0Z0cUlKS255Rm95MmV1?= =?utf-8?B?NkpWWk10UkkzK2N0UGhxQlErUFJZU1lyRHJPRWFoQklxT2ZQTk5sQzJycHVG?= =?utf-8?B?MWZ0VHZIQnFubVBpdFZxeGRUdll1TmY5U01oSTVONU1SZGFhcVhqZDdnRTE0?= =?utf-8?B?c3lIMWc0Q3NtZ2FjSHoyZXgvNklBekpjL2FnL3UzL2o3Rkd1dGxxeWpyMmVG?= =?utf-8?B?TjBYK0NCNDk1VjR1VktJdU01ZjZaalR1TnhZUkpVN0diSzBPZmVCdkhnZUdF?= =?utf-8?B?VHRyS09kVThSRW5EY3QxbEFXYTBMV21IT1lMZmxjZnNDejRkTjRRdVd0WitG?= =?utf-8?B?dFhHdDErajNSbm9NYWhRekhpTEJlai9jY0R0cXJKZUJWUFVmR3ZEcGNMdGp5?= =?utf-8?B?REl6elFXYkJIVGR2Nmczako0VmNheVROUzJKdmxNdHppaC9VOEZMR1h5a1NM?= =?utf-8?B?dVRSYUJxOXdFM3pFY3VTVktxMCtwUWRBOUYxamM2QjlLSC9zVTh6cCs5WTAv?= =?utf-8?B?dDlXaDFkb2RJOEt1Nm0xQjBwZ3M2OXArSy9CRjlvMjlJMTlGbG5TT09aS3Bz?= =?utf-8?B?Z2xJZ2E3M3BZVitFTHJuUExtVEJvWm9aMzk2VnV2TTFiMG14SFhBSnpjWm1G?= =?utf-8?B?ZkdwMVMyajV4dzE4aTdqU0hFUVY4M0llVmwzRVNFYUVNSFdCbHpNY044a0x4?= =?utf-8?B?QjhQSS9seTltZW9UUCtzV00zVWJ3dlFUNTN0QXo0VEp6NzdQaExTSVpGOGhj?= =?utf-8?B?SkNpMEFIbDg4OEZmTmFLTFRscEJVZWFJTnp6bTN2SlMra2JrRDNOcTFaNVdQ?= =?utf-8?B?WmM0c3Y4QWVuZld6NW03dlo5OHdyTjFReVc3YStCUGk3OGloeC9rZEJMY0Ju?= =?utf-8?B?djVOYTlJZkt3YTBNV3NYV3FsRzNZWXkvWFREeTdMejRoemV5ZzVyTWkzZjk5?= =?utf-8?B?dVRnNlFCeXZobmI5cEs1dHZ6U281YmZpdlhmTzdzc1ZqUzd1cmxjNjdGbmMr?= =?utf-8?B?UkxUWjlsWHBlNmNWRGdCYWJmRjhmUXlJSHVIcklKWEcvQnJETEd5YzhFRldV?= =?utf-8?B?T3ErbnB4dzd1eTUyQzhhU2J6RzBvVlFmVTFaTlJROG9ucTZmdzNIN0FLNHpk?= =?utf-8?B?WTJWanM5VUJZNXVaWWQxQlNzMTgrS1V3UHFZSGVtWG5lc2RoUHRyNTRxQVR1?= =?utf-8?B?QVd3cUtpbmdvWURCNkJoOWZQMVNKekN1Mm5NUEVIbHB3ZzErbWtRK0p3dDBa?= =?utf-8?Q?ZRjUVdG2nZ21f4TRPT1YsVDBp?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 144a174d-7135-4a9c-cf34-08de06e6c7f0 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 03:49:00.1070 (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: SrfH/8okQA+Zs07JUaKZgzuHUZnF5KXLx2N2tYe6+h0aUTPy7d7kcTP+kJ4DCsJB5I8MQuZG4AHcwQGLyo3ujg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10217 - Introduce 'clk-scmi-oem.c' to support vendor-specific OEM extensions for the SCMI clock driver, allows clean integration of vendor-specific features without impacting the core SCMI clock driver logic. - Extend 'clk-scmi.h' with 'scmi_clk_oem' structure and related declaratio= ns. - Initialize OEM extensions via 'scmi_clk_oem_init()'. - Support querying OEM-specific features and setting spread spectrum. - Pass 'scmi_device' to 'scmi_clk_ops_select()' for OEM data access. Signed-off-by: Peng Fan --- drivers/clk/Makefile | 2 +- drivers/clk/clk-scmi-oem.c | 103 +++++++++++++++++++++++++++++++++++++++++= ++++ drivers/clk/clk-scmi.c | 19 +++++++-- drivers/clk/clk-scmi.h | 11 +++++ 4 files changed, 131 insertions(+), 4 deletions(-) diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile index 9e8c989b24be0f7cfdf2325c9b19d05e9d2a8eb9..fd54e2fe3c429362b93457d0e34= 9e1deab2320f3 100644 --- a/drivers/clk/Makefile +++ b/drivers/clk/Makefile @@ -95,7 +95,7 @@ obj-$(CONFIG_COMMON_CLK_RP1) +=3D clk-rp1.o obj-$(CONFIG_COMMON_CLK_RPMI) +=3D clk-rpmi.o obj-$(CONFIG_COMMON_CLK_HI655X) +=3D clk-hi655x.o obj-$(CONFIG_COMMON_CLK_S2MPS11) +=3D clk-s2mps11.o -obj-$(CONFIG_COMMON_CLK_SCMI) +=3D clk-scmi.o +obj-$(CONFIG_COMMON_CLK_SCMI) +=3D clk-scmi.o clk-scmi-oem.o obj-$(CONFIG_COMMON_CLK_SCPI) +=3D clk-scpi.o obj-$(CONFIG_COMMON_CLK_SI5341) +=3D clk-si5341.o obj-$(CONFIG_COMMON_CLK_SI5351) +=3D clk-si5351.o diff --git a/drivers/clk/clk-scmi-oem.c b/drivers/clk/clk-scmi-oem.c new file mode 100644 index 0000000000000000000000000000000000000000..0d7f4e423168f759ecf4fcc9e51= 324420e19f97c --- /dev/null +++ b/drivers/clk/clk-scmi-oem.c @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * The Vendor OEM extension for System Control and Power Interface (SCMI) + * Protocol based clock driver + * + * Copyright 2025 NXP + */ + +#include +#include +#include +#include + +#include "clk-scmi.h" + +#define SCMI_CLOCK_CFG_IMX_SSC 0x80 +#define SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK GENMASK(7, 0) +#define SCMI_CLOCK_IMX_SS_MOD_FREQ_MASK GENMASK(23, 8) +#define SCMI_CLOCK_IMX_SS_ENABLE_MASK BIT(24) + +struct scmi_clk_oem_info { + char *vendor_id; + char *sub_vendor_id; + char *compatible; + const void *data; +}; + +static int +scmi_clk_imx_set_spread_spectrum(struct clk_hw *hw, + const struct clk_spread_spectrum *ss_conf) +{ + struct scmi_clk *clk =3D to_scmi_clk(hw); + int ret; + u32 val; + + /* + * extConfigValue[7:0] - spread percentage (%) + * extConfigValue[23:8] - Modulation Frequency + * extConfigValue[24] - Enable/Disable + * extConfigValue[31:25] - Reserved + */ + val =3D FIELD_PREP(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK, ss_conf->spread_bp = / 10000); + val |=3D FIELD_PREP(SCMI_CLOCK_IMX_SS_MOD_FREQ_MASK, ss_conf->modfreq_hz); + if (ss_conf->method !=3D CLK_SPREAD_NO) + val |=3D SCMI_CLOCK_IMX_SS_ENABLE_MASK; + ret =3D scmi_proto_clk_ops->config_oem_set(clk->ph, clk->id, + SCMI_CLOCK_CFG_IMX_SSC, + val, false); + if (ret) + dev_warn(clk->dev, + "Failed to set spread spectrum(%u,%u,%u) for clock ID %d\n", + ss_conf->modfreq_hz, ss_conf->spread_bp, ss_conf->method, + clk->id); + + return ret; +} + +static int +scmi_clk_imx_query_oem_feats(const struct scmi_protocol_handle *ph, u32 id, + unsigned int *feats_key) +{ + int ret; + u32 val; + + ret =3D scmi_proto_clk_ops->config_oem_get(ph, id, + SCMI_CLOCK_CFG_IMX_SSC, + &val, NULL, false); + if (!ret) + *feats_key |=3D BIT(SCMI_CLK_EXT_OEM_SSC_SUPPORTED); + + return 0; +} + +static const struct scmi_clk_oem scmi_clk_oem_imx =3D { + .query_ext_oem_feats =3D scmi_clk_imx_query_oem_feats, + .set_spread_spectrum =3D scmi_clk_imx_set_spread_spectrum, +}; + +const struct scmi_clk_oem_info info[] =3D { + { SCMI_IMX_VENDOR, SCMI_IMX_SUBVENDOR, NULL, &scmi_clk_oem_imx }, +}; + +int scmi_clk_oem_init(struct scmi_device *sdev) +{ + const struct scmi_handle *handle =3D sdev->handle; + int i, size =3D ARRAY_SIZE(info); + + for (i =3D 0; i < size; i++) { + if (strcmp(handle->version->vendor_id, SCMI_IMX_VENDOR) || + strcmp(handle->version->sub_vendor_id, SCMI_IMX_SUBVENDOR)) + continue; + if (info[i].compatible && + !of_machine_is_compatible(info[i].compatible)) + continue; + + break; + } + + if (i < size) + dev_set_drvdata(&sdev->dev, (void *)info[i].data); + + return 0; +} diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c index bf85924d61985eb9e596419349eb883e3817de73..1ed2091e3d4a951c8662db4c94d= ee4b9c98b8326 100644 --- a/drivers/clk/clk-scmi.c +++ b/drivers/clk/clk-scmi.c @@ -14,6 +14,8 @@ #include #include =20 +#include "clk-scmi.h" + const struct scmi_clk_proto_ops *scmi_proto_clk_ops; =20 static unsigned long scmi_clk_recalc_rate(struct clk_hw *hw, @@ -242,6 +244,7 @@ static int scmi_clk_ops_init(struct device *dev, struct= scmi_clk *sclk, static const struct clk_ops * scmi_clk_ops_alloc(struct device *dev, unsigned long feats_key) { + struct scmi_clk_oem *oem_data =3D dev_get_drvdata(dev); struct clk_ops *ops; =20 ops =3D devm_kzalloc(dev, sizeof(*ops), GFP_KERNEL); @@ -288,11 +291,15 @@ scmi_clk_ops_alloc(struct device *dev, unsigned long = feats_key) ops->set_duty_cycle =3D scmi_clk_set_duty_cycle; } =20 + if (oem_data && (feats_key & BIT(SCMI_CLK_EXT_OEM_SSC_SUPPORTED))) + ops->set_spread_spectrum =3D oem_data->set_spread_spectrum; + return ops; } =20 /** * scmi_clk_ops_select() - Select a proper set of clock operations + * @sdev: pointer to the SCMI device * @sclk: A reference to an SCMI clock descriptor * @atomic_capable: A flag to indicate if atomic mode is supported by the * transport @@ -317,8 +324,8 @@ scmi_clk_ops_alloc(struct device *dev, unsigned long fe= ats_key) * NULL otherwise. */ static const struct clk_ops * -scmi_clk_ops_select(struct scmi_clk *sclk, bool atomic_capable, - unsigned int atomic_threshold_us, +scmi_clk_ops_select(struct scmi_device *sdev, struct scmi_clk *sclk, + bool atomic_capable, unsigned int atomic_threshold_us, const struct clk_ops **clk_ops_db, size_t db_size) { int ret; @@ -326,6 +333,7 @@ scmi_clk_ops_select(struct scmi_clk *sclk, bool atomic_= capable, const struct scmi_clock_info *ci =3D sclk->info; unsigned int feats_key =3D 0; const struct clk_ops *ops; + struct scmi_clk_oem *oem_data =3D dev_get_drvdata(&sdev->dev); =20 /* * Note that when transport is atomic but SCMI protocol did not @@ -350,6 +358,9 @@ scmi_clk_ops_select(struct scmi_clk *sclk, bool atomic_= capable, &val, NULL, false); if (!ret) feats_key |=3D BIT(SCMI_CLK_DUTY_CYCLE_SUPPORTED); + + if (oem_data && oem_data->query_ext_oem_feats) + oem_data->query_ext_oem_feats(sclk->ph, sclk->id, &feats_key); } =20 if (WARN_ON(feats_key >=3D db_size)) @@ -407,6 +418,8 @@ static int scmi_clocks_probe(struct scmi_device *sdev) clk_data->num =3D count; hws =3D clk_data->hws; =20 + scmi_clk_oem_init(sdev); + transport_is_atomic =3D handle->is_transport_atomic(handle, &atomic_threshold_us); =20 @@ -438,7 +451,7 @@ static int scmi_clocks_probe(struct scmi_device *sdev) * to avoid sharing the devm_ allocated clk_ops between multiple * SCMI clk driver instances. */ - scmi_ops =3D scmi_clk_ops_select(sclk, transport_is_atomic, + scmi_ops =3D scmi_clk_ops_select(sdev, sclk, transport_is_atomic, atomic_threshold_us, scmi_clk_ops_db, ARRAY_SIZE(scmi_clk_ops_db)); diff --git a/drivers/clk/clk-scmi.h b/drivers/clk/clk-scmi.h index 6ef6adc77c836dc2d599ff852cdc941f217ee388..d7f63f36c56d155f728325efd6b= cf7fe2585b170 100644 --- a/drivers/clk/clk-scmi.h +++ b/drivers/clk/clk-scmi.h @@ -7,6 +7,7 @@ #define __SCMI_CLK_H =20 #include +#include #include #include =20 @@ -19,6 +20,7 @@ enum scmi_clk_feats { SCMI_CLK_RATE_CTRL_SUPPORTED, SCMI_CLK_PARENT_CTRL_SUPPORTED, SCMI_CLK_DUTY_CYCLE_SUPPORTED, + SCMI_CLK_EXT_OEM_SSC_SUPPORTED, SCMI_CLK_FEATS_COUNT }; =20 @@ -37,4 +39,13 @@ struct scmi_clk { =20 extern const struct scmi_clk_proto_ops *scmi_proto_clk_ops; =20 +struct scmi_clk_oem { + int (*query_ext_oem_feats)(const struct scmi_protocol_handle *ph, + u32 id, unsigned int *feats_key); + int (*set_spread_spectrum)(struct clk_hw *hw, + const struct clk_spread_spectrum *ss_conf); +}; + +int scmi_clk_oem_init(struct scmi_device *dev); + #endif --=20 2.37.1