From nobody Thu Oct 2 20:46:42 2025 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010025.outbound.protection.outlook.com [52.101.84.25]) (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 D56EB246764; Fri, 12 Sep 2025 03:36:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.25 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757648192; cv=fail; b=jfsUWBne9LRpY5UoKvMaW4eGalMYAqSrXcT5pyEbrdnS2xKgLzmgiXjvRHNobEk9zR7J0ZDmOMiAYVo9FOzsXcal3yriA7I9AcQH2s0UsAa25mu4Ln19Mcb0PixjRotXgQedI1sYIUlFp6zC8lZJ9RqVzrqZJwgwIMWDiCDRdNo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757648192; c=relaxed/simple; bh=7QT2X5DAOFBnpLF60Zs1O5qmzU34FUra2jolUJVUFik=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=b+yOaIdsHtPjXSA8E4JvhqSCCa2QicIXj0N4Yx5VmyKNYOTCb8zYEAQAVMUvWEKXXToo9XhXPQs0MIUXD20AsoKKa+hItZLWc+0MOL91rlvZRSi0F4h6/jMIAXvVZPam4QyAqpAQ1CIlPmy9EdjANvZF8CaUbjOpW29eG46CiWw= 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=kQpeMgA4; arc=fail smtp.client-ip=52.101.84.25 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="kQpeMgA4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=g3/RGXXEd7UQnzNNY/RGW1WMS1tJr25272xrW8nYk8a4X/AaIOjNEN+nntB4moyFxdIFYGkL4eIupumvQJWJ/SxdvVJCyjV3nogvwbTNaM6ZPNfsV62f5gywaK6NJm6Ui/n2m7mvz6T/YpZSYZBn4+T+K1Lx/9RhkuKUuRxNaWVCXBoRFGljGkp36X172AtydE+l6R0bhX3OKLzQ1zrFI+rTDDG+OMUcNv5CO+H/E0fcvFYLspFNO02kI9oomxHBMzzk/Vre5OG94NBvIMrLzxoGc3+1tQZCe+iBAcN4fRbp4b8bSB54QPyR/hettUxN45Dpvm07GYFOTPeUhKNdvg== 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=fPIqH1gLghb1LcniNHdhK3pVxYY2pCfp5qAcZl/V0o4=; b=VEMxIZnsi7Eg/t4qnsQexH6ObIZrMtOK/aetPhXp9jFakVH+8IkpM6iZQ2bGV/pA6hXiqHIKZ+rwhfOnqZOlSj30LExNHiTp/7Xr0ek4mCBIrpTJPjiqHJJ2MnqrQ9WyPTL9+YzvnQlgKH38kFuzBklAeM7jpJI/pMVVqhW2Tzq7wjvWY+jaimdP85+9tF74P0BKHQnELX2/W468Y08Z6+mpHbf7iT+UvBdu9Dd24OgSuV21wCQhqg9uc8Vo3WytV6T+0hYi5eeM+BIQQcrEgkGqDr0zjxYqhBKm7YpneObdR1PBCMRhmbjD2dEPHIgJfXichdE7CmIKRKyOEsCK/w== 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=fPIqH1gLghb1LcniNHdhK3pVxYY2pCfp5qAcZl/V0o4=; b=kQpeMgA43w0KKNQ43pVyLPlUai3nM/GivtCVvd09hwRyJ9dVABSi8FVTdxWcwHnvt85qas3Purk88zsFQob1+H9ZTmuLFRSO76WZW1gOM0PuJqLHeYH3ZGRKbYf903gzNhqaoX4FuWz3FC6/Nsb+HM3JHve8xdYX7hx+5ZkyaFEFmr5cqLVdybLOArt8J1K5SPe4sztNL55t3K5phKgbhuCBhql5VJGSyDq5s+J2p+d+T8p27rfzdked4g8x3YeTk2XuJik/c6JUhcjzkJp70EecS80nDua6dDzoP+n3hUbAJ7XBbaXxVoGd1reWKGhpBnJev5AGDCLOoz9yQAyMDw== 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 VI1PR04MB9788.eurprd04.prod.outlook.com (2603:10a6:800:1d4::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.15; Fri, 12 Sep 2025 03:36:25 +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.9115.010; Fri, 12 Sep 2025 03:36:25 +0000 From: Peng Fan Date: Fri, 12 Sep 2025 11:35:53 +0800 Subject: [PATCH v3 4/5] clk: Add KUnit tests for assigned-clock-sscs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250912-clk-ssc-version1-v3-4-fd1e07476ba1@nxp.com> References: <20250912-clk-ssc-version1-v3-0-fd1e07476ba1@nxp.com> In-Reply-To: <20250912-clk-ssc-version1-v3-0-fd1e07476ba1@nxp.com> To: Michael Turquette , Stephen Boyd , Sudeep Holla , Cristian Marussi , Marco Felsch , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Brian Masney Cc: Dan Carpenter , Geert Uytterhoeven , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757648158; l=23118; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=7QT2X5DAOFBnpLF60Zs1O5qmzU34FUra2jolUJVUFik=; b=pNV5/gXsYsaYyw9UBuk3thvhdrebkPBv95Vt0XnFP5a2zKFjYyx3WZl5nB583ZDQWLMIsNGWt wgUUPuB+uJTBOVVjEY3BQAzf2TFejMVgBCN3qeVaL4k9omhABXzI2ll X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2PR01CA0029.apcprd01.prod.exchangelabs.com (2603:1096:4:192::8) 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_|VI1PR04MB9788:EE_ X-MS-Office365-Filtering-Correlation-Id: 41a8926b-d937-4620-b18c-08ddf1ad8d1d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|19092799006|7416014|52116014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MDRLRG9MMGw5dGlpTDlDbEx6enlBYitoWjZ3R3JkTGkyRUdOWFJpRVB4eHp6?= =?utf-8?B?aEZ1Y0hhREFMSmtQTWRNYVo4dk9EaG9oSURuNVdMU3MxcnRGc3VmV1VuUlU5?= =?utf-8?B?NzAyUGlIZmVMd1ZMVjdqZVdad0UyRyt1S2RLU3Q0dlZrQmd1Nmhta1ArY1Jj?= =?utf-8?B?cFlXZ0czTVZCbzJnbmdxRTBhS3VsQmFGSGpLaGZPNmxFdDNXY1VLM09mV1Fs?= =?utf-8?B?ZytSN3N5ZTVKUU9yUEd2Uk1YVDFnOHliR09ZMnZOMTZYak5BeitZeGxJQVA2?= =?utf-8?B?SWlQdTI0dnNwWlIzd0xMUzJqYnQwOTVBWG9aM0pUeGZHZ1hqc2dlVXNkQk5i?= =?utf-8?B?aEhodDdqeFlZeGFiTEZyNW5sRjhMdWFaWHcxRnlpRjliNktQSitBejg1YlJU?= =?utf-8?B?YSsxYXVkNWVaQVNtdlN3b3ZKYVJMR0xHZmIyMEw4c0hGYWZ4dzJLUzRVUlBr?= =?utf-8?B?OHVnOTN0clpXSVZpelJEaUF0ZmhJOXRaUEtGOEhCbGNIaVlPdlI2SFFkMWhQ?= =?utf-8?B?blQ3K2RtbVcvNUQ4ZGo2Z1lBWERIbTYyaXM4VHRvWHltYkczZlJOcnJ4Y1ha?= =?utf-8?B?SlltSlVzVHdvYVg0TGg4N1VuU0ovNXVMVFBpUVVtbXFZcVJjZ203b2NIL1Bo?= =?utf-8?B?Z1NoaDhHWE5kWnQ5d2hXeVNaT3pTMmdGbTJ2eWovT0JEa3Y5UG0rZmVaTm5h?= =?utf-8?B?d0s1dXJKQzMwNDRDa3NJb1lMQU9mZjdPNVpqTDhkcjdNK1JuWkVZOXU4NTVN?= =?utf-8?B?Unc3UnBuY0RITGlaMnRrS0t6eFF6bnR6MVZDc2JRRkRYRVMvMFh0K1NxclFl?= =?utf-8?B?dXJ1dmtPL3hVaHRUdGRia2xsSDFYbVBhZmNIWG93Zk9XS0pmQlR3ZVZZUVpy?= =?utf-8?B?L1NNVlAzdm0wRUVETXNMNXB6V3JCM3BrMWRMdUx5Vjh0WDRwVFppZ2RXZVhl?= =?utf-8?B?UWFzc3R5Q0RWN2V2OUpHcjgyZUU0QjhUWHF0TGJMeFF4RXpHUVRTZ29GbEN6?= =?utf-8?B?Q2JmWmdmS0l5NnJ3NWVHMHBzL243dWxtVlhOdGhsTUN4Sjd2ZkZqWjN2MkYy?= =?utf-8?B?aWd6OXVVazVTY1lQODNBN1hkME5zQURRbmUxdFlGbFRjbDFxVnRZVnN1S1BH?= =?utf-8?B?K1lWK2hkOVpsNFpkNmJicnkrWStWampYdS95amQxWWZydUV5azVhQ3JwY0FL?= =?utf-8?B?cjVMcURqNFl5WTlJUmpmaTIxNnVtdzVNUU92Tjg5UjFIZjN6TFdhUC85ZUR0?= =?utf-8?B?eGVaZUhmazhXb1RBTXFkTDZQNHc3bVdFVzEyMG1uMS9zZWtDMnFZWWZXa2ll?= =?utf-8?B?TlF4eks4UHd2MDdVVFpVaGM4KzZONGJseUt5Mll0elNkVS93b1JST2ZzRld1?= =?utf-8?B?TldiRWNqR2FlS2ZrV0IwRHlnbTl0OTBTZ3JTRmw4bEw1MitUS09CZEgwNE9C?= =?utf-8?B?ZjFQYUtna0hDVzJqNFM2TURWenFRM1cxMUtMNTU4aWRsTjVlUFZNTkRpMTZU?= =?utf-8?B?ZmdRMWJqc2RoRDA2eTg5M2EvUTZ5ZHorK1BoVnFKYzluWFlyWENNdVkzWXJU?= =?utf-8?B?bjU2RkhvM0NyK0JzZ09TK1k0WEl0WndYOHhpbHN6bWVTQVAxTHk2UlhnNGpa?= =?utf-8?B?UEFCaWhIKzFRQXVUWEY4SEFCcGpzalNzNTA0OHMvN1lvd0IvbGZYWk9ZbTRW?= =?utf-8?B?YWJVTyswV1RjaVBQRVdFbHlnVXp3NGZqWVVJNFcxcmVkMm9jNGdsUnEzekVF?= =?utf-8?B?OXlhTWpvRjFhR0tOSGhCR2xzYlp0VlBMU1ljSUdrL3pCRlV6Yzg2WHlXNW4y?= =?utf-8?B?QUV6R2FwWGxQaGVUWkJPdHZmZHpwUzJVRlZ1MnpOcW5YbDdGQ2ptaHpSUDJR?= =?utf-8?B?b1o1bVg2eUdXdGJDZ1JJOElxRmtVdkFtemx3RDdYSkV0azRIWkVURERlam4v?= =?utf-8?B?Q3dsQUROR2NjUFVDY1NpQVdIaWsvdGd5OXNzMGVrMmJWZklUMCtoUzEzc2R6?= =?utf-8?B?dUpsc0hzMkN3PT0=?= 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)(376014)(1800799024)(19092799006)(7416014)(52116014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dlZhelVlWTgxelRMT3JpVEpZTzdrWk1KT09wNm5ud0gyTytUSjl2aktEbDNQ?= =?utf-8?B?M0VjNGllR0NEc1poclduK0V0OGVjUmR0Y0pFVENyc3pRd0R4YWQvOUhYUFo4?= =?utf-8?B?cUlZOGJwYWZ2UGlMUXJGeDlOVVJ2TnZiSzhYTG1uZjdnWGxVempZeUhHQ2FC?= =?utf-8?B?bkR2NXdpK0ZsRFdaVTFad2x4b1daRHBvRDhDZTlGY2lianovT3NFYVNqU2h0?= =?utf-8?B?VEVSZ1U0ME1MWXVBbm1Wd1FjWFc0MVFwWjVudklzb1VYa1Z6Uk5MSkY0VnY5?= =?utf-8?B?dDcyeXFXK3RTYWdhbjVpUEtOb2EvZm91UlpNckhrSW83MkdMSkJjdVJSV0dZ?= =?utf-8?B?VysrVkMxOTREQXBWdVozN3pzY3JwZGlRUk9TZlcwa3hZdmluQ3BEdG0vUGha?= =?utf-8?B?UzRkVXgvWjFWaWtGOTlCUFNkMTFob3ZGMVVQWE4xQmdjQ3ZhUnlGNnllR1RX?= =?utf-8?B?NHA3WkN4S0duRjBUb0QxWTdMQ2tvS1lIVk1LTUg1TFExK0xoanNLTFVNNExr?= =?utf-8?B?V0tRdjIrSVBmY0RNTkdMU0x4dUp4YUk5Qmd5ZzQxTkk0SFB5ZGdlM2hWc2g3?= =?utf-8?B?V2JtbWJ2L1ZmOERpelphK3hrRlp5eDB2QlBxMVBpalc0Qk84WVNtM2ZER3dD?= =?utf-8?B?OGxMeTNYNFdOV1RxS3FNaGFvV0JFU3NycGZkRi9YOGlMa3Npb2xaakVRQWJQ?= =?utf-8?B?S05QYjNROG9KMnNESUF3ZTEyTFZDckFhWUNod0dsTHduc2lCd1R2dDBubVYy?= =?utf-8?B?Um9mQmZDQmtqM1JmdnJ3c29VU0xtdTVqZUhORHZVajhkcjkraUpsWmZWSmdS?= =?utf-8?B?a3o5UGRlNmlTYnkwOEdzNHBQOTVOT0o2UW9UZSsrOFlGTm8zNVowRDhmUkZ4?= =?utf-8?B?VXJuWkxZZmJwN0hRcFozOGFBNEE2UlQxaGJpVFBVSC9pcDVZcE1MamNoSU4z?= =?utf-8?B?akF2YS9ZamJBcUhrb2kyMkhLSmNZQ0MzeXFKWHN2dHNSREpWa20vNDJJTXNK?= =?utf-8?B?L1dtVTkxK3hEZHpab2NldlJZVy83T2RJTHErWXZkWEgrekJJN1NyRlFrWUVJ?= =?utf-8?B?cytaWDRad2VKQzhOSkJSOHFORHE4NjlsbEE3L1hxcjlHM2srY0U5UXhsd2tz?= =?utf-8?B?eEZ5SjZCZ1BsSlIwSzdibjdQRTExZ0VJQ2duak1lellOM2Z6a0VyU1FhNVZ2?= =?utf-8?B?VDFma0phOEdBdUcxNDJ5bnNXMTFwblZGUHI4YWYzd01Zc01GelpyYllabzJj?= =?utf-8?B?bkdsamRML1ZWZXg1SUltYSsvb1VSOHZyUTc0VHFhSm9JbzZnc2pxenhDZW90?= =?utf-8?B?SmxzMUwyaEtwblRrUDJiSm1ZZDMrNXFMNWpJSHdkZEVxbkdLWUFCdTlTMVhq?= =?utf-8?B?Uk9NUUdCdXVRN0YwcTlLczdzWmVXbTUrZWxBRi83RXZsSUttdmppR29iTWY1?= =?utf-8?B?SXAwTHNpTUxJSHgrVm9VaHpLaEhGRlVBRS9rdUs4SFBLMWgyeXB2YU5OL2Vh?= =?utf-8?B?VjNhMlVhekwxalZ6akpVUTJJL2dwem1yb2VMSW5ibGgveVFyM3VPcWx3MnNK?= =?utf-8?B?MFkyS29sOHJVSHZuM3dmRW5VZkxGZEVhUldMcDdYaXRWV3krL3gxcmdmSGpW?= =?utf-8?B?SjhSVllxZXM2TzBlalVRcHU0c0Vrdm1oNGplcDl5a0dQNVhlWTd2bEUrZFlW?= =?utf-8?B?V3pQZHF5YjlSN0pSZWYrZWp0Q1M2TEFZeldTZkoxc1ZXQ2FTb1R0Z1hJM3NZ?= =?utf-8?B?UTZ5OHcxWXhBb1R4K2pQeEFlTWVQakRtUG9rZGVmNzVGRmU0Y2ZGaUJxUkd2?= =?utf-8?B?ajJUbmJ0WFJlY29jMWwrSmE1NlAzZjNaaWpnbFNYUVBreGxOYkxEaCtENXla?= =?utf-8?B?YUwvOVh6Ri9lSEZ3V1RDcHFOMEJRTTNyME0ya1BDNmVzSzJNYmUwZzJWbWhW?= =?utf-8?B?SkZDeGltTk8vSEIwcE9Ydi9MUzkvemRPQVBoLzhWNEVzeEEvTHBXeGp3WmdZ?= =?utf-8?B?YXNQNkJ4MHlyc3djRHBlK2thL21uMXg5MFB2dUdJQXhuLzhLek9nbndmbHh4?= =?utf-8?B?SXFLSlRxblRMQ0gza3BjM00xaVFsdktHWnRCSkR6enRZUGdiaGF3OU9xRENv?= =?utf-8?Q?QlvaSkNAc5Ybl1yJ/ypEztcdp?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 41a8926b-d937-4620-b18c-08ddf1ad8d1d X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 03:36:25.6775 (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: pfxHXJ3i3o0IPd6vGh6yrAPO/WpnZZ46hbqbivXkgfRdvVL3n1Tr3GLklCexem+96j43MDpaYiU8lcwlS77i4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB9788 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 + .../kunit_clk_assigned_rates_zero_consumer.dtso | 1 + 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 +++ 18 files changed, 269 insertions(+), 3 deletions(-) diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile index 18ed29cfdc1133b6c254190c6092eb263366d5ac..ea93e16c5a0080f610c8cfaccc1= ac68fefa481c2 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_rates_zero_consumer.dtso b/driv= ers/clk/kunit_clk_assigned_rates_zero_consumer.dtso index 1d964672e8553a90263af400367a2d947f755015..d62c7522c92461245d45f8ac0eb= d26fa2850be98 100644 --- a/drivers/clk/kunit_clk_assigned_rates_zero_consumer.dtso +++ b/drivers/clk/kunit_clk_assigned_rates_zero_consumer.dtso @@ -12,5 +12,6 @@ kunit-clock-consumer { compatible =3D "test,clk-consumer"; assigned-clocks =3D <&clk>; assigned-clock-rates =3D <0>; + assigned-clock-sscs =3D <0 0 0>; }; }; 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