From nobody Fri Dec 19 04:26:45 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2049.outbound.protection.outlook.com [40.107.22.49]) (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 B7E5D264A78; Tue, 8 Apr 2025 08:47:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.22.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102043; cv=fail; b=SN7KgiAXjos75AT7qu45Q1jvEgoPnLqQQuCl6TfiO21G+TCc7Oaaki7QiRjg/opmqSs/yqo9WSpM9EG1u6cpuCm7d6SEshmmFlgqIk7oJL8xGpipeQpMaaSSePycjfcIVHxlqwF+OhXA3giwkAFaBC7zoMHn0IYsnxnP6nCyYbY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102043; c=relaxed/simple; bh=rYoP8Lbh1wSKkBmEMjWfGfwjuvBGlFh0ik35lZQ9J4E=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Q6JHJQT/Je5iQGCi+0mP0quWvao4bvY55TnmMP3JmQFsR7GOqd5NVXqDlFDtJ9/vMXu6SEkU0wELrf/E00rSzew82HS0lzY+WruIdzfu0qHEYW9M4cmsNrQmPkDMZGCSXpZTlS2Dhl3QeejgjqN/Glsn21/znYNwcNpPRV5oYKE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=O3P7Jpbe; arc=fail smtp.client-ip=40.107.22.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="O3P7Jpbe" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y7Nymch6ju19gVYBBTAlBCPlH0D5oydLfeBZg4RHby7ZU9qXBWny7bABFeU5HWHcb4POcW2yLqUj8Q6FO+LHelYWjNcRLzeqzil5292/8gplYC54sBbTOC/RjcXmOqMRZTFP1fWnSiAuPMd1xTkywMipyKOi1BkWew6Nyk5Hq6x8i46+0+rEoQcz5p3z093qsFioPmmJSL8sO9Xqu0UNA8F/Bpbthu2hySRQckd9hyr9nxuTPnrFO26DZoGe+7BB/dTrkbHV+G3U+tNOqIuBH1IsKGLyxtj6q27PRrha93o6Q/3LFoPtD+ghVzZ4KeuEXoDYtCqfalVwYbY30N/zNg== 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=GylHtnGihzECEPF3PtctRfwePyo0+kJy+ltbO5ocOW0=; b=b1mRAWfn9qgm8qg1eIICw2tBVWbCiYpbmjJcDeHTx5I/MxkXtBgaxKpWZaxm3iBRnyt19rhpdnF3jFc8gYuYn5FXenqSzhXBS+Tnz/FU/9wNk3/dA3oZ+q8QhFsoszk3+pBRMOMVFeRa4iw5n1/KyK3HFxIGm4LnmsbomxPqvPzPbafsm1+Ko01Sqv+yqeANybv6LSEn86y08L/USpweNqT0Fj+uCOsNFW5yPZxKQLJ/ifGhaA5sO092NdfhA6VS4QYkL0xpzaf60FDHHRawPPcn+1BY4DU9lGMZ7180klapsl/n88Ks6IYlW1InPd1F4INIREzKDPHug3ird/ltEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GylHtnGihzECEPF3PtctRfwePyo0+kJy+ltbO5ocOW0=; b=O3P7Jpbec2P6V3lKmQswAhCTuqHo19ttGcDiRP2v+6GWScSPdiJji24wkKz0Xq/2uVLg13QXycOWnmnUUggHqlyhSWrfP7UPIby9ahR4gyJe3IXSEZSgfoaJTWsbdswmzNWtXAeuP6WuHgvcdTF1QeP6nLRcqD1np1hCcyB0scMq3aPp1Gu+hdi0BilNU37ZCZkd4h5G55lfzeREPRj7RvjXLtd41a775B2ZFkII8oXmPDRYwVEh5tTlqnlRTl8GBmz4DLIVZhOJaJuevmdLtvb3E4z0LCcvrmL3ggLxnWsmksntyOUJPXR4am2WgyHZ8osauO0kQ4721naSK8imDA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by DUZPR04MB10063.eurprd04.prod.outlook.com (2603:10a6:10:4af::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Tue, 8 Apr 2025 08:47:15 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 08:47:14 +0000 From: "Peng Fan (OSS)" Date: Tue, 08 Apr 2025 16:44:25 +0800 Subject: [PATCH v4 1/7] firmware: arm_scmi: imx: Add LMM and CPU documentation Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250408-imx-lmm-cpu-v4-1-4c5f4a456e49@nxp.com> References: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> In-Reply-To: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> To: Sudeep Holla , Cristian Marussi , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Dan Carpenter , linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744101964; l=52893; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=9rLGv2K0F/Z2vpFRzSp/JswFMTO6f3/OgkN9c+WCi8c=; b=qF9/oSE20DUYOcFtJuqbmprKcJkha3G9GpdB6H3WGzwqEFlxRZzzf9+jH1TIHgDKknAQyK9qA /uU8pJfhuXsCU4+xQbp0dXNqm43ThTuYkbSt9k6UGJxgzD2hD7zNqeN X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: MA0PR01CA0056.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ac::12) 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-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|DUZPR04MB10063:EE_ X-MS-Office365-Filtering-Correlation-Id: 9f4e47a6-d9f9-4275-af1b-08dd7679f589 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?NytDT1phbC9wYThoNXVBZnlybmxSaE81MDJFTXlvMjkvZ2UrdjZZbXdtTHB4?= =?utf-8?B?clIzWStONnZ2aG9uSkJHNGg1ZkNmVXpVTTdjWG1QQkxCYkRhdmxRaEhrcTJj?= =?utf-8?B?RW9HTjB6QlM4WUZIY2FHK3VOQXdEZUFYMklzYXZZZUswbzRZTFJiMzZCQkp4?= =?utf-8?B?bXlTRi94Sk5JTzBzVUljTGlnVW0yNU45dkx5aS9WUmpBa0oyaWV4Q3VPd1Jz?= =?utf-8?B?bkUwWUpKa28rallZc2xTTXNTdnJWV2xoL1VmWEtSVUJ3OWJHM3JyVDI3OWlo?= =?utf-8?B?STRlZzZvQXBkemQ2RjJpTW5OWjBuSmxTbEZRemlPUjdJNWZ5OXJmdk1YZ0N4?= =?utf-8?B?QUpCVlBaTDQ1ZjViU2pXYXE2Y3Y1cTFZSXFjbjdubDlMRXRod1ltNFptUVBw?= =?utf-8?B?RW5QRm1aZ0dRNlBPcGo5UDUyVHk4dVFkNjhPYkZJNURpMEVUQTh4UEZTSzNX?= =?utf-8?B?Q0NFa2hIOWg5dUpFM3VlTVRNT2wwRlZqa2szZk9wNCtjRUtYL2M1TnpKMldO?= =?utf-8?B?ZStaR2VtQS90SlBZZnJYVjhZQkd0ZFJOWEppY0RCdmcxOFBUQy90RVhpaDNo?= =?utf-8?B?WDNyY2d6dldnc1FPZ2xHZHdrT3d0d1VUU0hCbjJxR3h3SDJ5cW9LUEs0L2NU?= =?utf-8?B?a2NMQThXTVFhY2s2WWNFMzhFejJJQ3JyS3VIK2RxdlIzTlRjZWZBZVZ1MWFK?= =?utf-8?B?UHFEeFd0NlpVRytLLzNPb0NWay9nMDFzWW9YL0RCK3JhRm1VQUhyemJmaUJa?= =?utf-8?B?dFY3eXhrekRvSVllbTBHcVVZMGgycm82OURIZzlIZVFBOXAySCs3VmhzdmZQ?= =?utf-8?B?cTU2TGJPNnVNNGs1NGxzMElpbERHZWRxYmNpNHIvRDFUeWdjSE5hNXhiRmFq?= =?utf-8?B?MXNrS2VuRWFlQ2Urc3BGaTBSRTFRSThqTU1LVXpwQVVRNFVOb1JWL0F3RXNi?= =?utf-8?B?aHQ1MHJnMVNaZWE1Q0RZUGorZHhsRjlFUks5SVBNZWg1bWZZNTRLWG5CVnB4?= =?utf-8?B?bHpZeldGTXNEM2FrajdJWVROcmh0OUNsZnd0MVozREVkWGIyQ2ttTmRGZzJH?= =?utf-8?B?YXFlN0JNd2tzdm9zN1VoejlpeCsxVnUrazlWeCtjWHVUYkxkbEt2dUYzNGsz?= =?utf-8?B?ZnRWVWhycXNLQVNleWc2OUlqUHZRaUs2OWZZL0JHanpUd2tNQy8wbEJpNmFv?= =?utf-8?B?V25IVXRJbTFqMFR4MHZROWUyTy9DeUZtTWVDdWJ1cW5OMVo1MHdIMmdCL1BY?= =?utf-8?B?ZUJERnlUbTVzRGZQTzN3ZS9GaE9jajA2VE5QajdrNjZtYlVmSFljT3ZLVjNX?= =?utf-8?B?aUxyTTZJeVd5ejVTRnRISHJKRTJocUJGMFYwUWNwZERuK0NzaEI3WVBVUmpL?= =?utf-8?B?K0laTU9Lb2xyTTFCNFNLQ1F6SHpJQWZndnVMTFROQ2s2QlZmbmZYcjlOZE55?= =?utf-8?B?S0wzWmx6NytzSThSWjJCSmI4c0o0L1dZbkJ0ZWcrNXlGaElWcG5VbUlMa1Fw?= =?utf-8?B?d21QRWlpSEo2R1JxTmIrdnlyYTQ5UkthT2pLenp1R1N1bUt3Vmcza3BJSHhM?= =?utf-8?B?cWI5cFZ5VG1tb293RUlrbHV6SEM0TmtVMzNPVWt0cTlLdGwyOCs4TE9ueHNs?= =?utf-8?B?ZnpyQllJNlNKL2ZXK0Z2aDhTYzZrRXBGcTV5VWlZZWlNN3dETjRFVm9wZ1BE?= =?utf-8?B?QXBQc2xIWWtxeHA0RlhnZXprN0RCWk8yUUtSSjFwRVhqRzJ6K1REVlVQNmlB?= =?utf-8?B?WGROc3dHQlhxTUNMRWhGTjBkbjA1MGN4c2FvOUlCbXNtQyt5TjFsTjNQL2Fp?= =?utf-8?B?cHhSQzZPTkpYdnlFTjdFTC8rTi9TYStTZVowVHpSS0JWbmx5cFVkSFZ2OFdw?= =?utf-8?B?TkhRZVpScm5xclBFckRUdHo1Nlpxc3FTWDl2bnNsV01rM01Hbmd6V080N2xP?= =?utf-8?Q?bZg1IlcCXZXw/gTVmdenKqHcmqlhbHe+?= 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)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZEdsOVFCYTU4N0RiTTRrNjUwQVdIWjNZS2lsTjRvYjl4OU4yZmliT21hSWV2?= =?utf-8?B?V0Z3bk83Rm9abEgyQjNzMjlLbVJxMGlyaHgyQ2tlMHpnbnArQ0o1dTYyTWN3?= =?utf-8?B?NTlKMUo4MkEwWXBDQUZydGtnOW9LdFB6bXdJOStTeXlmbTNyc2ZiR3FIeUZk?= =?utf-8?B?cm1pOEoyRVJjMzMwZU9oWGVSRkZXRWc5cFluRUJCZVA4MmNoQ2Y5S2ZUK0hC?= =?utf-8?B?WkU4ZlpGSFJTTEkydk9UVG54Y1VVVVpGL0wwRWtyVEZENkxjdFA1KzdobUZ5?= =?utf-8?B?bGRCajRCU2JMZ1pwZzM3QjVaVTJhQ1VjdEw4c1hwRlBqRHVqRmxoQXBiQnha?= =?utf-8?B?a2RHY3FKdkN0Y1cwZG5aWWE2M0hKdmdJYUJsNlRxTDZSSEs0VHExRFk3bVBN?= =?utf-8?B?TVBqNlNSamxQbnl4KzQ3UlJLUC8wdlFSZnVZTzFjU3ZpVmg1N1Q4V3Q4T2V4?= =?utf-8?B?Vi9DcjZTbnIrTm1GdFhnb1ExK3JMUE9nOUFvcTJsWkNKOGRFWGxvMUJwbGla?= =?utf-8?B?b0wxQVhrMFg3VXg1WHN1STBzQlNqUWZSeEdYeTNZVkYrdXlKWERway95OGI1?= =?utf-8?B?d3ovRmx5U1FNWmFPdFRQRVNndmI4aVVrQVNYd1JXRGY5dkZvd2hpTDRlWW9l?= =?utf-8?B?aEI1ZDUySjNVZDg0UXlMRVE4cS9xWjJIUFFydkRQcXlHSVQwbThkT2tyTnIy?= =?utf-8?B?Rzhlcm15R296L2NyMkgrOHVxNks3cUlhWloyUnd5MzBJSHZzTUk1ekVmUHhz?= =?utf-8?B?VXNnSlk5S08yamRwTFFheFJaLzFQV3o0dXZQeWx3QUNxQ0hOWXdBN2N2OTk5?= =?utf-8?B?Qi9PQzMxdTB5N0gvU3YwcEE4ZDRXZEhLK0xXL283MXJ5WlRkS1lVMDFBNXN0?= =?utf-8?B?TkRVd3BUTUJyNzk2aWdvVFc0cUo3UG9vTlNaN05KYy93QXJKbklURFFuOXNZ?= =?utf-8?B?cnhENitzNGZ5enNhM0dCcFF3U1Z4OVBmRHQyRUpDUnhUWi8wclFXeTV5WXpj?= =?utf-8?B?dWVLMjVibUQvM0Rya2QyS09jL1VKOUkxanNyRXkxajFXTWFsa1d6aXd1RTdX?= =?utf-8?B?LzVXSDk1VXpLV3AwTU1oRTNtZE9aaFl2K0JMbUhsYVZGZHBJMWltYjJQdmh0?= =?utf-8?B?ZEk2T25RY1gzSDBSWStYc0hjdVQ3Q1luMXJjK0VaYUdzU01JYnU3M3hzUGQx?= =?utf-8?B?aDJsaE5NbXZqNmRiVGlaMk9UcU1SSERqcWFlaHA0NDFuaUNMSUR4a1VGNCtY?= =?utf-8?B?RTlVcFRpckZvSGNRdGpzSVhLWWM1eUIzeWpVL1ZVT2d6bHJCUWwzc3c1WW9X?= =?utf-8?B?eERRcVJEdTJoUlRISnB4UkxGd1RzMzRDYTBWU1lwcjdZTHNEdFlrNHJhNzZ4?= =?utf-8?B?ZTJiS2pTN1k1UVI1a2ptK1cwejJxbFBlWmhGWWFWVGFqWGFFUTZucGlJOE5X?= =?utf-8?B?aXVrVDFZd2krSGR1ZTFTVGtIeHVVVzFmbHZ1OU1pZk9ITmJEcEc4ME90dWVw?= =?utf-8?B?RzRuRjZvZGRvVlhreHpLTStHeEVOOUZ5ek5hY0ZPRHVGNmh2SjNYL1ZWYzk1?= =?utf-8?B?b3pNQUpMbnRlckt0NzdwUTdGTGpqZlMvSTBSZEZYTGJLZnBidmxaM0hRdjdB?= =?utf-8?B?Znd3ZUcxOTVNLzlSZ3U5czgzZnlndWJFZDZLdEhiNERqd3AycjJrU0tIRExl?= =?utf-8?B?TEhxU1lleU14NDdvaUxUUHE5QkFKL21PUmhJSE9xT2JkcmRvaEV6T0N0dWxj?= =?utf-8?B?eGRDdGY0Q2FtajgzZXlaUWQyQWZNNndRODBpRzZBSnZPUmtJekRQSk1LL2I4?= =?utf-8?B?eVZwM0IvZ1FxQU1EK2lvSkxPV2xOa0k2N2VCc2Y2Y2kvbzNmT1lsZE56VGtG?= =?utf-8?B?M1NzYlpEVUJLR3JDK3FjaEU0RkVNdzdiTnpQSlZ6UktoZ0MyYmhhaHB4OUtP?= =?utf-8?B?YUc0b0JPNHEzaTNlMlpnZmpXQitYUmk3WUtEeDF6QytwT1BkVjZiZHVBWWhR?= =?utf-8?B?UkFETjkvd2M5d0NhMFp6TWhVZGRBLzNmMTd2ejZmZE5hVk9WR3FocWYxdC9q?= =?utf-8?B?TCs4VWd6WjJQbEV6dk95bUNscmtsUU5zTzZVWkZ5aVA0OStncFpSaWtMeVVo?= =?utf-8?Q?8i0jxhJOQqCEArj7+CP98y1pl?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f4e47a6-d9f9-4275-af1b-08dd7679f589 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 08:47:14.1835 (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: yFs6S9BVLHm8+MT+WZHQWE12clUiT5NQKIcC71XTtAQ8/hU7turQ9bBEoHLCfal1fFFq8Ehak2iZ06eEVPDy3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR04MB10063 From: Peng Fan Add i.MX95 Logical Machine Management and CPU Protocol documentation. Reviewed-by: Cristian Marussi Signed-off-by: Peng Fan --- drivers/firmware/arm_scmi/vendors/imx/imx95.rst | 828 ++++++++++++++++++++= ++++ 1 file changed, 828 insertions(+) diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx95.rst b/drivers/firm= ware/arm_scmi/vendors/imx/imx95.rst index b2dfd6c46ca2f5f12f0475c24cb54c060e9fa421..4e246a78a042a79eb81be356320= 79c7626bbbe57 100644 --- a/drivers/firmware/arm_scmi/vendors/imx/imx95.rst +++ b/drivers/firmware/arm_scmi/vendors/imx/imx95.rst @@ -32,6 +32,518 @@ port, and deploy the SM on supported processors. The SM implements an interface compliant with the Arm SCMI Specification with additional vendor specific extensions. =20 +System Control and Management Logical Machine Management Vendor Protocol +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +The SM adds the concept of logical machines (LMs). These are analogous to +VMs and each has its own instance of SCMI. All normal SCMI calls only apply +the LM running the calling agent. That includes boot, shutdown, reset, +suspend, wake, etc. If a caller makes the SCMI base call to get a list +of agents, it will only get those on that LM. Each LM is completely isolat= ed +from the others. This is mandatory for these to operate independently. + +This protocol is intended to support boot, shutdown, and reset of other lo= gical +machines (LM). It is usually used to allow one LM(e.g. OSPM) to manage +another LM which is usually an offload or accelerator engine. Notifications +from this protocol can also be used to manage a communication link to anot= her +LM. The LMM protocol provides commands to: + +- Describe the protocol version. +- Discover implementation attributes. +- Discover all the LMs defined in the system. +- Boot a target LM. +- Shutdown a target LM (gracefully or forcibly). +- Reset a target LM (gracefully or forcibly). +- Wake a target LM from suspend. +- Suspend a target LM (gracefully). +- Read boot/shutdown/reset information for a target LM. +- Get notifications when a target LM boots or shuts down (e.g. LM 'X' requ= ested + notification of LM 'Y' boots or shuts down, when LM 'Y' boots or shuts d= own, + SCMI firmware will send notification to LM 'X'). + +'Graceful' means asking LM itself to shutdown/reset/etc (e.g. sending +notification to Linux, Then Linux reboots or powers down itself). It is as= ync +command that the SUCCESS of the command just means the command successfully +return, not means reboot/reset successfully finished. + +'Forceful' means the SM will force shutdown/reset/etc the LM. It is sync +command that the SUCCESS of the command means the LM has been successfully +shutdown/reset/etc. +If the commands not have Graceful/Forceful flag settings, such as WAKE, SU= SEND, +it is a Graceful command. + +Commands: +_________ + +PROTOCOL_VERSION +~~~~~~~~~~~~~~~~ + +message_id: 0x0 +protocol_id: 0x80 +This command is mandatory. + ++---------------+---------------------------------------------------------= -----+ +|Return values = | ++---------------+---------------------------------------------------------= -----+ +|Name |Description = | ++---------------+---------------------------------------------------------= -----+ +|int32 status | See ARM SCMI Specification for status code definitions. = | ++---------------+---------------------------------------------------------= -----+ +|uint32 version | For this revision of the specification, this value must = be | +| | 0x10000. = | ++---------------+---------------------------------------------------------= -----+ + +PROTOCOL_ATTRIBUTES +~~~~~~~~~~~~~~~~~~~ + +message_id: 0x1 +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status | See ARM SCMI Specification for status code definition= s. | ++------------------+------------------------------------------------------= -----+ +|uint32 attributes |Protocol attributes: = | +| |Bits[31:5] Reserved, must be zero. = | +| |Bits[4:0] Number of Logical Machines = | +| |Note that due to both hardware limitations and reset r= eason| +| |field limitations, the max number of LM is 16. The min= imum | +| |is 1. = | ++------------------+------------------------------------------------------= -----+ + +PROTOCOL_MESSAGE_ATTRIBUTES +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +message_id: 0x2 +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: in case the message is implemented and availa= ble | +| |to use. = | +| |NOT_FOUND: if the message identified by message_id is = | +| |invalid or not implemented = | ++------------------+------------------------------------------------------= -----+ +|uint32 attributes |Flags that are associated with a specific command in t= he | +| |protocol. For all commands in this protocol, this = | +| |parameter has a value of 0 = | ++------------------+------------------------------------------------------= -----+ + +LMM_ATTRIBUTES +~~~~~~~~~~~~~~ + +message_id: 0x3 +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: if valid attributes are returned. = | +| |NOT_FOUND: if lmid not points to a valid logical machi= ne. | +| |DENIED: if the agent does not have permission to get i= nfo | +| |for the LM specified by lmid. = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |Identifier of the LM whose identification is requested= . | +| |This field is: Populated with the lmid of the calling = | +| |agent, when the lmid parameter passed via the command = is | +| |0xFFFFFFFF. Identical to the lmid field passed via the= | +| |calling parameters, in all other cases = | ++------------------+------------------------------------------------------= -----+ +|uint32 attributes | Bits[31:0] reserved. must be zero = | ++------------------+------------------------------------------------------= -----+ +|uint32 state | Current state of the LM = | ++------------------+------------------------------------------------------= -----+ +|uint32 errStatus | Last error status recorded = | ++------------------+------------------------------------------------------= -----+ +|char name[16] | A NULL terminated ASCII string with the LM name, of u= p | +| | to 16 bytes = | ++------------------+------------------------------------------------------= -----+ + +LMM_BOOT +~~~~~~~~ + +message_id: 0x4 +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: if LM boots successfully started. = | +| |NOT_FOUND: if lmid not points to a valid logical machi= ne. | +| |INVALID_PARAMETERS: if lmid is same as the caller. = | +| |DENIED: if the agent does not have permission to manag= e the| +| |the LM specified by lmid. = | ++------------------+------------------------------------------------------= -----+ + +LMM_RESET +~~~~~~~~~ + +message_id: 0x5 +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++------------------+------------------------------------------------------= -----+ +|uint32 flags |Reset flags: = | +| |Bits[31:1] Reserved, must be zero. = | +| |Bit[0] Graceful request: = | +| |Set to 1 if the request is a graceful request. = | +| |Set to 0 if the request is a forceful request. = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: The LMM RESET command finished successfully i= n | +| |graceful reset or LM successfully resets in forceful r= eset.| +| |NOT_FOUND: if lmid not points to a valid logical machi= ne. | +| |INVALID_PARAMETERS: if lmid is same as the caller. = | +| |DENIED: if the agent does not have permission to manag= e the| +| |the LM specified by lmid. = | ++------------------+------------------------------------------------------= -----+ + +LMM_SHUTDOWN +~~~~~~~~~~~~ + +message_id: 0x6 +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++------------------+------------------------------------------------------= -----+ +|uint32 flags |Reset flags: = | +| |Bits[31:1] Reserved, must be zero. = | +| |Bit[0] Graceful request: = | +| |Set to 1 if the request is a graceful request. = | +| |Set to 0 if the request is a forceful request. = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: The LMM shutdown command finished successfull= y in | +| |graceful request or LM successfully shutdown in forcef= ul | +| |request. = | +| |NOT_FOUND: if lmid not points to a valid logical machi= ne. | +| |INVALID_PARAMETERS: if lmid is same as the caller. = | +| |DENIED: if the agent does not have permission to manag= e the| +| |the LM specified by lmid. = | ++------------------+------------------------------------------------------= -----+ + +LMM_WAKE +~~~~~~~~ + +message_id: 0x7 +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: if LM wake command successfully returns. = | +| |NOT_FOUND: if lmid not points to a valid logical machi= ne. | +| |INVALID_PARAMETERS: if lmid is same as the caller. = | +| |DENIED: if the agent does not have permission to manag= e the| +| |the LM specified by lmid. = | ++------------------+------------------------------------------------------= -----+ + +LMM_SUSPEND +~~~~~~~~~~~ + +message_id: 0x8 +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: if LM suspend command successfully returns. = | +| |NOT_FOUND: if lmid not points to a valid logical machi= ne. | +| |INVALID_PARAMETERS: if lmid is same as the caller. = | +| |DENIED: if the agent does not have permission to manag= e the| +| |the LM specified by lmid. = | ++------------------+------------------------------------------------------= -----+ + +LMM_NOTIFY +~~~~~~~~~~ + +message_id: 0x9 +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++------------------+------------------------------------------------------= -----+ +|uint32 flags |Notification flags: = | +| |Bits[31:3] Reserved, must be zero. = | +| |Bit[3] Wake (resume) notification: = | +| |Set to 1 to send notification. = | +| |Set to 0 if no notification. = | +| |Bit[2] Suspend (sleep) notification: = | +| |Set to 1 to send notification. = | +| |Set to 0 if no notification. = | +| |Bit[1] Shutdown (off) notification: = | +| |Set to 1 to send notification. = | +| |Set to 0 if no notification. = | +| |Bit[0] Boot (on) notification: = | +| |Set to 1 to send notification. = | +| |Set to 0 if no notification = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: if the notification state successfully update= d. | +| |NOT_FOUND: if lmid not points to a valid logical machi= ne. | +| |INVALID_PARAMETERS: if input attributes flag specifies= | +| |unsupported or invalid configurations. = | +| |DENIED: if the agent does not have permission to reque= st | +| |the notification. = | ++------------------+------------------------------------------------------= -----+ + +LMM_RESET_REASON +~~~~~~~~~~~~~~~~ + +message_id: 0xA +protocol_id: 0x80 +This command is mandatory. + +This command is to return the reset reason that caused the last reset, suc= h as +POR, WDOG, JTAG and etc. + ++---------------------+---------------------------------------------------= -----+ +|Parameters = | ++---------------------+---------------------------------------------------= -----+ +|Name |Description = | ++---------------------+---------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++---------------------+---------------------------------------------------= -----+ +|Return values = | ++---------------------+---------------------------------------------------= -----+ +|Name |Description = | ++---------------------+---------------------------------------------------= -----+ +|int32 status |SUCCESS: if the reset reason of the LM successfully= | +| |updated. = | +| |NOT_FOUND: if lmid not points to a valid logical ma= chine| +| |DENIED: if the agent does not have permission to re= quest| +| |the reset reason. = | ++---------------------+---------------------------------------------------= -----+ +|uint32 bootflags |Boot reason flags. This parameter has the format: = | +| |Bits[31] Valid. = | +| |Set to 1 if the entire reason is valid. = | +| |Set to 0 if the entire reason is not valid. = | +| |Bits[30:29] Reserved, must be zero. = | +| |Bit[28] Valid origin: = | +| |Set to 1 if the origin field is valid. = | +| |Set to 0 if the origin field is not valid. = | +| |Bits[27:24] Origin. = | +| |Logical Machine(LM) ID that causes the BOOT of this= LM | +| |Bit[23] Valid err ID: = | +| |Set to 1 if the error ID field is valid. = | +| |Set to 0 if the error ID field is not valid. = | +| |Bits[22:8] Error ID(Agent ID of the system). = | +| |Bit[7:0] Reason(WDOG, POR, FCCU and etc): = | +| |See the SRESR register description in the System = | +| |Reset Controller (SRC) section in SoC reference man= nual | +| |One reason maps to BIT(reason) in SRESR = | ++---------------------+---------------------------------------------------= -----+ +|uint32 shutdownflags |Shutdown reason flags. This parameter has the forma= t: | +| |Bits[31] Valid. = | +| |Set to 1 if the entire reason is valid. = | +| |Set to 0 if the entire reason is not valid. = | +| |Bits[30:29] Number of valid extended info words. = | +| |Bit[28] Valid origin: = | +| |Set to 1 if the origin field is valid. = | +| |Set to 0 if the origin field is not valid. = | +| |Bits[27:24] Origin. = | +| |Logical Machine(LM) ID that causes the BOOT of this= LM | +| |Bit[23] Valid err ID: = | +| |Set to 1 if the error ID field is valid. = | +| |Set to 0 if the error ID field is not valid. = | +| |Bits[22:8] Error ID(Agent ID of the System). = | +| |Bit[7:0] Reason = | +| |See the SRESR register description in the System = | +| |Reset Controller (SRC) section in SoC reference man= nual | +| |One reason maps to BIT(reason) in SRESR = | ++---------------------+---------------------------------------------------= -----+ +|uint32 extinfo[3] |Array of extended info words(e.g. fault pc) = | ++---------------------+---------------------------------------------------= -----+ + +LMM_POWER_ON +~~~~~~~~~~~~ + +message_id: 0xB +protocol_id: 0x80 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: if LM successfully powers on. = | +| |NOT_FOUND: if lmid not points to a valid logical machi= ne. | +| |INVALID_PARAMETERS: if lmid is same as the caller. = | +| |DENIED: if the agent does not have permission to manag= e the| +| |the LM specified by lmid. = | ++------------------+------------------------------------------------------= -----+ + +LMM_RESET_VECTOR_SET +~~~~~~~~~~~~~~~~~~~~ + +message_id: 0xC +protocol_id: 0x80 +This command is mandatory. + ++-----------------------+-------------------------------------------------= -----+ +|Parameters = | ++-----------------------+-------------------------------------------------= -----+ +|Name |Description = | ++-----------------------+-------------------------------------------------= -----+ +|uint32 lmid |ID of the Logical Machine = | ++-----------------------+-------------------------------------------------= -----+ +|uint32 cpuid |ID of the CPU inside the LM = | ++-----------------------+-------------------------------------------------= -----+ +|uint32 flags |Reset vector flags = | +| |Bits[31:0] Reserved, must be zero. = | ++-----------------------+-------------------------------------------------= -----+ +|uint32 resetVectorLow |Lower vector = | ++-----------------------+-------------------------------------------------= -----+ +|uint32 resetVectorHigh |Higher vector = | ++-----------------------+-------------------------------------------------= -----+ +|Return values = | ++-----------------------+-------------------------------------------------= -----+ +|Name |Description = | ++-----------------------+-------------------------------------------------= -----+ +|int32 status |SUCCESS: If reset vector is set successfully. = | +| |NOT_FOUND: if lmid not points to a valid logical = | +| |machine, or cpuId is not valid. = | +| |INVALID_PARAMETERS: if reset vector is invalid. = | +| |DENIED: if the agent does not have permission to = set | +| |the reset vector for the CPU in the LM. = | ++-----------------------+-------------------------------------------------= -----+ + +NEGOTIATE_PROTOCOL_VERSION +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +message_id: 0x10 +protocol_id: 0x80 +This command is mandatory. + ++--------------------+----------------------------------------------------= -----+ +|Parameters = | ++--------------------+----------------------------------------------------= -----+ +|Name |Description = | ++--------------------+----------------------------------------------------= -----+ +|uint32 version |The negotiated protocol version the agent intends to= use | ++--------------------+----------------------------------------------------= -----+ +|Return values = | ++--------------------+----------------------------------------------------= -----+ +|Name |Description = | ++--------------------+----------------------------------------------------= -----+ +|int32 status |SUCCESS: if the negotiated protocol version is suppo= rted | +| |by the platform. All commands, responses, and = | +| |notifications post successful return of this command= must| +| |comply with the negotiated version. = | +| |NOT_SUPPORTED: if the protocol version is not suppor= ted. | ++--------------------+----------------------------------------------------= -----+ + +Notifications +_____________ + +LMM_EVENT +~~~~~~~~~ + +message_id: 0x0 +protocol_id: 0x80 + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 lmid |Identifier for the LM that caused the transition. = | ++------------------+------------------------------------------------------= -----+ +|uint32 eventlm |Identifier of the LM this event refers to. = | ++------------------+------------------------------------------------------= -----+ +|uint32 flags |LM events: = | +| |Bits[31:3] Reserved, must be zero. = | +| |Bit[3] Wake (resume) event: = | +| |1 LM has awakened. = | +| |0 not a wake event. = | +| |Bit[2] Suspend (sleep) event: = | +| |1 LM has suspended. = | +| |0 not a suspend event. = | +| |Bit[1] Shutdown (off) event: = | +| |1 LM has shutdown. = | +| |0 not a shutdown event. = | +| |Bit[0] Boot (on) event: = | +| |1 LM has booted. = | +| |0 not a boot event. = | ++------------------+------------------------------------------------------= -----+ + SCMI_BBM: System Control and Management BBM Vendor Protocol =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 @@ -436,6 +948,322 @@ protocol_id: 0x81 | |0 no button change detected. = | +------------------+------------------------------------------------------= -----+ =20 +System Control and Management CPU Vendor Protocol +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +This protocol allows an agent to start or stop a CPU. It is used to manage +auxiliary CPUs in a target LM (e.g. additional cores in an AP cluster or +Cortex-M cores). +Note: + - For cores in AP cluster, PSCI should be used and PSCI firmware will use= CPU + protocol to handle them. For cores in non-AP cluster, Operating System(= e.g. + Linux OS) could use CPU protocols to control Cortex-M7 cores. + - CPU indicates the core and its auxiliary peripherals(e.g. TCM) inside + i.MX SoC + +There are cases where giving an agent full control of a CPU via the CPU +protocol is not desired. The LMM protocol is more restricted to just boot, +shutdown, etc. So an agent might boot another logical machine but not be +able to directly mess the state of its CPUs. Its also the reason there is = an +LMM power on command even though that could have been done through the +power protocol. + +The CPU protocol provides commands to: + +- Describe the protocol version. +- Discover implementation attributes. +- Discover the CPUs defined in the system. +- Start a CPU. +- Stop a CPU. +- Set the boot and resume addresses for a CPU. +- Set the sleep mode of a CPU. +- Configure wake-up sources for a CPU. +- Configure power domain reactions (LPM mode and retention mask) for a CPU. +- The CPU IDs can be found in the CPU section of the SoC DEVICE: SM Device + Interface. They can also be found in the SoC RM. See the CPU Mode Control + (CMC) list in General Power Controller (GPC) section. + +CPU settings are not aggregated and setting their state is normally exclus= ive +to one client. + +Commands: +_________ + +PROTOCOL_VERSION +~~~~~~~~~~~~~~~~ + +message_id: 0x0 +protocol_id: 0x82 +This command is mandatory. + ++---------------+---------------------------------------------------------= -----+ +|Return values = | ++---------------+---------------------------------------------------------= -----+ +|Name |Description = | ++---------------+---------------------------------------------------------= -----+ +|int32 status | See ARM SCMI Specification for status code definitions. = | ++---------------+---------------------------------------------------------= -----+ +|uint32 version | For this revision of the specification, this value must = be | +| | 0x10000. = | ++---------------+---------------------------------------------------------= -----+ + +PROTOCOL_ATTRIBUTES +~~~~~~~~~~~~~~~~~~~ + +message_id: 0x1 +protocol_id: 0x82 +This command is mandatory. + ++---------------+---------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status | See ARM SCMI Specification for status code definition= s. | ++------------------+------------------------------------------------------= -----+ +|uint32 attributes |Protocol attributes: = | +| |Bits[31:16] Reserved, must be zero. = | +| |Bits[15:0] Number of CPUs = | ++------------------+------------------------------------------------------= -----+ + +PROTOCOL_MESSAGE_ATTRIBUTES +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +message_id: 0x2 +protocol_id: 0x82 +This command is mandatory. + ++---------------+---------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: in case the message is implemented and availa= ble | +| |to use. = | +| |NOT_FOUND: if the message identified by message_id is = | +| |invalid or not implemented = | ++------------------+------------------------------------------------------= -----+ +|uint32 attributes |Flags that are associated with a specific command in t= he | +| |protocol. For all commands in this protocol, this = | +| |parameter has a value of 0 = | ++------------------+------------------------------------------------------= -----+ + +CPU_ATTRIBUTES +~~~~~~~~~~~~~~ + +message_id: 0x4 +protocol_id: 0x82 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 cpuid |Identifier for the CPU = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: if valid attributes are returned successfully= . | +| |NOT_FOUND: if the cpuid is not valid. = | ++------------------+------------------------------------------------------= -----+ +|uint32 attributes |Bits[31:0] Reserved, must be zero = | ++------------------+------------------------------------------------------= -----+ +|char name[16] |NULL terminated ASCII string with CPU name up to 16 by= tes | ++------------------+------------------------------------------------------= -----+ + +CPU_START +~~~~~~~~~ + +message_id: 0x4 +protocol_id: 0x82 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 cpuid |Identifier for the CPU = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: if the cpu is started successfully. = | +| |NOT_FOUND: if cpuid is not valid. = | +| |DENIED: the calling agent is not allowed to start this= CPU.| ++------------------+------------------------------------------------------= -----+ + +CPU_STOP +~~~~~~~~ + +message_id: 0x5 +protocol_id: 0x82 +This command is mandatory. + ++------------------+------------------------------------------------------= -----+ +|Parameters = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|uint32 cpuid |Identifier for the CPU = | ++------------------+------------------------------------------------------= -----+ +|Return values = | ++------------------+------------------------------------------------------= -----+ +|Name |Description = | ++------------------+------------------------------------------------------= -----+ +|int32 status |SUCCESS: if the cpu is started successfully. = | +| |NOT_FOUND: if cpuid is not valid. = | +| |DENIED: the calling agent is not allowed to stop this = CPU. | ++------------------+------------------------------------------------------= -----+ + +CPU_RESET_VECTOR_SET +~~~~~~~~~~~~~~~~~~~~ + +message_id: 0x6 +protocol_id: 0x82 +This command is mandatory. + ++----------------------+--------------------------------------------------= -----+ +|Parameters = | ++----------------------+--------------------------------------------------= -----+ +|Name |Description = | ++----------------------+--------------------------------------------------= -----+ +|uint32 cpuid |Identifier for the CPU = | ++----------------------+--------------------------------------------------= -----+ +|uint32 flags |Reset vector flags: = | +| |Bit[31] Resume flag. = | +| |Set to 1 to update the reset vector used on resume= . | +| |Bit[30] Boot flag. = | +| |Set to 1 to update the reset vector used for boot.= | +| |Bits[29:1] Reserved, must be zero. = | +| |Bit[0] Table flag. = | +| |Set to 1 if vector is the vector table base addres= s. | ++----------------------+--------------------------------------------------= -----+ +|uint32 resetVectorLow |Lower vector: = | +| |If bit[0] of flags is 0, the lower 32 bits of the = | +| |physical address where the CPU should execute from= on | +| |reset. If bit[0] of flags is 1, the lower 32 bits = of | +| |the vector table base address = | ++----------------------+--------------------------------------------------= -----+ +|uint32 resetVectorhigh|Upper vector: = | +| |If bit[0] of flags is 0, the upper 32 bits of the = | +| |physical address where the CPU should execute from= on | +| |reset. If bit[0] of flags is 1, the upper 32 bits = of | +| |the vector table base address = | ++----------------------+--------------------------------------------------= -----+ +|Return values = | ++----------------------+--------------------------------------------------= -----+ +|Name |Description = | ++----------------------+--------------------------------------------------= -----+ +|int32 status |SUCCESS: if the CPU reset vector is set successful= ly. | +| |NOT_FOUND: if cpuId does not point to a valid CPU.= | +| |INVALID_PARAMETERS: the requested vector type is n= ot | +| |supported by this CPU. = | +| |DENIED: the calling agent is not allowed to set th= e | +| |reset vector of this CPU = | ++----------------------+--------------------------------------------------= -----+ + +CPU_SLEEP_MODE_SET +~~~~~~~~~~~~~~~~~~ + +message_id: 0x7 +protocol_id: 0x82 +This command is mandatory. + ++----------------------+--------------------------------------------------= -----+ +|Parameters = | ++----------------------+--------------------------------------------------= -----+ +|Name |Description = | ++----------------------+--------------------------------------------------= -----+ +|uint32 cpuid |Identifier for the CPU = | ++----------------------+--------------------------------------------------= -----+ +|uint32 flags |Sleep mode flags: = | +| |Bits[31:1] Reserved, must be zero. = | +| |Bit[0] IRQ mux: = | +| |If set to 1 the wakeup mux source is the GIC, else= if 0| +| |then the GPC = | ++----------------------+--------------------------------------------------= -----+ +|uint32 sleepmode |target sleep mode. When CPU runs into WFI, the GPC= mode| +| |will be triggered to be in below modes: = | +| |RUN: (0) = | +| |WAIT: (1) = | +| |STOP: (2) = | +| |SUSPEND: (3) = | ++----------------------+--------------------------------------------------= -----+ +|Return values = | ++----------------------+--------------------------------------------------= -----+ +|Name |Description = | ++----------------------+--------------------------------------------------= -----+ +|int32 status |SUCCESS: if the CPU sleep mode is set successfully= . | +| |NOT_FOUND: if cpuId does not point to a valid CPU.= | +| |INVALID_PARAMETERS: the sleepmode or flags is inva= lid. | +| |DENIED: the calling agent is not allowed to config= ure | +| |the CPU = | ++----------------------+--------------------------------------------------= -----+ + +CPU_INFO_GET +~~~~~~~~~~~~ + +message_id: 0xC +protocol_id: 0x82 +This command is mandatory. + ++----------------------+--------------------------------------------------= -----+ +|Parameters = | ++----------------------+--------------------------------------------------= -----+ +|Name |Description = | ++----------------------+--------------------------------------------------= -----+ +|uint32 cpuid |Identifier for the CPU = | ++----------------------+--------------------------------------------------= -----+ +|Return values = | ++----------------------+--------------------------------------------------= -----+ +|Name |Description = | ++----------------------+--------------------------------------------------= -----+ +|int32 status |SUCCESS: if valid attributes are returned successf= ully.| +| |NOT_FOUND: if the cpuid is not valid. = | ++----------------------+--------------------------------------------------= -----+ +|uint32 runmode |Run mode for the CPU = | +| |RUN(0):cpu started = | +| |HOLD(1):cpu powered up and reset asserted = | +| |STOP(2):cpu reseted and hold cpu = | +| |SUSPEND(3):in cpuidle state = | ++----------------------+--------------------------------------------------= -----+ +|uint32 sleepmode |Sleep mode for the CPU, see CPU_SLEEP_MODE_SET = | ++----------------------+--------------------------------------------------= -----+ +|uint32 resetvectorlow |Reset vector low 32 bits for the CPU = | ++----------------------+--------------------------------------------------= -----+ +|uint32 resetvecothigh |Reset vector high 32 bits for the CPU = | ++----------------------+--------------------------------------------------= -----+ + +NEGOTIATE_PROTOCOL_VERSION +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +message_id: 0x10 +protocol_id: 0x82 +This command is mandatory. + ++--------------------+----------------------------------------------------= -----+ +|Parameters = | ++--------------------+----------------------------------------------------= -----+ +|Name |Description = | ++--------------------+----------------------------------------------------= -----+ +|uint32 version |The negotiated protocol version the agent intends to= use | ++--------------------+----------------------------------------------------= -----+ +|Return values = | ++--------------------+----------------------------------------------------= -----+ +|Name |Description = | ++--------------------+----------------------------------------------------= -----+ +|int32 status |SUCCESS: if the negotiated protocol version is suppo= rted | +| |by the platform. All commands, responses, and = | +| |notifications post successful return of this command= must| +| |comply with the negotiated version. = | +| |NOT_SUPPORTED: if the protocol version is not suppor= ted. | ++--------------------+----------------------------------------------------= -----+ + SCMI_MISC: System Control and Management MISC Vendor Protocol =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 --=20 2.37.1 From nobody Fri Dec 19 04:26:45 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2049.outbound.protection.outlook.com [40.107.22.49]) (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 0220E264FAA; Tue, 8 Apr 2025 08:47:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.22.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102046; cv=fail; b=AWei5PkS/dILK+MGLSXkMFAnEudIAQwqKGK7xSp8e+Rs02OBuggBhDGQvr4tB0HdfvBi0Zo54ODf01WpEZSaCDSUWrG5trJAmTY1JfYYmEm49ISflQsIVzz70CUZ96nW9aOzP735aWgO2q4ZjvBxI0rED+zcmhlnWu6mgeHdyg8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102046; c=relaxed/simple; bh=JlyhLs3Ph9dPaK9LLuD0Ijl6Vxr5RkNDoRW1wYe6/ho=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=E18YH+cXRvEaFhwbudTM+UThEsIZ8JtDtAVcdED11CrrGUP9lGpztu8LSJhC60sMOxSE8Y/ZK4gxB+YjlLzHFAAL8IEOWKqKVEDsSO3NUqaUYIYIAb+FyyLjenOzx2kka0st/FbaWCPEfg4/T/xwLD0D1eFR/6ANmFDD5SLbQms= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=QlDdOeGh; arc=fail smtp.client-ip=40.107.22.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="QlDdOeGh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=v0SI4DwURoOjp254HKxAv0s6anWtB4kbY1Iuxoy6Op++bEJMOwJf1dkzR0seimw8EY5pu1Mknrp4NgYGH+jgJlgIaRtaREJiaMl+xBiLEDnJ+EN5z1l42cyZH3iksh6xsXidGo2eKzBYA6+vGxa9TElrPw035J2WAR1XgSvEY/00GvrfduzGH5i2B9pxMpAM6bubBai4U06UP+yr2cPYLaxVomx0fsV75O1JBL5zhgrDcak09BRYsG1QCh5SZqFsmy6HkNa8M45TDLDJmhZsUk6jGg6YMxQI7RtjwETbvKgzLILga3Eu8RjEqDN1otzvQ5eQh6R+2f65WZcjbRTDiA== 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=YoXTun6c7q8EbkV4oFsXccEkdxXzNh80FDjlBDcVE0s=; b=sBB/3MYqw9T29qABq28bw763fziZB/4WOQ1qoWzk/ZZ57Ad4BQBCWByo9VX6SY3LVv8Jb8KNFVr6tmCFAGa/vIbEfTQXKKmZ3NAG7h4rkOva/CVcT7RZ8NxmnCH7zZIgdNftvjnrdAic7/flRESVHPoW8EW0LVw+rzy3gNsioX6l0Ouz/on6sGz2EWpSJS8cM1E4QKPq7qQ2F6JcVr4XW+NQIVtldi6hQMtxa2DHzxszY39Lk2A7IuSa0Oc96Gbjhn2U5O7+I04XtTRpdiwENKL0A8OoBz2uG9pt0/Yfg9mjirZ06vTGWoz7wxuDULfHn5O2uyOGamCcZQmjDaaeLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YoXTun6c7q8EbkV4oFsXccEkdxXzNh80FDjlBDcVE0s=; b=QlDdOeGhslGz2aK0BPsO6LYTA05c9VQM3rtmNRvnI+FwgJG/S+rExH2m6jlXd9th3G8JFPwiksMdx5ytk9NKZu7ZH0Oz3FiQVqFPawJYsHYGCxzajsWBV+HODikUoKVJAXWhlAVo0WBQcFF1v/aLtCu1OnAzEQWRRjIqIZooPsa8/ApPnDKVN/e6jF8sN7pay1kw9pWztgLOt0cZ04z2H0gHhwCA9KDjo/nRutO2y3aaM37azivTzbPpqtmOiS+Sij28U3Z9OpEkq/dU1ovZXXyySGQKBevcfpW4F/frAWKP2zvlH8YHAEaJk9poh5NYrExQzg61aNmlWBGvk5/nPw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by DUZPR04MB10063.eurprd04.prod.outlook.com (2603:10a6:10:4af::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Tue, 8 Apr 2025 08:47:19 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 08:47:19 +0000 From: "Peng Fan (OSS)" Date: Tue, 08 Apr 2025 16:44:26 +0800 Subject: [PATCH v4 2/7] dt-bindings: firmware: Add i.MX95 SCMI LMM and CPU protocol Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250408-imx-lmm-cpu-v4-2-4c5f4a456e49@nxp.com> References: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> In-Reply-To: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> To: Sudeep Holla , Cristian Marussi , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Dan Carpenter , linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744101964; l=2150; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=UVPVtyqvAw9BWvW/abBd2sBVxsFgUdE+KuVHUN9Q9vM=; b=cSraMTd31uveMum888FumqKwFujjtZilZzcXmnidLngW3SkYICIOUZ01jOJ1QyrCAuRIPsNdc BJDsDKAp7aKC2xlitd7uR2UJC/kjk6CUdvGgHDrPX1SQGlMqhiAnUrD X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: MA0PR01CA0056.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ac::12) 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-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|DUZPR04MB10063:EE_ X-MS-Office365-Filtering-Correlation-Id: 43d67848-c07e-44a7-ac94-08dd7679f87e X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?aVRZTit6RWFhVngyc0pmYjQ5RVhPZEY4RG90VzQ4VTVUQms1ZkNsQUcyc0s3?= =?utf-8?B?KzBsZkRoV2lOVFR4Uk10cXpWemkzdzZhdmk0NDN3Rkw5a2kwUlZUcERWZHpv?= =?utf-8?B?eHNsNHgzWGtLK283VGZCdG5SOUFyMlFvQjM3UVJTODh0MHdIS25jWUtLbXly?= =?utf-8?B?dzlaaDNDNDltQ09iOFlQWUNXMlIxRWJicktIUWpYZE1hSUZNdStiZStxbXVH?= =?utf-8?B?NVUraFdVdVFQYzZRRFVzL0hFbE1hdEd5T1BYd2YvaWtHMnF0Szd6MWppaG1y?= =?utf-8?B?M3hyVncxamczSGJsNUc1eVZDbXRWaG5oR2ZjVnJVT2xEcHp2SzhmNWYvdUhZ?= =?utf-8?B?ZzBZMzlQOGdvZFhZd0FNa2RrUFhRVHBTSkk2cUhtNTJKVG1yQlkyWExoUmE4?= =?utf-8?B?UEdVNjhKbFZKWDNEUDBRNWhoMzNRNlN0cE40NEsxdjQ0YkRzMmxXakdqNmpq?= =?utf-8?B?eHVFZ2ZEQVVNazNRODRrWkRvMHFuZVU5V0VqY1o4Zm44aUExamV1eUR5VXZG?= =?utf-8?B?T3ZGT0FkUnBDeXF1Ky9heis4UEpmWGc1K2MwcnNrTTF3bnNrUDAyYXd6OGpC?= =?utf-8?B?QVE0cFd2V1IvTW1mZURSOGFmZHdFUmI5QlhaeWxsSTdPMjFtMVMyR1ByNE1l?= =?utf-8?B?bFdZak4yZzQ2QlB4YW03WjZXcENSQXdCSWlSUGxUUzdsZldZOWFYS216N1RY?= =?utf-8?B?UmtuMWZpazBYL3NVNEZBQ2xDZ1pNUGRjdk9OaW82VTBZTVRIQm1qRkxWWFRk?= =?utf-8?B?Rml5VFJDK1RtWktGandZdGZScUVTcXpXd21CYUhrckJVU1RmOHhnRUpRRmp6?= =?utf-8?B?dUtXY0dpK1I5blpEc1dqbHh1L3JjZFArMDU5aU1URTZvUzFrem5iSnJBaDNO?= =?utf-8?B?THNCRy9IUytCUGhWUHQxbGc2MHpJMy9Nc1dzQUFDaFFjQkNhK2NNNDJidjAy?= =?utf-8?B?YWFVMnNuU3Qvd3AzV1d4d2JZRjBiVnU3RHlEalUvVjMzTG5VZ3E3V29mN1Jy?= =?utf-8?B?bGN3MEhLKzhWcktYcERSU0lJVjJ3STQrMm9sdllNazU5aWR2NDZUUGF0MUpY?= =?utf-8?B?Z1kySUxkSzJYY3FOYUwxZzBRUnJTZ1lvR2JvdjdnclVnVFhaWXhONWwzNDE5?= =?utf-8?B?UUdDdHpwN1Q0NkYzNGp4cHFpQmpjY1lOU0NicGVweEFObk94ZnNpUkY5Tmgr?= =?utf-8?B?c01sLzIxN2NIbzd2R0NqRXllcnNjbFQ1cTVkbnBhcDFSVGlIbGFUazd1VGhE?= =?utf-8?B?RTZHenpKeFNvdks1Q1ZnTHhEeklrMStBajBpbHhyY01acFEvRXJZR0tFMlll?= =?utf-8?B?UGRCZUNFaXhadDdleUpheFpLR3paM3oxdURaZU9mbGM5aVBuVGRXd0pFb0t5?= =?utf-8?B?d2dPVVNPWGVHc1NBRlNmZCtkUnJlOFpxZS9YSCt0NHhGTFI1VHBhMnhOQWFR?= =?utf-8?B?cHMrRmVmcWpBd1JCS0hSUlFXallZaXpKWDZuV2tGYkd4QUdHN1BUNmdWVk10?= =?utf-8?B?YWZPbDQxTWtSR0dYUlpHZWlhNk9nQ2pwelBDbXI1S0xHYW05MkovbUdzcCts?= =?utf-8?B?ZDZsUWFiSkJXY2lydjJRRlNQaWlPWXJpTVh6bnVNUm1ZbUNxWDY0cm9VS2pH?= =?utf-8?B?RE1jdGpTSGMvRUIxLzNUVEwzRnhlS0dtdW9kZUVrbXJ6UG93U2d5K094d0xT?= =?utf-8?B?czBKelVOWTFqd0VNeUlyNGRPczNnaGUxRDgrQWU4RHVVbTY2bWsxVzFhRXhR?= =?utf-8?B?LytkNXlyOW0xL3NBK1hEdlBtSEsyZFIzbFRCbzFkMEx6amJKL0FqeWZjd3Q0?= =?utf-8?B?TXVuNEkwbVNNVXh3RFRmdUdrdVJEbERLVkpnRU92VVlFc0d1RWJSWlVmN1J3?= =?utf-8?B?VzhFMUUrUXdjcFNseVYvVEFROXZaVC9Zb1pxNHJ1ckZVNVJTOG9KMDhxNFRq?= =?utf-8?Q?yRy0XhT49hXe0viCe9poSyv2SkLY1mu8?= 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)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dGdWSSs1YjdVclRFUXVvRGtWOUNyUmZkKzM0blM3VWxZdjJsNXcvc3ROMlZX?= =?utf-8?B?a2d2V1VaUTYzVjQ0Q2ZKKzZaN2lOSGp4cFVBenNNOWE4YlhGMXVxaG9pWERV?= =?utf-8?B?cTM0eXFlRldnanBubzh6dWtJWTF5S1hLbFcrT0V2WGNXQnZEcGJsOW02Ylc3?= =?utf-8?B?QnB6SVZzdjlRU0hQdXFYd1M0RlJQMjJaVkwwTzR2ZUJtR01aclRYbml2OUY2?= =?utf-8?B?cUhqczJKYStDL0J6dGxqMkFLeWlXK0VGVmd6RnFHNXhqNWJtMWI3NU8raUlL?= =?utf-8?B?eWR0elVvRkxUSklYYnJSTmx0MDVENkQvNkdiWFM1WVhDbzUzRFV5c2ZjaHJF?= =?utf-8?B?U0FxdlpVMTZiRm1wcjdjOXM2ZzFlU1IwMjVNSjZMZVo2Z2E4Nmk2OC9MVlpM?= =?utf-8?B?Z2locWw3R0loak1RWE53aHZnSDdnMXdVNGRRb29rM2pydTdhUWgvTkxuMFQw?= =?utf-8?B?eWswTll4dzk0aStadXE1NFpHN1pJVXppM1FUTnpnd28vOVJmcTF3Q0ppeGxO?= =?utf-8?B?QXdJMXphZ0xWaEtObTAzZWF6dTR5YWlJY2pRU1RFdEhGYTlYaTlXeTFFSXJN?= =?utf-8?B?d0ZvMWhxaktSVVRHV3U1ejlLRm5BK3RBTE1pR3o0cld6bmVlRVA1WDRWTmNw?= =?utf-8?B?YUJlaXp6NWpCQ2QvUzJ4QXpVUHl5R1BDa2txTis1azhONlBGM2daMHQ1VXUy?= =?utf-8?B?cXd0OG44R1FyMEl6UmVESjMzN241NjJrYk9EWGs4VE1lL2FlTG5iWGhzck9O?= =?utf-8?B?bk5oVFAxMnJjOWQ4VjYxK3VNTHY3VDdpTXYzUDhtV2RiVlJaZVluSFFuQnA0?= =?utf-8?B?MGtVK0NBb2FsSDJ3N0I4NmZUeFdLOFM2L3REQ2F5ZzNiU3JBWTBQdVR3NTA1?= =?utf-8?B?dVJoMTJjK3NOUVljeE05UGMwdDBZb1Qwc05GRnM0bUlzL1I0VCtPcTE4citL?= =?utf-8?B?WmhqOUFYdTVwVkM4MnNtN1RPd0RjUnpLWUp0SHhWVmF3ejhFSWdSQTdaMW9p?= =?utf-8?B?MVg3M3NKUFFXQm8wdDVZZlJNbjFVdUN4SXQxMVVibzNxZFl2RTBXVFFDKzU1?= =?utf-8?B?cFJDQ1hWenRVKytaZUxqeWxjMzVvQlhWYVJLbXZTU3ZUVHBsTllxYi9HNkIr?= =?utf-8?B?MFdPeFJvVUttVTNkOG14c0trTG9LZVp3NmJlbTN6TisyRnRvMnNOVzE1SDRy?= =?utf-8?B?OFhzZ2dFQlg2b2l6VVFuYTJmc2Q1WnNLTzNxREVoSEYrdXlKNDBPR29IZlZQ?= =?utf-8?B?clRWQ0toRS83aC9IaVlLcjFMbnFnWHhyb3pkbi83dHEvZnF6N25MUDdFOGQx?= =?utf-8?B?dS9uWkp5eEp5eVJUandjaGxsZEo0S1NyOVNGMkFIMnRxbnF0VVNuNE05ZVVJ?= =?utf-8?B?MzRtQ0cvYzVmajNjSGpZS08vVWVraDVWTHY0RTQ4dzM1UWw0Y0h1WGk1WlV5?= =?utf-8?B?MFJYaWFnY1BsT3FhcEdKbjFoSVVpVHp1RUlBb0N3cmpIcHdWdHU0a3BTUWRS?= =?utf-8?B?QVcvbkE1bWgvVW1ueHM0TFZpcFZ1QVBpVWRvUU1Wb1huNjNMeUFtTEVtZ3Fy?= =?utf-8?B?aDdNK3ZndHc4ZWFyWmR6YUozTUcwVWhqdGRwRXorNndmSkxEUWlveGRqbEF6?= =?utf-8?B?VzY2d01DcWR3NXBhVmUrN2R4YjVkSDQwOUZJRGk2ZGpMVWxMK3lKeGhnMWVP?= =?utf-8?B?YXF5dlZ2OUhEcml0MnlaY0kyS1VuNWRSYktKQ2RqaGV2NEpGREZzNkZ4YkFt?= =?utf-8?B?S2dhWncvVFZWa3BOK0dPMTd6emVKMUJwOFBwNUQ5WEhmRTJMbm1GK1B5SVZi?= =?utf-8?B?a1FiMnlyM2VkSVlUTFBwTmNzZWtSN2FMVzRud21TZURERHlTL2VZaWgrSHAx?= =?utf-8?B?dkhLekZvNzFiRWxkQUZYNHcwbnMyN1R5OWhzZWhOQ2N3UkZUK1JNVFRMOWRp?= =?utf-8?B?QkZnYUhvOGxKNjBWNEpzSWVSWEs5bS9JKzZpQ1FSL1MrTkxvSzdtbW5ZVG1B?= =?utf-8?B?cCtIcTBOZkk5U0xJV01FUmNXYll6TmZMZEN2ZHlyM09HMmhHc3UyRGlRWlRy?= =?utf-8?B?LytveE81VndhU28yOThqTTBmdDhDa0tmMmtzd0lKRmdhR3U0b3lERkd5ei9W?= =?utf-8?Q?B1Z7bnc4vNqDGyAobBtqvtdvd?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43d67848-c07e-44a7-ac94-08dd7679f87e X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 08:47:18.9846 (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: uepimDkKZBfX+eNpcBGhMTlrjiefNc6Z7AGAufuoGoC7Mx2QxJoyR3PxjRLz5aIKxiyOwOs24YOFpxkCyr8TOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR04MB10063 From: Peng Fan Add i.MX SCMI Extension protocols bindings for: - Logic Machine Management(LMM) Protocol intended for boot, shutdown, and reset of other logical machines (LM). It is usually used to allow one LM to manager another used as an offload or accelerator engine.. - CPU Protocol. allows an agent to start or stop a CPU. It is used to manage auxiliary CPUs in an LM (e.g. additional cores in an AP cluster). Reviewed-by: Rob Herring (Arm) Signed-off-by: Peng Fan --- .../bindings/firmware/nxp,imx95-scmi.yaml | 23 ++++++++++++++++++= ++++ 1 file changed, 23 insertions(+) diff --git a/Documentation/devicetree/bindings/firmware/nxp,imx95-scmi.yaml= b/Documentation/devicetree/bindings/firmware/nxp,imx95-scmi.yaml index 1a95010a546b14b1d3d97aa990c0305a551f2620..2bda2e0e13693f12816762137e0= 7dc308d2c49e4 100644 --- a/Documentation/devicetree/bindings/firmware/nxp,imx95-scmi.yaml +++ b/Documentation/devicetree/bindings/firmware/nxp,imx95-scmi.yaml @@ -11,6 +11,18 @@ maintainers: - Peng Fan =20 properties: + protocol@80: + description: + SCMI LMM protocol which is for boot, shutdown, and reset of other lo= gical + machines (LM). It is usually used to allow one LM to manage another = used + as an offload or accelerator engine. + $ref: '/schemas/firmware/arm,scmi.yaml#/$defs/protocol-node' + unevaluatedProperties: false + + properties: + reg: + const: 0x80 + protocol@81: $ref: '/schemas/firmware/arm,scmi.yaml#/$defs/protocol-node' unevaluatedProperties: false @@ -19,6 +31,17 @@ properties: reg: const: 0x81 =20 + protocol@82: + description: + SCMI CPU Protocol which allows an agent to start or stop a CPU. It is + used to manage auxiliary CPUs in a LM. + $ref: '/schemas/firmware/arm,scmi.yaml#/$defs/protocol-node' + unevaluatedProperties: false + + properties: + reg: + const: 0x82 + protocol@84: $ref: '/schemas/firmware/arm,scmi.yaml#/$defs/protocol-node' unevaluatedProperties: false --=20 2.37.1 From nobody Fri Dec 19 04:26:45 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2049.outbound.protection.outlook.com [40.107.22.49]) (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 82FDB264FB1; Tue, 8 Apr 2025 08:47:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.22.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102049; cv=fail; b=baHPB102KkZwZHN+NNv4uAOe1pUOW86HteC7in5GkVse4gh/okpN3SrxU28neJsRUhUazbSjQo9PThW7Vg/m8Dd7pMKp9StY+8vMfTw9Z9hHeL6nRyPnXwyMlF8tDrMqJxO3fe8hXXRUR7aGAdje//VsicBUamnwhkTdT0tNIs4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102049; c=relaxed/simple; bh=c71fAxExodpcPFklQSxJZeiWOfeo6X3n87Mv7GymYT8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=MjBu8vhsVrCZFUS+N3Dtz3suGsHtvIHb9q6nLhQ5BPMcWgfP5D1SYLeVP6efpvOu1D27T5haHU0v0fxS+VdkYkHsqvkZhth3eZny3ElDQVBkJtjYKH/rOPIsTzLmoBxlzuBKemDnzMfRSalcjGRiFDtCYjPN9jGRNS/ijAlq2pc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=W0cl4djF; arc=fail smtp.client-ip=40.107.22.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="W0cl4djF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SQo5ELQZxEVoJyXXCxcae1EFUKpAPU79LEaT6WJ1nv3H4T5H4WA7tl/Jw4DMVwAqx7xZo1hzI0e4DO3CmpJ6lsYMwLv1YLIZbXTawn8YW1HP6os3byXrhD4J5bjYeflRsHZcmCKkHkhCN+oXUhkS3zgPRaRLYgSTVAhBOc6SNryoVTupp3O2Zx+vWUVtskIlffv8cXx6p8L/lXSD4+y7j6gl7P/fVTZL//Ra6W+ZxhJGyhZJQAbLfGJT7pBizZ1GGd71AUGtX8OCzz20gdpkxAWYK6d5F+zFHnrzjDb4wsO13hglnLW41FEIRRpybK4XvXY/Zavn/UAioY4x9Vi9Vw== 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=+pINGZrAn9qm9/Z1XYt+VpvV4QII9z+xGDPqXiadnp0=; b=X1Uekkfg3eorC67PUhTsFO2PI+QWdX5TaqxhLrcRERO4VZx0xSnfgXH+p2HmXZ6LXV1AYgOrDBUouHC81E/Mct9tyJBewn2c2Fcah/LJK3pmHfuwjEzk/QadpBedpjAnw9kkLxd6FO9IBFST0VIcjA6RZERed/QbioZaMzh26YkgBMluJk5HnqmVgiccnd7FBdB1jjo9xZ2fSSVCB7GjYviM4Z7HsjDTd5hUsNW5LOxyYJqcPBdewmJKQ0/dLWtM/wOLM3iUN+FJZTYwWxigoOGz3gADmGolay/albHkiXrrm7tEJ4w/Mjbl24/xZvoadLAC6+HiMQIB3PmZ+kYHsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+pINGZrAn9qm9/Z1XYt+VpvV4QII9z+xGDPqXiadnp0=; b=W0cl4djFUPvBrdShQjIFlvTmLv4U3EjeKnvuSXCqcMAXcG1ShDpQ1VB9S/1xVfzHTbk31r6sdoVFMKQ0d17LmNpwMsnFHYzCrdkbabU/PGD7SrTKytNHbtDZJKVbcJEH+IUreL1uvALAO6pGtMw/yaJtVUuLaMsac5qmpMyYi78ZxeFOtvsh9lg321aeymCq6kJt/igwCgbPVQDh43mn073K+Y+5mMZt4cbQiDik5FYHlSc0nE9GsVnEtqLsls4cx0RMbk+ule9G8VG4RKCV/PGpH2GQgzoWK46gMmGbzOqBHp3p4PgR8k3LbUxZXhEyToYYbOmlRLiH6g33lKrhjw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by DUZPR04MB10063.eurprd04.prod.outlook.com (2603:10a6:10:4af::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Tue, 8 Apr 2025 08:47:24 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 08:47:23 +0000 From: "Peng Fan (OSS)" Date: Tue, 08 Apr 2025 16:44:27 +0800 Subject: [PATCH v4 3/7] firmware: arm_scmi: imx: Add i.MX95 LMM protocol Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250408-imx-lmm-cpu-v4-3-4c5f4a456e49@nxp.com> References: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> In-Reply-To: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> To: Sudeep Holla , Cristian Marussi , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Dan Carpenter , linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744101964; l=10734; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=ROhx7H8nJHW9BRkOKk+9YW5w6vI42KKmT6k6GEjyQ1s=; b=Q+uvdcWQ/Z7ZAcapauHYcSWYSQd77yRTiNd/tP6xVvBb/ZNdxJqP7/J97wg2JPzmnjmV5QcQx L9qITCpVOtyAiWBgLoJ/ZkOna94nBdZjfSmNBpbsLNwNdPSldnnJMqa X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: MA0PR01CA0056.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ac::12) 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-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|DUZPR04MB10063:EE_ X-MS-Office365-Filtering-Correlation-Id: bfe662ea-34be-49fd-a45b-08dd7679fb58 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VTYxUXpJS3l3a1Q1Z0FldEFiM05TQ0M2ZjFNNG1KY3ZvS3hjeVBFbGMwNXhE?= =?utf-8?B?VlNYNENXMlVaUDVwZW81RGxVVlZyTDNYNXJYVEg1dEIyV0cvOXNLUG9EMlQz?= =?utf-8?B?RDVvYUY2ZXEyUzFEUjNwYTZpaUNmWU5TUXY3SVRMUEVzMjZZb0wySEVaWUk2?= =?utf-8?B?MXNxSWszbDQ3WnZBdjhNN0RxNEN0UmE0bzllaTlHUThHNmRrcEs1Y3BwQ0lM?= =?utf-8?B?Y1NYbThzTnMrV05PV0poQWRWemg1V0VkeHU3VStmSmhLRWxOSkI5dUlob1M1?= =?utf-8?B?T0tSZGZpM1R5elMreGFGMy8rRHlmQjRySlNtbWNaaml0eEs4eldOWDRMQVk2?= =?utf-8?B?blpvUytSQ0h0V1dWbFNERUp0SUVQT2FKOWRDVysxY0pVVVFRTjYvMS9ZMmhX?= =?utf-8?B?QmZScGkrU283WFhRNldmZThZeUpEUU8xUzlJNUV2a25yYW9aSU16NGhQRitM?= =?utf-8?B?c2FCMEFKQlJsUUZtSFlnTjhpT2dFZTBMRFhVY0YyWnBkZE10Q3hyZTBvQ2c0?= =?utf-8?B?eFZWZjkxNVQ5THdVLzRJcmF4VDhmUGhyc1hQMVFLN1gwOHJaTS9ZN24xZ0g5?= =?utf-8?B?SEV0ZFJ6RzQwZWxxL0dxZjZNdytXd0lRb2N0S2pBMmQyeGRRMUVkTFA0TUtl?= =?utf-8?B?UzdzZTg5WEhLdTI0NC85S1ZiODd5alpWeVRKZ3p0aFBTOWJnT0FlS0Y4VDRS?= =?utf-8?B?cmRSWk5kU2Z3Nnc5UDJVbXZUb3JCVTBRczhEeXVFSGtTeVpqanZORUZEM0lW?= =?utf-8?B?YXU1ODl3YnNJZHV5Wkc1Z3hucXRZUlVkU3dQQU5yaW9TR3dOUTVWOWVpUk9x?= =?utf-8?B?cldHb0c2TXBtUU4vM01MS2t3Q0RxeE1zMTNFZW95dUh4dS9iMER4RkZQWXps?= =?utf-8?B?ZVJVN3ZNYWtEZ1VnVUU5WmtqbE0yNjZCZEoySzZCclc3czhYR2grSk1raG5n?= =?utf-8?B?NDZSRWNEd21DenhzckxCVllhMDIvYUZhYmlDeWZGdFJGNkpmbXliQnc5b0Y0?= =?utf-8?B?RkljT0hvamh3bUVNVHlwMXpGUnZ2NUs0UitodzZIUTAxb1h6L0g4OU1MeGlt?= =?utf-8?B?UDJhY0xuTlBINmRKTzVLTjU5MVMreER6ajF4T3dXWjhlaS9vbUJhSmtOZHA2?= =?utf-8?B?TzM0alEwQjRRd2k0YnlwQm56Y1ZmWS9sTmlIemF4VzJCZ0VPV2NyQndhYnpk?= =?utf-8?B?QmxaQXlDSmVPM21YeVcvbmtLK292OVpjZGNwVFlyZ3RUZjhiU0svRk8zZUZO?= =?utf-8?B?UDY1YW42TG1hWkJ5QXd5MVFyWFpVM094VUg1TEZ4T1U4SUV2eXFyQlF4aHh0?= =?utf-8?B?YnYzbHp0NEszMkF2Z0tibWxzOFVwNW93MHA1UUpHU1FFc1lKVmJwRC9aOC9p?= =?utf-8?B?RVhsWm1aL0tFSE5wUVdCU0ZDeW5uc0haUGtpZUxYTGFMSzBDYU8yNEdLT0w1?= =?utf-8?B?NElIZmJpREVxZCs1V04wSGprRnRwekJuc215Q2dBWkN5RUNHU29KU2dhVWxO?= =?utf-8?B?VTdEaE5VYTFHQlRwWENEVnJvWGxoZktIZ1hreWhOcVRMdWdoUUpKWkFpYUx2?= =?utf-8?B?ZlZQbXpyMWQ1ZitqSmd6aVpUY1RXWXliRHBTUi9pSkNTRWxDNGM5dFRHdnk4?= =?utf-8?B?T3VsUjR6dHdtTUZmUTNSYy9DenE2VlVYbkxNbDNQQURVamVWSnNwMXJGdmRM?= =?utf-8?B?SmZZL2pmSUlFeXFYYVQ2NzlCWEE3K01Wc2RURGJhMkpvMUVBbFF5eWgySlBJ?= =?utf-8?B?TFg2MEF2dHhQWDFBcFphWWIyeTNyREwwTk85cW1hNCtoMU0rUFVuQVNZd2RV?= =?utf-8?B?eGFDdzU1WWdTWHBDem5HSHMyRFpuREtkaG5jYjZnekQ5Q1dNVDdnNS95V2Jh?= =?utf-8?B?T1VCOC9Ha05MVFZMUERoRWxSNjA4UktmUnVJeEIrS2NkNGhtUjVWZzIwMm5P?= =?utf-8?Q?sS7InrSX3JPouu92h8zn56TBX1ijXhZk?= 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)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SEYxbjdGcGNYNlNWYmN6ZnU3V3dsckdqcFlpTnh1QUtzOUxCc1hUUytSZTNk?= =?utf-8?B?VndXM1ArZUNBdG12WGcxZTVTd1BxTE9lcFR0d2I2YS9TNzd4VHNFVFZpank1?= =?utf-8?B?Y2dSN3dBUERoVkdpdDk4dWxmblpUbG51MFpCTm82QnZiVUp0R3NhN1psb0ZB?= =?utf-8?B?OGNqdVd0alVpbmoyWnR3eG9UTjlFbklrbURxTmVmVlpzSGszOFhWR1VqYnJP?= =?utf-8?B?VGpRZTUwUzBsMjBFQU1aYmFNbkhvSXRqZUJqc05QR0dmZ1locXJHRFhWLyt1?= =?utf-8?B?ME9xRkZNSmJHQ0xRNnlPUVJ4VDhueStoWTNHUUkvZXp6YjZ4UFRIamxtNXdG?= =?utf-8?B?d1MxZ050RTZqV1Iwa0JiNkErcDlzOHNIZ3huTXhpWVRKNjJSUVpVSjg1cXNO?= =?utf-8?B?N0tOcm5DRmZjOFZ0UTFTb3dFM2I3VmpjdXo1KzdhQWlVTVozMXYzOXM3RVp5?= =?utf-8?B?cy84TUlQK3psbUlPSVU5aHp6Ymc1UlVqSHJySDBIU29FRGpjMDVwbnp3V2xx?= =?utf-8?B?Yitrb3pLako3Wjg4RlNadUFxdUpoNkdiMVNWL0szSERrRGR6YTlCZ0sxVmJt?= =?utf-8?B?bmtFMnR6TjlqOHRKOGxkajFXek9Ic0pSSll5bENacGRUNldiZUdYWnFMVnZh?= =?utf-8?B?bEI4Zmt4Z2paM0lpMlFwUHJ5dUZPU1k3VWtxYjdHL2dqd0lteE9HMTBXQk5w?= =?utf-8?B?cUhvcUZZWU1uOFVqU3pkK2kxTmVYUGNYK0xKTFZKSm5SY2RVemVjU0hjVjhr?= =?utf-8?B?bytPcG81UjdKVVErSTVNdDQ4RU1ZTGlzUU9OOUU1NXBieVJqYWZkejEvSGgz?= =?utf-8?B?NGdwbGdiRVFjNjdoWm5CYThJOVNyS0JLQVJRcVV2OHZ5QmFPSGdFTW1TQlNz?= =?utf-8?B?eE1HSlhSTjIyMEgrcjMxV01halJGQld2ZzFBbkJFOHd6WUxmYWlNQ0g4NDEw?= =?utf-8?B?OU9ONHNaMlMyd3dQOURpK3lBYms1eGFQQWgvQ0lUMG1lVmpJTVh4Q3BpU3hX?= =?utf-8?B?bFliM1RQMnN3UEFFSnhjWE93L0ZNWkJUUWZmem1FZEZ0dVZ4M0djOWlXdGVO?= =?utf-8?B?bTNMRG42ZGZuSWFvTEZ2MTlYazdvSHlYOTZoMVh4RWdzd056SnEyNktRcldp?= =?utf-8?B?bnhZR1U4QU1pS2dYMkRIbU9ZTkgyTVBNbCs2akVXUWNvYWFOWGw3OW92RUpS?= =?utf-8?B?VS8zc1BGc3V2d0ZnT2kxUWZYelZxSFdaeUxEUmJWend2UTQveHJuNVA0bGZN?= =?utf-8?B?ODBJeFplVnZPRVVJNitIN21IenVGWDVBWWpVL0U5MW05R2JHTzNnQkd0Vmxq?= =?utf-8?B?K3ZXaElTMnRpcFE3WEdEVUpUVFpuRWxZWG5zNmIrK25mcEdmQzAzaW1kKzlQ?= =?utf-8?B?UzZrQlhaWjlYVmwwK3UzMTk4NVFGc0dFTnhma0xTQWFlS1hIa2VmRk1mUk9i?= =?utf-8?B?SmMzRDFKMUREWE5BN0RLUkdjRUkxTk1iNjZpRzZkQldOdHpFcm11MU0zQ25z?= =?utf-8?B?Q3RUNEV5dTBUVFJaclVicEJQZW4yRENTU1hQdnFJL3BnSTlLUnBVSzBnR2VH?= =?utf-8?B?YUg4T1U4VHJGUXVZWWVaZ0hsN0VQaEQ5TVRqM2dDb3dxVHJCRUdDZXExcklB?= =?utf-8?B?L2FKNHRhT3pYcnVqd0ZZYkVjcmF5c0ZyOHRGbmdaT29ZYkJueGsxbkZkQXdG?= =?utf-8?B?SForUElJcnkzLyt4c3J4U0IySjcrY1pZcFl2UkxQOXBxL3MvcXluY29xVkQ4?= =?utf-8?B?YUcyQnlvcUZ3VXdlTEx6bmZ0WjE5djdka3p3TXZtdnd0ZkFZcDcxSWtDUXpz?= =?utf-8?B?a3Zocno3WW9mNTE2M2FqQXc0RVBYRUp2L1AzbXM1ZnIxSFB6SlJKRStiRnJ0?= =?utf-8?B?V0xhRXlSWFplNkc3djd3ZU5ZOHRWYlVRK1FaK0svSzNsUklWa08rN2NQZkcr?= =?utf-8?B?RVUyelhTTU5ueU5keVh0cmM5SUpyWjFCUlhDSXMrcDRCaDZhSzlZalVYbkE4?= =?utf-8?B?TThLME42amdIYVdsa201NkFpbjBDQTd6Si9aZEpvZVlKb2RIODBGbWdGQjA1?= =?utf-8?B?VGsvTFk0aFJWbkRHaU9mMGtzb2wwSlp6TDU0TjF5U2lPZGFad2Q0VHBNU2V3?= =?utf-8?Q?DUXOJOE2YBIC7t6QMZ6Z9cIaZ?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bfe662ea-34be-49fd-a45b-08dd7679fb58 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 08:47:23.7633 (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: ciIYOiPte5wK7g60Qw5WxOqtBtBIeicmEIH6Rpbr3oIdr8yCvLpftrerCZGKjEucHHvOiKwtxomEHDcgJ0knhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR04MB10063 From: Peng Fan Add Logical Machine Management(LMM) protocol which is intended for boot, shutdown, and reset of other logical machines (LM). It is usually used to allow one LM to manager another used as an offload or accelerator engine. Reviewed-by: Cristian Marussi Signed-off-by: Peng Fan --- drivers/firmware/arm_scmi/vendors/imx/Kconfig | 11 + drivers/firmware/arm_scmi/vendors/imx/Makefile | 1 + drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c | 262 +++++++++++++++++= ++++ include/linux/scmi_imx_protocol.h | 32 +++ 4 files changed, 306 insertions(+) diff --git a/drivers/firmware/arm_scmi/vendors/imx/Kconfig b/drivers/firmwa= re/arm_scmi/vendors/imx/Kconfig index a01bf5e47301d2f93c9bfc7eebc77e083ea4ed75..1a936fc87d2350e2a21bccd45df= beebfa3b90286 100644 --- a/drivers/firmware/arm_scmi/vendors/imx/Kconfig +++ b/drivers/firmware/arm_scmi/vendors/imx/Kconfig @@ -12,6 +12,17 @@ config IMX_SCMI_BBM_EXT To compile this driver as a module, choose M here: the module will be called imx-sm-bbm. =20 +config IMX_SCMI_LMM_EXT + tristate "i.MX SCMI LMM EXTENSION" + depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF) + default y if ARCH_MXC + help + This enables i.MX System Logical Machine Protocol to + manage Logical Machines boot, shutdown and etc. + + To compile this driver as a module, choose M here: the + module will be called imx-sm-lmm. + config IMX_SCMI_MISC_EXT tristate "i.MX SCMI MISC EXTENSION" depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF) diff --git a/drivers/firmware/arm_scmi/vendors/imx/Makefile b/drivers/firmw= are/arm_scmi/vendors/imx/Makefile index d3ee6d5449244a4f5cdf6abcf1845f312c512325..f39a99ccaf9af757475e8b112d2= 24669444d7ddc 100644 --- a/drivers/firmware/arm_scmi/vendors/imx/Makefile +++ b/drivers/firmware/arm_scmi/vendors/imx/Makefile @@ -1,3 +1,4 @@ # SPDX-License-Identifier: GPL-2.0-only obj-$(CONFIG_IMX_SCMI_BBM_EXT) +=3D imx-sm-bbm.o +obj-$(CONFIG_IMX_SCMI_LMM_EXT) +=3D imx-sm-lmm.o obj-$(CONFIG_IMX_SCMI_MISC_EXT) +=3D imx-sm-misc.o diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c b/drivers/f= irmware/arm_scmi/vendors/imx/imx-sm-lmm.c new file mode 100644 index 0000000000000000000000000000000000000000..7f4febe2e17770d745f936dff25= b556d8e4f20c8 --- /dev/null +++ b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c @@ -0,0 +1,262 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * System control and Management Interface (SCMI) NXP LMM Protocol + * + * Copyright 2025 NXP + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "../../protocols.h" +#include "../../notify.h" + +#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x10000 + +enum scmi_imx_lmm_protocol_cmd { + SCMI_IMX_LMM_ATTRIBUTES =3D 0x3, + SCMI_IMX_LMM_BOOT =3D 0x4, + SCMI_IMX_LMM_RESET =3D 0x5, + SCMI_IMX_LMM_SHUTDOWN =3D 0x6, + SCMI_IMX_LMM_WAKE =3D 0x7, + SCMI_IMX_LMM_SUSPEND =3D 0x8, + SCMI_IMX_LMM_NOTIFY =3D 0x9, + SCMI_IMX_LMM_RESET_REASON =3D 0xA, + SCMI_IMX_LMM_POWER_ON =3D 0xB, + SCMI_IMX_LMM_RESET_VECTOR_SET =3D 0xC, +}; + +struct scmi_imx_lmm_priv { + u32 nr_lmm; +}; + +#define SCMI_IMX_LMM_NR_LM_MASK GENMASK(5, 0) +#define SCMI_IMX_LMM_NR_MAX 16 +struct scmi_msg_imx_lmm_protocol_attributes { + __le32 attributes; +}; + +struct scmi_msg_imx_lmm_attributes_out { + __le32 lmid; + __le32 attributes; + __le32 state; + __le32 errstatus; + u8 name[LMM_MAX_NAME]; +}; + +struct scmi_imx_lmm_reset_vector_set_in { + __le32 lmid; + __le32 cpuid; + __le32 flags; /* reserved for future extension */ + __le32 resetvectorlow; + __le32 resetvectorhigh; +}; + +struct scmi_imx_lmm_shutdown_in { + __le32 lmid; +#define SCMI_IMX_LMM_SHUTDOWN_GRACEFUL BIT(0) + __le32 flags; +}; + +static int scmi_imx_lmm_validate_lmid(const struct scmi_protocol_handle *p= h, u32 lmid) +{ + struct scmi_imx_lmm_priv *priv =3D ph->get_priv(ph); + + if (lmid >=3D priv->nr_lmm) + return -EINVAL; + + return 0; +} + +static int scmi_imx_lmm_attributes(const struct scmi_protocol_handle *ph, + u32 lmid, struct scmi_imx_lmm_info *info) +{ + struct scmi_msg_imx_lmm_attributes_out *out; + struct scmi_xfer *t; + int ret; + + ret =3D ph->xops->xfer_get_init(ph, SCMI_IMX_LMM_ATTRIBUTES, sizeof(u32),= 0, &t); + if (ret) + return ret; + + put_unaligned_le32(lmid, t->tx.buf); + ret =3D ph->xops->do_xfer(ph, t); + if (!ret) { + out =3D t->rx.buf; + info->lmid =3D le32_to_cpu(out->lmid); + info->state =3D le32_to_cpu(out->state); + info->errstatus =3D le32_to_cpu(out->errstatus); + strscpy(info->name, out->name); + dev_dbg(ph->dev, "i.MX LMM: Logical Machine(%d), name: %s\n", + info->lmid, info->name); + } else { + dev_err(ph->dev, "i.MX LMM: Failed to get info of Logical Machine(%u)\n"= , lmid); + } + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int +scmi_imx_lmm_power_boot(const struct scmi_protocol_handle *ph, u32 lmid, b= ool boot) +{ + struct scmi_xfer *t; + u8 msg_id; + int ret; + + ret =3D scmi_imx_lmm_validate_lmid(ph, lmid); + if (ret) + return ret; + + if (boot) + msg_id =3D SCMI_IMX_LMM_BOOT; + else + msg_id =3D SCMI_IMX_LMM_POWER_ON; + + ret =3D ph->xops->xfer_get_init(ph, msg_id, sizeof(u32), 0, &t); + if (ret) + return ret; + + put_unaligned_le32(lmid, t->tx.buf); + ret =3D ph->xops->do_xfer(ph, t); + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int scmi_imx_lmm_reset_vector_set(const struct scmi_protocol_handle= *ph, + u32 lmid, u32 cpuid, u32 flags, u64 vector) +{ + struct scmi_imx_lmm_reset_vector_set_in *in; + struct scmi_xfer *t; + int ret; + + ret =3D ph->xops->xfer_get_init(ph, SCMI_IMX_LMM_RESET_VECTOR_SET, sizeof= (*in), + 0, &t); + if (ret) + return ret; + + in =3D t->tx.buf; + in->lmid =3D cpu_to_le32(lmid); + in->cpuid =3D cpu_to_le32(cpuid); + in->flags =3D cpu_to_le32(0); + in->resetvectorlow =3D cpu_to_le32(lower_32_bits(vector)); + in->resetvectorhigh =3D cpu_to_le32(upper_32_bits(vector)); + ret =3D ph->xops->do_xfer(ph, t); + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int scmi_imx_lmm_shutdown(const struct scmi_protocol_handle *ph, u3= 2 lmid, + u32 flags) +{ + struct scmi_imx_lmm_shutdown_in *in; + struct scmi_xfer *t; + int ret; + + ret =3D scmi_imx_lmm_validate_lmid(ph, lmid); + if (ret) + return ret; + + ret =3D ph->xops->xfer_get_init(ph, SCMI_IMX_LMM_SHUTDOWN, sizeof(*in), + 0, &t); + if (ret) + return ret; + + in =3D t->tx.buf; + in->lmid =3D cpu_to_le32(lmid); + if (flags & SCMI_IMX_LMM_SHUTDOWN_GRACEFUL) + in->flags =3D cpu_to_le32(SCMI_IMX_LMM_SHUTDOWN_GRACEFUL); + else + in->flags =3D cpu_to_le32(0); + ret =3D ph->xops->do_xfer(ph, t); + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static const struct scmi_imx_lmm_proto_ops scmi_imx_lmm_proto_ops =3D { + .lmm_power_boot =3D scmi_imx_lmm_power_boot, + .lmm_info =3D scmi_imx_lmm_attributes, + .lmm_reset_vector_set =3D scmi_imx_lmm_reset_vector_set, + .lmm_shutdown =3D scmi_imx_lmm_shutdown, +}; + +static int scmi_imx_lmm_protocol_attributes_get(const struct scmi_protocol= _handle *ph, + struct scmi_imx_lmm_priv *priv) +{ + struct scmi_msg_imx_lmm_protocol_attributes *attr; + struct scmi_xfer *t; + int ret; + + ret =3D ph->xops->xfer_get_init(ph, PROTOCOL_ATTRIBUTES, 0, + sizeof(*attr), &t); + if (ret) + return ret; + + attr =3D t->rx.buf; + + ret =3D ph->xops->do_xfer(ph, t); + if (!ret) { + priv->nr_lmm =3D le32_get_bits(attr->attributes, SCMI_IMX_LMM_NR_LM_MASK= ); + if (priv->nr_lmm > SCMI_IMX_LMM_NR_MAX) { + dev_err(ph->dev, "i.MX LMM: %d:Exceed max supported Logical Machines\n", + priv->nr_lmm); + return -EINVAL; + } + dev_info(ph->dev, "i.MX LMM: %d Logical Machines\n", priv->nr_lmm); + } + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int scmi_imx_lmm_protocol_init(const struct scmi_protocol_handle *p= h) +{ + struct scmi_imx_lmm_priv *info; + u32 version; + int ret; + + ret =3D ph->xops->version_get(ph, &version); + if (ret) + return ret; + + dev_info(ph->dev, "NXP SM LMM Version %d.%d\n", + PROTOCOL_REV_MAJOR(version), PROTOCOL_REV_MINOR(version)); + + info =3D devm_kzalloc(ph->dev, sizeof(*info), GFP_KERNEL); + if (!info) + return -ENOMEM; + + ret =3D scmi_imx_lmm_protocol_attributes_get(ph, info); + if (ret) + return ret; + + return ph->set_priv(ph, info, version); +} + +static const struct scmi_protocol scmi_imx_lmm =3D { + .id =3D SCMI_PROTOCOL_IMX_LMM, + .owner =3D THIS_MODULE, + .instance_init =3D &scmi_imx_lmm_protocol_init, + .ops =3D &scmi_imx_lmm_proto_ops, + .supported_version =3D SCMI_PROTOCOL_SUPPORTED_VERSION, + .vendor_id =3D SCMI_IMX_VENDOR, + .sub_vendor_id =3D SCMI_IMX_SUBVENDOR, +}; +module_scmi_protocol(scmi_imx_lmm); + +MODULE_ALIAS("scmi-protocol-" __stringify(SCMI_PROTOCOL_IMX_LMM) "-" SCMI_= IMX_VENDOR); +MODULE_DESCRIPTION("i.MX SCMI LMM driver"); +MODULE_LICENSE("GPL"); diff --git a/include/linux/scmi_imx_protocol.h b/include/linux/scmi_imx_pro= tocol.h index 53b356a26414279f4aaaa8287c32209ed1ad57b4..2a96fc29cb6f4dd1e4c29e0aaaa= 614ae9783da4a 100644 --- a/include/linux/scmi_imx_protocol.h +++ b/include/linux/scmi_imx_protocol.h @@ -11,8 +11,10 @@ #include #include #include +#include #include =20 +#define SCMI_PROTOCOL_IMX_LMM 0x80 #define SCMI_PROTOCOL_IMX_BBM 0x81 #define SCMI_PROTOCOL_IMX_MISC 0x84 =20 @@ -57,4 +59,34 @@ struct scmi_imx_misc_proto_ops { int (*misc_ctrl_req_notify)(const struct scmi_protocol_handle *ph, u32 ctrl_id, u32 evt_id, u32 flags); }; + +/* See LMM_ATTRIBUTES in imx95.rst */ +#define LMM_ID_DISCOVER 0xFFFFFFFFU +#define LMM_MAX_NAME 16 + +enum scmi_imx_lmm_state { + LMM_STATE_LM_OFF, + LMM_STATE_LM_ON, + LMM_STATE_LM_SUSPEND, + LMM_STATE_LM_POWERED, +}; + +struct scmi_imx_lmm_info { + u32 lmid; + enum scmi_imx_lmm_state state; + u32 errstatus; + u8 name[LMM_MAX_NAME]; +}; + +struct scmi_imx_lmm_proto_ops { + int (*lmm_power_boot)(const struct scmi_protocol_handle *ph, u32 lmid, + bool boot); + int (*lmm_info)(const struct scmi_protocol_handle *ph, u32 lmid, + struct scmi_imx_lmm_info *info); + int (*lmm_reset_vector_set)(const struct scmi_protocol_handle *ph, + u32 lmid, u32 cpuid, u32 flags, u64 vector); + int (*lmm_shutdown)(const struct scmi_protocol_handle *ph, u32 lmid, + u32 flags); +}; + #endif --=20 2.37.1 From nobody Fri Dec 19 04:26:45 2025 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2083.outbound.protection.outlook.com [40.107.20.83]) (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 D6025265637; Tue, 8 Apr 2025 08:47:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.20.83 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102055; cv=fail; b=WmtMDZlpj+ml9HeOqOHvZZl4UNbGiQyGP+k1Ra4pFpFUig3xCfjlbpsJVwfsR24Z5s0bx09S9hpv4gQVVXqvqhTsghVPMiHe4zU/sfULBkGCVC7o2g83624MJnNndck11J5qcjBrl00dTGDq7GYf/vKo340eMwOMfSiN4xr25aM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102055; c=relaxed/simple; bh=6+6ZBTN4qmCvwd8Wc/oKQmV2SOEwC3R5KZFua5O3O2U=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=sFQWJH7RK8DQAZpAXnOFjbUAg56JZsJzg4DzIIJKTsR/T365NELJlQlvMaPCZiM08/xJpz2q72G//gpyrbAijoyioPb+dvZIPD2aU8N6fH4HrLyHFF7d4Orej9MMTeik1HtiamKvYWsPUq3oZC+OGGsEAzb1GWZEdJbp/dTafUI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=UMMmmKR0; arc=fail smtp.client-ip=40.107.20.83 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="UMMmmKR0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ldzLOaMgoezUULInQFrxiKXyHJQrOq9DM3MzPG2AsO0bdgoA9R9wC0WOKw8xIlXMl27ppHrTy4y1xDEdiimpWBlM+0MFQHAw3dPULOIoeXTjvNjbn12nBP5E9lYNJLFtdhwTt2L2P2WPiXbffAv9PD9PUBHykFQ86alkW5NGJ7RmBLGitdWsysQvpbeYtjlxFFGun2F9rFj+CqE1mcnXnyqHXLMgJBz3zGBNu1jfzUlBNhL9JZZKyBnii1QiXxolSSVufHvnIYMl6ymPTnaBSJZg2P0qyEg3rrJDsb/CLS0tq7doTxpGvQx6Ow96Z9hCWNlY7g2JH8J2arRoZOJ2hg== 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=H0URnfs1xyb+W4SHbq+XsmGBAVc4y4jZhI2YCpnW1Ps=; b=DlBVYlKeeQYtbH//ggNuqwQrnBZo9FFGEi/Jb1YzJHgVu5UM1JTRfRlFWD0cYtebzC0Mnbec9EY8rlRQ/fu1jfH4uganP19/u7F3w7XQb7LV17y/mPOSOA27KdUacnsIr90dzWjPgaZa87cEFDrM7Ewa+GAIgKjZwbA4T2oilPS8X2BJqpjsAHBtDhikI27/ni5rGSKE4NxGp3Y0woi0axW92NTdWUCmOjHOaSV+EmZxnB2b1OP5XfVx2nMJoU/9GR6w3ikoQnSk8i7uLs+XTpPTJTJNnAW6AInFLMxwfyIg0e/6hh3joSC0HRSq30KFqxBjqrm2z0lMOwPjTl/jRA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H0URnfs1xyb+W4SHbq+XsmGBAVc4y4jZhI2YCpnW1Ps=; b=UMMmmKR0oDn2k1qufJHfPOxjdPnqrUHbXogwPDMYRSi1UzujKnv/VZrmWwL5aXueHVO65LjgVkPmV6qF5DFKCDQArV/CtjIsJFtKCXzKbwI7HVlmlTTU+6YybnM4Ff0ZIVlUhWMPKqJlwIRWm1LzCm3IhKCFF8dQ/RjBlNZr/pYGtQ2wShblVVVcy4nz+xuO6ThRu+3fM/vpIW2/AFSpPHKoho3IQziHUVlc9+gWd2JOdDgWqEoeFC3pdhflpCPNZeRAGDPhyB3LmLTnNB6af7QmabwcJt12Rc+zlzK8I01U3VE85+5jnpy/4AW5ctLVCAJYxUSIpjJk1KKpOfX2bw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by DUZPR04MB10063.eurprd04.prod.outlook.com (2603:10a6:10:4af::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Tue, 8 Apr 2025 08:47:28 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 08:47:28 +0000 From: "Peng Fan (OSS)" Date: Tue, 08 Apr 2025 16:44:28 +0800 Subject: [PATCH v4 4/7] firmware: arm_scmi: imx: Add i.MX95 CPU Protocol Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250408-imx-lmm-cpu-v4-4-4c5f4a456e49@nxp.com> References: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> In-Reply-To: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> To: Sudeep Holla , Cristian Marussi , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Dan Carpenter , linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744101964; l=10156; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=TG6cyB/8wHRcrxt99BRqhHciWmEXUxMEAzTx8rHy51Q=; b=usYNb7i2TaMJWcUmkCRfZZMrVMId34pDlBf1t04ubBvudQF7hOy8cOOBG5ldUzlFlH02z4Jec jFP7XuK8ftYC2Yxk9ygL0vI1ftbME3i2Fs3N7Cpftn/ARl70EQ4jFTE X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: MA0PR01CA0056.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ac::12) 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-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|DUZPR04MB10063:EE_ X-MS-Office365-Filtering-Correlation-Id: bb1f0411-4ec6-44b5-e398-08dd7679fe4a X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dGNQbytzdXI2RDFCZFQzOUxoNjB4SXhraWIwZjNzOVZGR2pWM3h3NTVocDNM?= =?utf-8?B?OUY4T1FRckxEV1ZTYTZGTVZ6bnozcHBmcDIxV2RrZGM4T3JhOEN4Y2tKdTNU?= =?utf-8?B?OGo1Y1J1TDlDZDFMcUJRVm9VRSswSWNPQzFyK0piUHNBaTlFc2xyVEFtTGtM?= =?utf-8?B?a3lSbWVjVGh4MnZZMTh3UVJ5R2J4STNIK1F6YktFaXFBb2tUSkRKQ2NxMU41?= =?utf-8?B?dU9IQWxzSTh1djRnM0RYUU5LcTkzcjgvOGpBMlh0dmJuSmlEcWpGK1BGSTJ0?= =?utf-8?B?UDRZS1RDSGhzTkhkeC9WeTVGcm82cFhuR21oNFhhbmxLK0FoMTlhSW9KWDA5?= =?utf-8?B?MUR4WWJwRVVtSEplYzNlRjZUbGgxU2k5R0c4dE9NcmNpbUdEU1paTG94ajJ6?= =?utf-8?B?eWIyR3Z1enlUeWc1SXpjQTJzb3E2RXQ5WmZzOHNScHUrZ1BWSDc2aU5hQWdW?= =?utf-8?B?Wk1LbjJ0ZVdpajdmS3BLOUpPZlFtaEgrMk1EbWhuRE9UU242OVVPb2VJWUhh?= =?utf-8?B?Rkt2OW9Ta2pTTEVjakVWT1VRTlBRQ3VlNHp0aFZ0WEs1eWJJczBjcitKbHEr?= =?utf-8?B?YTllZ09LMlVhemlTT3dKNS92TmVEMXBLcGk4dHgzY000OVcwenhqODdzMkVC?= =?utf-8?B?ajZYMGFnWmE0c1B2dTc1cEQwU2EwbWJCd3pubjR5VHVIalBaQVd3eEtKS0VX?= =?utf-8?B?TU9aSm41L2RUT1hPblVTb0MveGw0R0NsR0dWT3IwSjNCc2xLMkl4dm91Y1VB?= =?utf-8?B?aitZSWJKZ3hXY1RZRWh2YzMwYWVIRmV3TmVOZjBwWW13UGJqNW9aRlJCNDBu?= =?utf-8?B?TnJwREVwUnR5SnVuM2UwclJ1bjd6MEdzUnhESEdXdjMrOWFiRTFlL0Frakxq?= =?utf-8?B?V1FVamZ5a01DdGcvaVQ2RWk3VDFWalRkM1FvSk12bmZvUEpWTDdIM0pFeE04?= =?utf-8?B?RHF6S2FIL3VHRGtaR3RBTUJ3dzBwTTdzRzBCQi9tY2FDQzlnY2tmM3Q4OVQ3?= =?utf-8?B?VmhSK3pJS1FRTStSai9BU0QxQ2hYSTVmUXZyWS9UUHpaUm5PejAzQjExVTgr?= =?utf-8?B?b1pNd3lDaDBraDhlbEFpRlpQazVHcmZKYzdFcXZWSnRIMFV5UThkenVBVUV5?= =?utf-8?B?YVZ2RjV6NEsxRG1Va1NNd3ZhdjlZS0p5TDFHNWwxSm1mN3Z4UVJFMEJsVWdj?= =?utf-8?B?VkhwQk1jdjEyZFFic2V0bXllTWdpK204LzZ2QnMxbDFOQytlR3RXck5xWHdt?= =?utf-8?B?NWwxZUpzdFBTMVZMb0NNNjNMaTRiQjljeklHZGV3b2pLakFwbXo4UUtsd3Vl?= =?utf-8?B?RjRpSmhtbDlrQm1VblR6ZTFlMVRVTm50b01DdzI4Uk5JZE9ORnZ0clgzUkww?= =?utf-8?B?aXVmUUVJdGFRU0pSYXgxRXYybWUzZEkrL3ZmZFQrOU16UjJtamFJWmY3alJp?= =?utf-8?B?SUo2UXV6cEd3Y0lac1lBclJTSno4Q3pwVmJWV3FoTVo0SXVmZjRuck9HWDZM?= =?utf-8?B?amhDWkhYL3k4NWxtOWxKWHpHTThmK0xWRXU5cjZidWZzUExpZG54TU1NN2ND?= =?utf-8?B?R3ZJUm5waGVrNmRmRFlmSnhZekI4eGluVXh5ZExFa2NDVzJZYzJlNHg0cW94?= =?utf-8?B?b0F1bkU5WnBkUGs1Skh2RzhnYUNwVGwwaUhTVGxoV2VFY0kxcTFGZWxZb1k5?= =?utf-8?B?M1kxdU5YaXpYWmFFd2ZEMUEzRHR2MUVIUEtsQU16RWVYaGsyNW9qU2VydTVZ?= =?utf-8?B?WTBTdFdVMXpmNE5iSVBQcWpMaGczUFVDMWdWU3J3dzlsR24zdHpFOWljNk1U?= =?utf-8?B?dWkxY2NNaS94VkhEblZiRW1TZStqcGZWZUpLY2g3YXpYdlZIbDRrNnlVank4?= =?utf-8?B?RkhLdFRQRDRLc01FbkdjNkc1NCt0SUpWMU83UUtYdWRtT2t3bzhINlV0SDZC?= =?utf-8?Q?QZhyXpZoeWpbRdj4KRO8OE96UvU5QKcY?= 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)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UFNESTdGZXRFQURxQ3lCQkczUW9LR0hkb29mY1VwUDR4ZTh5RG9GcXpkR0Vj?= =?utf-8?B?UlFSTC9FNlhwd3A2dlZrK0s2Qkp2SlJDdW5vR3FtT2RueUM3bUIvS3g3Wkpm?= =?utf-8?B?aGl5VjZaaThHSTdueW5rTWFyOTM2T01nM0x3dHpBbnJYR3ZOa04wY3JaM0pS?= =?utf-8?B?cTg2R3J1cHVrZU1vYk1lamxhSTFiU0hXWWlMbnFQb1BRSWpFcjY5cmtPcndG?= =?utf-8?B?SEhSOVljWkFoNXJwR3cvbUVHZms3QUhnRkRGWW1nSmVwLzAzdW85WjNLL010?= =?utf-8?B?V3JveU4xMDBLY3QvYm1JdkR6emhqalZ5ZnJHLzVsYkJXQ3VURWYzYkJ4ZUFz?= =?utf-8?B?NE1BK3pBOUtWZzA4a3NjdnphOFVCZmF0ZTlCMDExTmJxKzZ6ZmtpOTJ3K1VR?= =?utf-8?B?eGkyQ2l1L3kxVjdha3U4Rk1OcVJWV1Rpa3NuZHhkTEhYbUltUFZEdzJpdk81?= =?utf-8?B?WHhwM3pMdldaQmJLOGhlSlo3eXNObW5LeHNYNnNGcDRnb09TMWh1anZUZXgv?= =?utf-8?B?THVpZStwZXJJdk1RaC9ycHFycmVNak1QTkVsKzRLLzFheHNFZ2xCNFFTQ3A5?= =?utf-8?B?blIwbWpYZS9pVkZtN2hhcTBhOTR5dVNjYmg5WW5QVjhOVkRqbDdzbm82TUJQ?= =?utf-8?B?b2l0VlUzb1hFbWV5ZzRpaEhiaDEvQ21DYjFrM1Bkb0h0cC9scUsrY2grWThy?= =?utf-8?B?aXo5TVRLVSt1WUQ1WVZkUzc4bWVTRW1zbVZCcmZyVEhDWlF0bktqMHNibjdJ?= =?utf-8?B?M3B3RzRCVlhHMHlINWJHUitTbUJ2VUs5ZVNXZGVmM0Qyc3FSVlBpclpQNGlx?= =?utf-8?B?ZlV2MFY0MTV4Ty9qbkxzNEpHZ3U4bm1ZOFJmTC9VVUtrbHV1aThkQjM1bFox?= =?utf-8?B?WmRIc1JMV3hxVGVERk5ObStzOTdIWFBybU90L205akxLNDN5dTJFMXY5ZEFX?= =?utf-8?B?anJsNUtiY2gxMGhoTld5U0ppaGM5TXhPTitESzZLR2hqUGhZY2Y0aTcrZnpQ?= =?utf-8?B?R1Z0RDlKU2dOOVgyTVJYSHBHU3poTlVBSXVXRGsrL2JxQngwUHJyMFZoYVdi?= =?utf-8?B?TDVZa3ZLUUR3RXVuM3ZIV1YxTDBGKzFvR0F6VUhVbEdlWFZsSnZxdkV2NlBU?= =?utf-8?B?ampmZGs3VkVoeWFVckpueXg2NEcwNEtZNHhSaWkzL3QzRU5wTzdKOTNqRDhs?= =?utf-8?B?UjJKUjRtbG13c0xNMHNiR0JDVzRtQ0hPRkxnV29NRXA2aFJBZmtmRjRqYTNQ?= =?utf-8?B?TU5wSUZJclJmN24xTnZZMCs5a0lHWFdxaWdZQ05hK3pVbmRkNkRia1RKQ0oy?= =?utf-8?B?Z1htTVI2NURxVERMWWtJMHlrcmR5alZmSVU1VGI3WjRmd3pYeGRSN0lqRlpO?= =?utf-8?B?K2dibXNRanVjNHdmZWJVYUJKOFI4MHJ4cnpMQ1ZsV1FuSUxCYk9icjRNYnYr?= =?utf-8?B?cW9KK0htMlRIRzFFTS9TY1dEM3dyRG5VSVZGSzAzOThqZHJoa3g3L3R2dmhE?= =?utf-8?B?akxnUmRMQ3F6eTRwTHErcWpjNDRqcC8rWGR1TERWZ2dHSFkwZ2NZOGNUMUI1?= =?utf-8?B?TUJYZHNkUnYxcmlRS1UxRlVWTlgzdWVBd2lHYXVMemFxa25SRk13NmFVL2Zo?= =?utf-8?B?cXhJQVRXY2xwVjcrSllYc2s1QlZnbE1wdy9wemtDZ0VpckJLZkhZRXZ1c1ZB?= =?utf-8?B?WXVrSlo3SW5xN1oxUkhxemdrMXFOdU1HUHJTVTZtTy9PMDg2Zk5NdkZYZlFz?= =?utf-8?B?OFlUaVdsUHRQb1RMa2VVaFdJNkZVcEVQenMwcGZNbzJqalhyNlI2MUxnUTd6?= =?utf-8?B?L1pzbTJtNWJ1NW1xWnBzblA3TW1WZW13MDYzQWZtYmtjN2ZvcHllTFJvbzZ0?= =?utf-8?B?QVpETTEvaWkwN2E4dVdWcmVER1V6RGc5OE01NjFibVNWVWJ0U0tUMFNGcWds?= =?utf-8?B?YWREVi9FeFlUK1I4MlAwRFovWXJidlBsSmh3MWhPZVFzOVV1eTBDUFY2MHlm?= =?utf-8?B?am42bXUybExIRmh4NFE2Y2ttUDk3L2JXYmt3L0lFUnlhdUU3N05wK3Ezcmsz?= =?utf-8?B?L2ZXNENoOTM0dzFMbXZCVUpYb245Z2tOaXFrTTNPdlB5YWt6UjZsOWx2Yysy?= =?utf-8?Q?udWxIffLx2jvd/Gfo9kuRxI3q?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb1f0411-4ec6-44b5-e398-08dd7679fe4a X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 08:47:28.6957 (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: lugX17fnsluMSvIFhfjJXxGKUtRv+qW+vMg7+WPFFB4y4P2VlPJgAABbAo6ZONArzb7vhPIIu5Ggh3OlGETfjw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR04MB10063 From: Peng Fan This protocol allows an agent to start, stop a CPU or set reset vector. It is used to manage auxiliary CPUs in an LM (e.g. additional cores in an AP cluster). Signed-off-by: Peng Fan --- drivers/firmware/arm_scmi/vendors/imx/Kconfig | 11 + drivers/firmware/arm_scmi/vendors/imx/Makefile | 1 + drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c | 276 +++++++++++++++++= ++++ include/linux/scmi_imx_protocol.h | 10 + 4 files changed, 298 insertions(+) diff --git a/drivers/firmware/arm_scmi/vendors/imx/Kconfig b/drivers/firmwa= re/arm_scmi/vendors/imx/Kconfig index 1a936fc87d2350e2a21bccd45dfbeebfa3b90286..b5f13d0e40155e485f4d1696e95= 50645d888ef44 100644 --- a/drivers/firmware/arm_scmi/vendors/imx/Kconfig +++ b/drivers/firmware/arm_scmi/vendors/imx/Kconfig @@ -12,6 +12,17 @@ config IMX_SCMI_BBM_EXT To compile this driver as a module, choose M here: the module will be called imx-sm-bbm. =20 +config IMX_SCMI_CPU_EXT + tristate "i.MX SCMI CPU EXTENSION" + depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF) + default y if ARCH_MXC + help + This enables i.MX System CPU Protocol to manage cpu + start, stop and etc. + + To compile this driver as a module, choose M here: the + module will be called imx-sm-cpu. + config IMX_SCMI_LMM_EXT tristate "i.MX SCMI LMM EXTENSION" depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF) diff --git a/drivers/firmware/arm_scmi/vendors/imx/Makefile b/drivers/firmw= are/arm_scmi/vendors/imx/Makefile index f39a99ccaf9af757475e8b112d224669444d7ddc..e3a5ea46345c89da1afae25e556= 98044672b7c28 100644 --- a/drivers/firmware/arm_scmi/vendors/imx/Makefile +++ b/drivers/firmware/arm_scmi/vendors/imx/Makefile @@ -1,4 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-only obj-$(CONFIG_IMX_SCMI_BBM_EXT) +=3D imx-sm-bbm.o +obj-$(CONFIG_IMX_SCMI_CPU_EXT) +=3D imx-sm-cpu.o obj-$(CONFIG_IMX_SCMI_LMM_EXT) +=3D imx-sm-lmm.o obj-$(CONFIG_IMX_SCMI_MISC_EXT) +=3D imx-sm-misc.o diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c b/drivers/f= irmware/arm_scmi/vendors/imx/imx-sm-cpu.c new file mode 100644 index 0000000000000000000000000000000000000000..7fa9a89d825396de00ae666f525= e8d6a2d2aed18 --- /dev/null +++ b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c @@ -0,0 +1,276 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * System control and Management Interface (SCMI) NXP CPU Protocol + * + * Copyright 2025 NXP + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "../../protocols.h" +#include "../../notify.h" + +#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x10000 + +enum scmi_imx_cpu_protocol_cmd { + SCMI_IMX_CPU_ATTRIBUTES =3D 0x3, + SCMI_IMX_CPU_START =3D 0x4, + SCMI_IMX_CPU_STOP =3D 0x5, + SCMI_IMX_CPU_RESET_VECTOR_SET =3D 0x6, + SCMI_IMX_CPU_INFO_GET =3D 0xC, +}; + +struct scmi_imx_cpu_info { + u32 nr_cpu; +}; + +#define SCMI_IMX_CPU_NR_CPU_MASK GENMASK(15, 0) +struct scmi_msg_imx_cpu_protocol_attributes { + __le32 attributes; +}; + +struct scmi_msg_imx_cpu_attributes_out { + __le32 attributes; +#define CPU_MAX_NAME 16 + u8 name[CPU_MAX_NAME]; +}; + +struct scmi_imx_cpu_reset_vector_set_in { + __le32 cpuid; +#define CPU_VEC_FLAGS_RESUME BIT(31) +#define CPU_VEC_FLAGS_START BIT(30) +#define CPU_VEC_FLAGS_BOOT BIT(29) + __le32 flags; + __le32 resetvectorlow; + __le32 resetvectorhigh; +}; + +struct scmi_imx_cpu_info_get_out { +#define CPU_RUN_MODE_START 0 +#define CPU_RUN_MODE_HOLD 1 +#define CPU_RUN_MODE_STOP 2 +#define CPU_RUN_MODE_SLEEP 3 + __le32 runmode; + __le32 sleepmode; + __le32 resetvectorlow; + __le32 resetvectorhigh; +}; + +static int scmi_imx_cpu_validate_cpuid(const struct scmi_protocol_handle *= ph, + u32 cpuid) +{ + struct scmi_imx_cpu_info *info =3D ph->get_priv(ph); + + if (cpuid >=3D info->nr_cpu) + return -EINVAL; + + return 0; +} + +static int scmi_imx_cpu_start(const struct scmi_protocol_handle *ph, + u32 cpuid, bool start) +{ + struct scmi_xfer *t; + u8 msg_id; + int ret; + + ret =3D scmi_imx_cpu_validate_cpuid(ph, cpuid); + if (ret) + return ret; + + if (start) + msg_id =3D SCMI_IMX_CPU_START; + else + msg_id =3D SCMI_IMX_CPU_STOP; + + ret =3D ph->xops->xfer_get_init(ph, msg_id, sizeof(u32), 0, &t); + if (ret) + return ret; + + put_unaligned_le32(cpuid, t->tx.buf); + ret =3D ph->xops->do_xfer(ph, t); + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int scmi_imx_cpu_reset_vector_set(const struct scmi_protocol_handle= *ph, + u32 cpuid, u64 vector, bool start, + bool boot, bool resume) +{ + struct scmi_imx_cpu_reset_vector_set_in *in; + struct scmi_xfer *t; + int ret; + + ret =3D scmi_imx_cpu_validate_cpuid(ph, cpuid); + if (ret) + return ret; + + ret =3D ph->xops->xfer_get_init(ph, SCMI_IMX_CPU_RESET_VECTOR_SET, sizeof= (*in), + 0, &t); + if (ret) + return ret; + + in =3D t->tx.buf; + in->cpuid =3D cpu_to_le32(cpuid); + in->flags =3D cpu_to_le32(0); + if (start) + in->flags |=3D le32_encode_bits(1, CPU_VEC_FLAGS_START); + if (boot) + in->flags |=3D le32_encode_bits(1, CPU_VEC_FLAGS_BOOT); + if (resume) + in->flags |=3D le32_encode_bits(1, CPU_VEC_FLAGS_RESUME); + in->resetvectorlow =3D cpu_to_le32(lower_32_bits(vector)); + in->resetvectorhigh =3D cpu_to_le32(upper_32_bits(vector)); + ret =3D ph->xops->do_xfer(ph, t); + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int scmi_imx_cpu_started(const struct scmi_protocol_handle *ph, u32= cpuid, + bool *started) +{ + struct scmi_imx_cpu_info_get_out *out; + struct scmi_xfer *t; + u32 mode; + int ret; + + if (!started) + return -EINVAL; + + *started =3D false; + ret =3D scmi_imx_cpu_validate_cpuid(ph, cpuid); + if (ret) + return ret; + + ret =3D ph->xops->xfer_get_init(ph, SCMI_IMX_CPU_INFO_GET, sizeof(u32), + 0, &t); + if (ret) + return ret; + + put_unaligned_le32(cpuid, t->tx.buf); + ret =3D ph->xops->do_xfer(ph, t); + if (!ret) { + out =3D t->rx.buf; + mode =3D le32_to_cpu(out->runmode); + if ((mode =3D=3D CPU_RUN_MODE_START) || (mode =3D=3D CPU_RUN_MODE_SLEEP)) + *started =3D true; + } + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static const struct scmi_imx_cpu_proto_ops scmi_imx_cpu_proto_ops =3D { + .cpu_reset_vector_set =3D scmi_imx_cpu_reset_vector_set, + .cpu_start =3D scmi_imx_cpu_start, + .cpu_started =3D scmi_imx_cpu_started, +}; + +static int scmi_imx_cpu_protocol_attributes_get(const struct scmi_protocol= _handle *ph, + struct scmi_imx_cpu_info *info) +{ + struct scmi_msg_imx_cpu_protocol_attributes *attr; + struct scmi_xfer *t; + int ret; + + ret =3D ph->xops->xfer_get_init(ph, PROTOCOL_ATTRIBUTES, 0, + sizeof(*attr), &t); + if (ret) + return ret; + + attr =3D t->rx.buf; + + ret =3D ph->xops->do_xfer(ph, t); + if (!ret) { + info->nr_cpu =3D le32_get_bits(attr->attributes, SCMI_IMX_CPU_NR_CPU_MAS= K); + dev_info(ph->dev, "i.MX SM CPU: %d cpus\n", + info->nr_cpu); + } + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int scmi_imx_cpu_attributes_get(const struct scmi_protocol_handle *= ph, + u32 cpuid) +{ + struct scmi_msg_imx_cpu_attributes_out *out; + char name[SCMI_SHORT_NAME_MAX_SIZE] =3D {'\0'}; + struct scmi_xfer *t; + int ret; + + ret =3D ph->xops->xfer_get_init(ph, SCMI_IMX_CPU_ATTRIBUTES, sizeof(u32),= 0, &t); + if (ret) + return ret; + + put_unaligned_le32(cpuid, t->tx.buf); + ret =3D ph->xops->do_xfer(ph, t); + if (!ret) { + out =3D t->rx.buf; + strscpy(name, out->name, SCMI_SHORT_NAME_MAX_SIZE); + dev_info(ph->dev, "i.MX CPU: name: %s\n", name); + } else { + dev_err(ph->dev, "i.MX cpu: Failed to get info of cpu(%u)\n", cpuid); + } + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int scmi_imx_cpu_protocol_init(const struct scmi_protocol_handle *p= h) +{ + struct scmi_imx_cpu_info *info; + u32 version; + int ret, i; + + ret =3D ph->xops->version_get(ph, &version); + if (ret) + return ret; + + dev_info(ph->dev, "NXP SM CPU Protocol Version %d.%d\n", + PROTOCOL_REV_MAJOR(version), PROTOCOL_REV_MINOR(version)); + + info =3D devm_kzalloc(ph->dev, sizeof(*info), GFP_KERNEL); + if (!info) + return -ENOMEM; + + ret =3D scmi_imx_cpu_protocol_attributes_get(ph, info); + if (ret) + return ret; + + for (i =3D 0; i < info->nr_cpu; i++) { + ret =3D scmi_imx_cpu_attributes_get(ph, i); + if (ret) + return ret; + } + + return ph->set_priv(ph, info, version); +} + +static const struct scmi_protocol scmi_imx_cpu =3D { + .id =3D SCMI_PROTOCOL_IMX_CPU, + .owner =3D THIS_MODULE, + .instance_init =3D &scmi_imx_cpu_protocol_init, + .ops =3D &scmi_imx_cpu_proto_ops, + .supported_version =3D SCMI_PROTOCOL_SUPPORTED_VERSION, + .vendor_id =3D SCMI_IMX_VENDOR, + .sub_vendor_id =3D SCMI_IMX_SUBVENDOR, +}; +module_scmi_protocol(scmi_imx_cpu); + +MODULE_ALIAS("scmi-protocol-" __stringify(SCMI_PROTOCOL_IMX_CPU) "-" SCMI_= IMX_VENDOR); +MODULE_DESCRIPTION("i.MX SCMI CPU driver"); +MODULE_LICENSE("GPL"); diff --git a/include/linux/scmi_imx_protocol.h b/include/linux/scmi_imx_pro= tocol.h index 2a96fc29cb6f4dd1e4c29e0aaaa614ae9783da4a..27bd372cbfb142b6acb0b1cf4b8= 2f061529d0d45 100644 --- a/include/linux/scmi_imx_protocol.h +++ b/include/linux/scmi_imx_protocol.h @@ -16,6 +16,7 @@ =20 #define SCMI_PROTOCOL_IMX_LMM 0x80 #define SCMI_PROTOCOL_IMX_BBM 0x81 +#define SCMI_PROTOCOL_IMX_CPU 0x82 #define SCMI_PROTOCOL_IMX_MISC 0x84 =20 #define SCMI_IMX_VENDOR "NXP" @@ -89,4 +90,13 @@ struct scmi_imx_lmm_proto_ops { u32 flags); }; =20 +struct scmi_imx_cpu_proto_ops { + int (*cpu_reset_vector_set)(const struct scmi_protocol_handle *ph, + u32 cpuid, u64 vector, bool start, + bool boot, bool resume); + int (*cpu_start)(const struct scmi_protocol_handle *ph, u32 cpuid, + bool start); + int (*cpu_started)(const struct scmi_protocol_handle *ph, u32 cpuid, + bool *started); +}; #endif --=20 2.37.1 From nobody Fri Dec 19 04:26:45 2025 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2083.outbound.protection.outlook.com [40.107.20.83]) (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 E2E45265CC4; Tue, 8 Apr 2025 08:47:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.20.83 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102058; cv=fail; b=o9ia5ioY2nRKvtSobzgf3Ks7qgNnvcfE+/ZM8iFldIRquRDeCKusDe3dqLtvIQivUkCU8vJyC1lJhP0VNA2mW+DtLlcL/CqFQxKtOHjr1LJ778SpfULiFNhNcVDXK/56179cnyRFfr6gLV6U2N6GWIogbaQIdEVSTwGa2IDjyYU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102058; c=relaxed/simple; bh=YcXopkX3qiVWy7f+v/U4+OqOkGzfItqtWid7XOc4JLo=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Q1p2wdR3WpuhotO/0FGLCWUFKBmKiPRFpngx2tkj4B2G3Pn/fkcdjCEp88tpTpHHbHSIigFdKQf3RrsNYsTVcW5ZI/tbUeag3naoux++Bo7uX2E25900++aSIzNys2Xpg8WetTv27KYzJ64wFTIPI39/A5q5aDjsJ9/IIMGOSQ0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=hWBQcChF; arc=fail smtp.client-ip=40.107.20.83 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="hWBQcChF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dXse5VumEj9o0nFez01ntKv1x6khF3fUS2MxZW+sC4qgGHmF4vjjYpeqCGKns23vZoRediq+SyDDBO7PAd+CDX2awAaznUCggKahinZbB737apzXwVywXu8CwWgu4PXNvgu1dv1rbU9pMKuaUT8coTwWCEuAsRp67MrNVcI5tgcAbTJQFc384qujOLV/2s5PTAkkaZCJy5bTxVpuxq2wrIZWQQBVpwwahPVby7FAy2Pni+qr58WXk1wDjGhM97/iFFU+/zgBoUJkoxCLBPKVg2I97QAeEK/xMZb997LUhEP4l4i9F2E9A+SDp3LtphuMO9DKSVMacnw4eGMxUZuXFg== 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=jCbS96ZWJsjZvrjwTAM4otcx9/p+SEnFPLgLPLvS614=; b=By6rTk8BQufMbh5bACmXutLpHEDC9uLvGOZ76xg9KVgKchcCZY18b/jLPEHMX/vRNOdAA+vw6XpePV5V21CEg2L2YxEAgkbohKMOlaGzayNvGFULPlB/EtHmPdJfSWj9kGNpnS10Usom+LSuIfGOObZApT9exwEe8+7aephWRbnGzYjmhYg4tpWKR+yOF+W179wBvTsvhewhpqfwqjfaXpRZbMqi5hRCQ8uVZq142djlGwFEYSBefyZ5j6l37oCvSn2z0+fcVfO1mjEgbHdWgfDfHxV5l6t48lximXv02QO3MFtm/l9UWMZZM2ZOZZMKOK38POQ9tLNNK7GPEuVllA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jCbS96ZWJsjZvrjwTAM4otcx9/p+SEnFPLgLPLvS614=; b=hWBQcChFpnL8vhz587hgj4wcKPRENC/TLy0FFwWaO/LbNnb4gORNI3mt/u3M3xwvuqdv/PASeYVHcCNUkp/NgmDSbnaaPBvTPsSvrbFAWN6lX2iILw8mFFja2tF19hwtZvHTRyspYWenrI8/MNVXiIVjfSQGAPJltIdU2n+yQe3k9enZXpKl1xj2QiRXUE6p3sndfttkMuR4G2zhqTZoSJmubklWLW4MjTU10ErDodeMjUH3bgM56L/R79yrQJoeLTjuVXBKMInBHmUm9ALKXgATzmQRlFy+qiYJGW3bCMifVf0XhZHbjgnBlZGmO/AYRaeld14icjUIkrColt4jXw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by DUZPR04MB10063.eurprd04.prod.outlook.com (2603:10a6:10:4af::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Tue, 8 Apr 2025 08:47:33 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 08:47:33 +0000 From: "Peng Fan (OSS)" Date: Tue, 08 Apr 2025 16:44:29 +0800 Subject: [PATCH v4 5/7] firmware: imx: Add i.MX95 SCMI LMM driver Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250408-imx-lmm-cpu-v4-5-4c5f4a456e49@nxp.com> References: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> In-Reply-To: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> To: Sudeep Holla , Cristian Marussi , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Dan Carpenter , linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744101964; l=6279; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=rd3I+t2nFc7Iz0+EcatlHc+yizA13sGbbHgtoWjJqf4=; b=YptcjQsD+M5dODJpAYgJ4vChb+NChKWdx1kxD9PPVxlhSLybc9iu6SwJQ76TPaWOOYM4XJ2b2 x+eR1ZXlwcnAkI1NKIpY+k8VJcNmJEdiqUlhg4o77uv3zrt2Eyq1MCI X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: MA0PR01CA0056.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ac::12) 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-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|DUZPR04MB10063:EE_ X-MS-Office365-Filtering-Correlation-Id: 08f6f329-c706-460b-da9a-08dd767a0124 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SHpOWTVrYUlLbWpZVklIbkFYLytLMEc4NDV3RGhSaTVSY2FwRXoxeFdkQ1Zh?= =?utf-8?B?ODVzTEk4b2tOOGZlYVJKU3l0Vmk1NjFYSlV2eHNRZjhMdHBNYm1YWVBIK2k3?= =?utf-8?B?Q1FVL3B5RmlaM1RSaVRnUHNtUlRLVlZETHlLaXd2UmQvSG52SU1SeHBNMGwx?= =?utf-8?B?WWwrRDg2TTE0ZmNscmMwcVRBME51R3kzK2xOK0VvZ3lDYnpjV0pvY1ZGRGRt?= =?utf-8?B?RU14YkxjU29SYnhBSWFKT1VMcHNYUjd2VXVTWFZNclQzMjFLamtSWFdpU3Uz?= =?utf-8?B?L2lzbG9lMHpHaGV4V3lScXZOdys0eDk5UDhwRlZCRlI5MytySG04OTcxS0J3?= =?utf-8?B?NlR6bXZkdkhYTVVqTUZzbTduUkxnb3IyZitIdXZQZzU3REswYzVCQVlJaXhk?= =?utf-8?B?RHJaOWdnYjlDcGtaUkYweG1iVXlDSnl0SjJCMTFWM2w4V2dWSTgveHFjais0?= =?utf-8?B?RTBHSVdIelhKVkFtaUppZjJMMVdTdTc0L1NxYkhwZzVzTEw5ay9WQzFuQXFM?= =?utf-8?B?b2NPWU0xUHBMYk15dWZpMkEyYVFXOFdNeWFKTXdyYVI3LytrUTAydFM0NGk5?= =?utf-8?B?ZlN1Y2hIc29XdUNKRUJIQjhwQU9LWWc0NVZJMDF0ZVZEZEwrM3hSeFd1WVFC?= =?utf-8?B?d0ZXZTdkbGc0SWE4WDhvZC9QVGJjajJRbDIxZ0RacXNGY205Ly8wU25TaEhN?= =?utf-8?B?V3RPUW1OZjJHM2Zib0lpVllqT2NZOTZ3Z1duU3ZCQThQZHV4SHh6L3B3Ym9v?= =?utf-8?B?bTB6NXp4VnFoVjk1bjFIdzBrRGpQUjFrb0RjUDJBaTBUR3RXT3puZEd1UUtH?= =?utf-8?B?WlZRWVlneUhScWV1WW1IbmxlT2llMyt0eVBsaThiM04veGY1eDY1Z2I4Y1hk?= =?utf-8?B?TVFoRTQxNEpEYTNKcEJMRUhHL1IxOUFPZ01pQXN4dFJ1emhoZ08vYytoQzMx?= =?utf-8?B?elRjNzdzRkZNRERVNjhFVHFpMURwcHBSR3ROYjRLam42UWRUUjVxUW1hWWE2?= =?utf-8?B?ODlreCtZY1U3cVlhaWVROVl5WUxSZmdKVk1vNlNja1FaZ2Z1YitGbDdEdm5w?= =?utf-8?B?VkFNaWZqN3hRbEx0K2VZbkMzTEpkRkhCM0hEeHRCMlIwZlhheXVGSWdENlBN?= =?utf-8?B?ZGtDUVcweEpkUkx6SjlyWHBwQXhSL0xVOGhSbmx0emNRemhQSkdCaGVKVHRp?= =?utf-8?B?d05keEZsNWhNVTlDcmpkWmpsWUZOcmNWdVNHYm91RWhaRk9ZaktQTkt3Wmgv?= =?utf-8?B?bFNTTEZjV25OOC9tRUNkOGxRT0lLNG9BMXNHbVh5NjNhR2g2aUlFMVI0OHZ3?= =?utf-8?B?VnVrMExWVlpTOTBBVmswLzZSUmd3dkVaRFA2YWFpN3Zob1VwWXZpdFgvc3o2?= =?utf-8?B?ckJoVFNzS09mKy9WZGxqMWxXWmN2bXhUMGM5M1Q0T1Z5Qmp0QjREd2srL2kv?= =?utf-8?B?UGxlcnA1VVNZSGxEOXMwcWkrdDBONEdBa0NFUnA0LytHQ2lmNnNCNzZ2WTl6?= =?utf-8?B?SGxoMTB0U2o5OVFYRVczWWJZM2h2YUxmZUhoZ3kraFJ2WldmYU5pWnNmQUhZ?= =?utf-8?B?bi9LYWMvbXZ0K3o2RDRkQi9OWUEwNXc2b1dpSnJ6ekRlSUF4QmhmMmYrUzE0?= =?utf-8?B?Mjl5dmJVT0RlU0tmeEFhVitia1VzK0JSUm42Tm1jWC90Q2NqOWRWdjV2UVRJ?= =?utf-8?B?WU9PZ3ZHcDRJeTNPSDYwRVBkZ0RiQ3VsVm9FUkc5NnpUMkpFZGs4dlIvbnRX?= =?utf-8?B?dkNCMWZmRjB3NVZtUVl4MDExeHYwc09wSGpVaWhDRysrWTVWN210c2prOXBC?= =?utf-8?B?SGE4aFdDVkFORlhSSmxoQjVQM3RnUDcrU3FZUjUvbFk3cmxHdjFNSkE2NDU3?= =?utf-8?B?MTlWZkxWNmxiSWljOFRSRStoWjcwc1ZjS3BMSWwvRmhWcTBFWlluWTZQM3ZE?= =?utf-8?Q?h/IbtJqAyyzBnPI+y1nHZgtIBQH8ieQg?= 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)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R3hRdTJFVE5vVm9rWG5zcnZYNVl5S0dLWFpJMklaVVhDNDlFV2IzSnFFb1JV?= =?utf-8?B?U3FjeWRLVVpvWjBCQUE0dWxRcjJjTloyWDVOeGlUN1VmeGJmaVlROHJrdU4v?= =?utf-8?B?QlgzNm5BL3g0eWV3VWxrWTQ0Z29hMFBueFBqMHN3ZFRDMU5TVnZJeW15WnFT?= =?utf-8?B?VzZxMm9BMmV6TzJrZUhwaHlLRlhpSmhFU3A0VWwyUUgwWFlUeVc4RTZWVWpr?= =?utf-8?B?Q2tPQmd3d3BBUktQaFBNMVNTOHNkZUxYK0hMc0FscGpzOXF0eUVhZ1htVG41?= =?utf-8?B?SDVCZTRYbGhET1NhcnZvYm1PUnRIS0FpSURKZDQ1MnpUbWQxSlYxQXRUZURJ?= =?utf-8?B?TlpMdTZ3bVpDZnk4OGd4SDE3UE5ONDVYRVNUNTNhRjN5ZThReThacnhCanRD?= =?utf-8?B?ajFuNmNhd3VKNnhuMFRDa0VGenJ0dGFFQzFBWWxQSUlFbzUwSGp0V1JjeFhp?= =?utf-8?B?SHVBTWdHRElvWkgvc05WYWFXQnVocjkwUFdBdU1ISS9vZlNuaFpubTAwcDBM?= =?utf-8?B?VzRMRjhwSE0waXhYTGhCelQ4NjRxaS9URDgrbG5hSzd3Ykg5Tkhobk9lQzhj?= =?utf-8?B?VHNhV2FWMFN6Z1FZNXUyek5JTi8remR3RFdTSTl4MCs0ajdtYVhwOFZhUWF2?= =?utf-8?B?N2I3RitOM3htWllRclAzdkdPMkhQTUlwKzVwV2VUMnNsdTlRNWlEL1JYR3Jn?= =?utf-8?B?VXIrbEhuL0RtNk9rMHVoRE8rQ1NBRFc4ekNXTEo2MzZ3WlY0bm5xYy9xekNz?= =?utf-8?B?dzdMZUhQTFl1UUN0emFpYk1TYUF3TmRHZE1YWCsxVzNMZjhGZ1haWjBjVHJ5?= =?utf-8?B?TXZ5cTdMNVV4WGJUMVh4VlhBMnBIYUZRTzlnb1kxdHR1Sk9IcGVkemIvemxU?= =?utf-8?B?V2Y4NGVwMiszNUIzVnVTRGptS0Q4SXpaZ2FhT0tCRjFBZjNTOHU5YTE2OFBB?= =?utf-8?B?M0tRT1kvS29rSzlEM0RWTnpQekh5VjZsTXc4TkdJaEltK1N6VVJRZmFzNDFy?= =?utf-8?B?VTFGVzRnSUk4Wnhoc2UxMUduVTFmTFZMOENRR1l2bGh5K1NkbmZQaVVaOHVI?= =?utf-8?B?Z21FcFRxaGtCY09haXBSdGU2UWtiOEVwMTlFWS9WOWtPUFU1SEdhNmpmcVhk?= =?utf-8?B?clY0amxWRCtYUjB5U0ErL09uOHRod2ZhTFg2d1p1YTY3RmJDZkhWaFU3SWVh?= =?utf-8?B?eCt6VWs1a1BZc3d5RUI3SkNIVUV6cGV6aVhDWGd5TkFWbmNra0szQ3R5aWZq?= =?utf-8?B?L0JrbVdZajduMkR6VC94VUhHSzBBVEdwRVg1Z3B5aExFTm0vRVlkNyt5R3JI?= =?utf-8?B?N0NxenVKMWxHUmZoL2ZuRzAwS2FQMEVKNTA2R2t5OTRTV1ZaRFBuMW9iUHMy?= =?utf-8?B?WnJqYm9obUNkMkRaeFpWMUhFbGVFRk54UXo0Y1ZqSUFST1VCYTlSTHFqaDU1?= =?utf-8?B?cVNaRWRWTVY0S3FkTGVyNW5uYTNiVHNlckNNWVhJMjZCSUtiRXVTcWFXdVBQ?= =?utf-8?B?OVlVSkVNK1NyUmtJbFRnanpEcmRLa29EeUt5MU5GckFVdkYvZVVrUE9XN21H?= =?utf-8?B?clQ0aVphbjEvUVBJL2ZoVXdsM3c0a2VMVkhjcHJxbzFEK2krQVRvb052VjI1?= =?utf-8?B?ZzRmb1RSYnVINVZCR2p2elhQRWFXRHQ5K0svWlJOMDFyL1RMY24vMW5mT3pa?= =?utf-8?B?K2xxNGNLTWllcUNZRVRVSlNqaHZSS050RERGTEdMamx0bldmYVYra2ZkL2VC?= =?utf-8?B?blB2N0J1em9tU2lGZ3FmWUhkWVlvTjZiTFlwc1poMCtreDg3Y1E0cm53b0tN?= =?utf-8?B?QXFOME1aa1pBcFVIcC9aSGhtci9ucGIxblZ6UklINm5rUFZjYldzaFNvbmhH?= =?utf-8?B?MWxxWHViNU5CemI1d3cxSnpHdi9IeDhRTExXd3dpUHdaWTZHRTIyUGxFaTBW?= =?utf-8?B?QUJnQWlBYUcrOXVKMWlhSGZieUpJZmg3TmU5K1JhaERnQTl0OGt5cG9xYWd4?= =?utf-8?B?OERyYlBFaFY0UXR0SXNHQU8yUFE4MVo5VS9CUGx3Qlc0M055dTM3L3JBRDJy?= =?utf-8?B?eGsybjhJSzBkZUYvUmFrSURCMWh0RXVUaWlUOGpESWxjWWN0dEZITjR3MXgz?= =?utf-8?Q?UsiWCncYAc8pM0c1mpcG0y00O?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 08f6f329-c706-460b-da9a-08dd767a0124 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 08:47:33.4958 (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: OFn16LnYlIbFQlIBMLWPpWnsFx4N1Fa9J0WjYpOLwM1iupkkWBNSwBvhCeU2UcEd5rwcySoeDtnqUT/Q1/T59Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR04MB10063 From: Peng Fan The i.MX95 System manager exports SCMI LMM protocol for linux to manage Logical Machines. The driver is to use the LMM Protocol interface to boot, shutdown a LM. Reviewed-by: Cristian Marussi Signed-off-by: Peng Fan --- drivers/firmware/arm_scmi/vendors/imx/Kconfig | 3 +- drivers/firmware/imx/Kconfig | 11 ++++ drivers/firmware/imx/Makefile | 1 + drivers/firmware/imx/sm-lmm.c | 91 +++++++++++++++++++++++= ++++ include/linux/firmware/imx/sm.h | 14 +++++ 5 files changed, 119 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/arm_scmi/vendors/imx/Kconfig b/drivers/firmwa= re/arm_scmi/vendors/imx/Kconfig index b5f13d0e40155e485f4d1696e9550645d888ef44..4c24e17425f830810f8ba376ece= 9db93c8cded6d 100644 --- a/drivers/firmware/arm_scmi/vendors/imx/Kconfig +++ b/drivers/firmware/arm_scmi/vendors/imx/Kconfig @@ -26,7 +26,8 @@ config IMX_SCMI_CPU_EXT config IMX_SCMI_LMM_EXT tristate "i.MX SCMI LMM EXTENSION" depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF) - default y if ARCH_MXC + depends on IMX_SCMI_LMM_DRV + default y if ARCH_MXC && ARM64 help This enables i.MX System Logical Machine Protocol to manage Logical Machines boot, shutdown and etc. diff --git a/drivers/firmware/imx/Kconfig b/drivers/firmware/imx/Kconfig index c964f4924359fcd375560ee8263021b0fe65db1b..70c092424328067ea6b946cee59= f072661e27e47 100644 --- a/drivers/firmware/imx/Kconfig +++ b/drivers/firmware/imx/Kconfig @@ -23,6 +23,17 @@ config IMX_SCU This driver manages the IPC interface between host CPU and the SCU firmware running on M4. =20 +config IMX_SCMI_LMM_DRV + tristate "IMX SCMI LMM Protocol driver" + depends on ARCH_MXC && ARM64 || COMPILE_TEST + default y if ARCH_MXC && ARM64 + help + The System Controller Management Interface firmware (SCMI FW) is + a low-level system function which runs on a dedicated Cortex-M + core that could provide Logical Machine management features. + + This driver can also be built as a module. + config IMX_SCMI_MISC_DRV tristate "IMX SCMI MISC Protocol driver" depends on ARCH_MXC || COMPILE_TEST diff --git a/drivers/firmware/imx/Makefile b/drivers/firmware/imx/Makefile index 8d046c341be878bb6dd1e6277992ff66ae90e292..7762855d2a771169d4f1867d27e= 0d51be7c9ad03 100644 --- a/drivers/firmware/imx/Makefile +++ b/drivers/firmware/imx/Makefile @@ -2,3 +2,4 @@ obj-$(CONFIG_IMX_DSP) +=3D imx-dsp.o obj-$(CONFIG_IMX_SCU) +=3D imx-scu.o misc.o imx-scu-irq.o rm.o imx-scu-so= c.o obj-${CONFIG_IMX_SCMI_MISC_DRV} +=3D sm-misc.o +obj-${CONFIG_IMX_SCMI_LMM_DRV} +=3D sm-lmm.o diff --git a/drivers/firmware/imx/sm-lmm.c b/drivers/firmware/imx/sm-lmm.c new file mode 100644 index 0000000000000000000000000000000000000000..6807bf563c03d21a68022ecf346= 9c38bee4fc2f5 --- /dev/null +++ b/drivers/firmware/imx/sm-lmm.c @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright 2025 NXP + */ + +#include +#include +#include +#include +#include +#include + +static const struct scmi_imx_lmm_proto_ops *imx_lmm_ops; +static struct scmi_protocol_handle *ph; + +int scmi_imx_lmm_info(u32 lmid, struct scmi_imx_lmm_info *info) +{ + if (!ph) + return -EPROBE_DEFER; + + if (!info) + return -EINVAL; + + return imx_lmm_ops->lmm_info(ph, lmid, info); +}; +EXPORT_SYMBOL(scmi_imx_lmm_info); + +int scmi_imx_lmm_reset_vector_set(u32 lmid, u32 cpuid, u32 flags, u64 vect= or) +{ + if (!ph) + return -EPROBE_DEFER; + + return imx_lmm_ops->lmm_reset_vector_set(ph, lmid, cpuid, flags, vector); +} +EXPORT_SYMBOL(scmi_imx_lmm_reset_vector_set); + +int scmi_imx_lmm_operation(u32 lmid, enum scmi_imx_lmm_op op, u32 flags) +{ + if (!ph) + return -EPROBE_DEFER; + + switch (op) { + case SCMI_IMX_LMM_BOOT: + return imx_lmm_ops->lmm_power_boot(ph, lmid, true); + case SCMI_IMX_LMM_POWER_ON: + return imx_lmm_ops->lmm_power_boot(ph, lmid, false); + case SCMI_IMX_LMM_SHUTDOWN: + return imx_lmm_ops->lmm_shutdown(ph, lmid, flags); + default: + break; + } + + return -EINVAL; +} +EXPORT_SYMBOL(scmi_imx_lmm_operation); + +static int scmi_imx_lmm_probe(struct scmi_device *sdev) +{ + const struct scmi_handle *handle =3D sdev->handle; + + if (!handle) + return -ENODEV; + + if (imx_lmm_ops) { + dev_err(&sdev->dev, "lmm already initialized\n"); + return -EEXIST; + } + + imx_lmm_ops =3D handle->devm_protocol_get(sdev, SCMI_PROTOCOL_IMX_LMM, &p= h); + if (IS_ERR(imx_lmm_ops)) + return PTR_ERR(imx_lmm_ops); + + return 0; +} + +static const struct scmi_device_id scmi_id_table[] =3D { + { SCMI_PROTOCOL_IMX_LMM, "imx-lmm" }, + { }, +}; +MODULE_DEVICE_TABLE(scmi, scmi_id_table); + +static struct scmi_driver scmi_imx_lmm_driver =3D { + .name =3D "scmi-imx-lmm", + .probe =3D scmi_imx_lmm_probe, + .id_table =3D scmi_id_table, +}; +module_scmi_driver(scmi_imx_lmm_driver); + +MODULE_AUTHOR("Peng Fan "); +MODULE_DESCRIPTION("IMX SM LMM driver"); +MODULE_LICENSE("GPL"); diff --git a/include/linux/firmware/imx/sm.h b/include/linux/firmware/imx/s= m.h index 9b85a3f028d1b0a5287b453eb3ad8412a363fe6c..bc27b04afb2f68b048955f51c07= a106f4c7e5852 100644 --- a/include/linux/firmware/imx/sm.h +++ b/include/linux/firmware/imx/sm.h @@ -8,6 +8,7 @@ =20 #include #include +#include #include =20 #define SCMI_IMX_CTRL_PDM_CLK_SEL 0 /* AON PDM clock sel */ @@ -20,4 +21,17 @@ int scmi_imx_misc_ctrl_get(u32 id, u32 *num, u32 *val); int scmi_imx_misc_ctrl_set(u32 id, u32 val); =20 +enum scmi_imx_lmm_op { + SCMI_IMX_LMM_BOOT, + SCMI_IMX_LMM_POWER_ON, + SCMI_IMX_LMM_SHUTDOWN, +}; + +/* For shutdown pperation */ +#define SCMI_IMX_LMM_OP_FORCEFUL 0 +#define SCMI_IMX_LMM_OP_GRACEFUL BIT(0) + +int scmi_imx_lmm_operation(u32 lmid, enum scmi_imx_lmm_op op, u32 flags); +int scmi_imx_lmm_info(u32 lmid, struct scmi_imx_lmm_info *info); +int scmi_imx_lmm_reset_vector_set(u32 lmid, u32 cpuid, u32 flags, u64 vect= or); #endif --=20 2.37.1 From nobody Fri Dec 19 04:26:45 2025 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2048.outbound.protection.outlook.com [40.107.20.48]) (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 58B3C266B53; Tue, 8 Apr 2025 08:47:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.20.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102064; cv=fail; b=ZTPo6EedCtjhIPRD6vtUUFMAMc6qhxXSSMkZoSpLi+2y4V0O8921Yok0CJgzMwgCKCQ3MD8hpFwDyvA+L4UzA5/NQFLAlQEYCwGsmSaxL0gIJfIkul/YoiYbZiE+oK+2jwAfRGg6ob7ClK4KdoNl4ugF7OP+m0pksIiNrMkooC4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102064; c=relaxed/simple; bh=jWzSMbbw/V/IvQlEKNz5imWYW++iVwi3sKNU6k9Sy9k=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=ut9C+0zD1+Lx0IuFvlsL7nOaHcTVhfFXKq7+MSaGUWwKxpMfAPqdZeWnhuOFWWTFRkpAPPXpOlgX/sez05Lya1NQH79rXKYvS2smPZe+x6o9T2Y3CKhR5Dt8Yb+BLLhg83RBqlgJNVTEqn5fZDodt+kHn/+EUl/fe6Hlf6PgU+A= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=DFD9qdFz; arc=fail smtp.client-ip=40.107.20.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="DFD9qdFz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qjwCPhQjvFDOV9PpjSgRJRjkN1eWtPHrH0I67zYbMgreeviwoC16MfOrlmNvLMQKok1bHKRbJmEbeRh22B/trVanIHnl/qS+H9RdOayih+PNzYtFCtMoTUFrbzUJtn13lI10ARnNeD8t874UNFbEma6o7P4VnNf+nrdBxCmQezZ1yNm5ryf++hds0OIOH1MmNUwnv+1ezBT2GrUCacYguJmcMStGaNwS/GOxcidNL/HMDYF8dWy0gI6MetMrcAiyR3DjtEH+NsYFJJIsSksYhE04dzyojqrGiMDoKvlxH8ZueQW1NkpF/BnjlArmbet5m1MJSbd1Kirf/v1y3rOnkg== 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=Ac+LIaNTlRnQqO1fU67vqU8uKOx5t1BpaaxTUT0XLLs=; b=XtjnNBQ7VnWYvdd972sYmHEKLz4B1QcVbYa8dK/MqtX6DYFa9D+A2tb5dLAUv4aZoNtBZDrHemHxOqM2WiaZ+utGMQcEit038DmJUdRmnSOp4+9VK7IXtjqJ5bhLBVdYYKNGmvhBkiku1FanG0YHUKxehu6AeNHqi7kKqtPDbhRsIHQ6GecQzN199XDUos8JT9A3KGgrQNGAqAZaRRocLYMc4nLRNrW2sWIn8xbq5RaFTg6ikci2DrI+cD+/RqonVyHbWL2JGU/IPGN/Cpx+JlEikzYG43I/682rBoqC/ipWu0sbLbK3TDvdcssHINZkk51GAeCQujAMjmBUxZLu1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ac+LIaNTlRnQqO1fU67vqU8uKOx5t1BpaaxTUT0XLLs=; b=DFD9qdFzBFba15l2U9EOm+9yWYEZ0WrlrhQHTI1vuTVprbvLOC9D8jkku/EVtSHyPcwejJANcEwTF8rGjJfgJQ5iwnCb/VY7iNfIHwFhICck9ifvLXnP+PNkO+IkfMhsToq5qasVz6dHYxTWO7sXztEW5lR+SnSPbiUVpopXIdvFTj5v8SqYb318RnlM+kHYZxdn1l5DpKSPhsK1SsWAaD8Egz7ClGiC/iZlW0Qt9ARXSVuLywSrHFojeKOmSuVhmg8yG6zqCGDp1Mm7gR3RXGnMk1q5upe2panR9PjuMmbKRvu6lkMSdIdoLZ2DEEQ+JABjzyhd32OnbCnoCjEQNA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by DUZPR04MB10063.eurprd04.prod.outlook.com (2603:10a6:10:4af::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Tue, 8 Apr 2025 08:47:38 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 08:47:38 +0000 From: "Peng Fan (OSS)" Date: Tue, 08 Apr 2025 16:44:30 +0800 Subject: [PATCH v4 6/7] firmware: imx: Add i.MX95 SCMI CPU driver Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250408-imx-lmm-cpu-v4-6-4c5f4a456e49@nxp.com> References: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> In-Reply-To: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> To: Sudeep Holla , Cristian Marussi , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Dan Carpenter , linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744101964; l=5763; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=RAeXl59ykXx6Jn2tPWjZDrCKA+vTZRM1MrRBDtexg3o=; b=s747Eb+wJbble6RmKedYQ+Pz3gxHO3PesCJaspYxdnoyNW3qX6zj2Ag0KhU2jipI8Z7HgX7Ca CpofjeD/1IWAekQUydAJ2gmC411G+P2NOmiekvlFrc8ws65M29VPKvH X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: MA0PR01CA0056.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ac::12) 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-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|DUZPR04MB10063:EE_ X-MS-Office365-Filtering-Correlation-Id: 67646095-270a-4632-c48b-08dd767a0401 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?U3BPOURjd0FwWGxVY0d0bGxmM1djaEtwRW9PWTBmNWF6NWVvd0VqdnBDdUx0?= =?utf-8?B?U2tJVVc0L3NuYzNpbEtSVUhKSEN3Q2U2dWoyU1FUWXJuakZCMmFJRW9tNlNT?= =?utf-8?B?YXUzRE5Bakc4d1YyMTQyVVk5T2FaRnlvdE9QKy9tOWZOcW81cXRtRmh2aDVu?= =?utf-8?B?b1MzaWFFOXdUU0xzdVh2cWdQTS9uZlVXdmd0eGNWbHhaSUpiT05IajRRc2hO?= =?utf-8?B?WjZTWFBDRHlaTnhQRWNRWWdUZk45ZEZlbjg4UWo4MGs4Q2RRcTlTVmdQSGw5?= =?utf-8?B?a1lQUFNvTlY5RXFubVZJamgycVhKMWVFU2FlTzAyd0dpQzlDMU1aM0V1STRN?= =?utf-8?B?NmphSXkvZFYxQkVQaGg0SjQzMVY5RzFpeHBkcEtLOWQzZndXcjBTcjM0V0Rs?= =?utf-8?B?MkVSNEtNZXFYQVREOUxsUSs2VFhuY1pMeTNDeFl6MlVvSUtaSEFOQjR5WVZC?= =?utf-8?B?Q005T05MQW9mYnlYZGc1TnA4MVltZklzTnFwbVZCcjFIS3J4MXpBVHc3M25x?= =?utf-8?B?eUYyVkJFUG5mZUY0d21lZnV4cUxvREJkY1NPY05vWmkxV3Q0U0VrZkVlREJM?= =?utf-8?B?WVVwNGxQV0F1V3BzRStQOVM3b2tKWjVUbWY4K2krdDNMbC9OeHAvWFJqZHBY?= =?utf-8?B?UzhaTUhrZC9ybUlTUFF3NDZIZmZ6bHhNR290QkRWYS9wNWZGRnhvMHFQc2dq?= =?utf-8?B?cDdTdCtmQm9QTVV3ZkJXRjc3aVJkQVdEaGh1ZFBEdytTNEdzRTN2TXBXVDB0?= =?utf-8?B?dzY4NGxqY25KbnhjNHNpTkJmMnI1VGZObzBSbE5tWmNua3VLUVB2Z1IwemJV?= =?utf-8?B?ZXJuL0xLMURjVDVuSnpPZmhVZFI0d0VzQWtmL3lHTldFbERKZUUxSlg5Z0d0?= =?utf-8?B?Y29seGZnMlZZbmJsbmQ4NVBmUnl3dWNYYzlpTzRPYjloeGFEWE5paFM0VktH?= =?utf-8?B?bFZ5ZllKRjRja3dWUytTTExYME9IeTZneWVoMUxESmZkaUtvcG1XK2xWaEw3?= =?utf-8?B?ODdaUlhwUW5nM3h5ckZWMFRqOGZKVHdXWVo4YWV2YXh5TkxOR2VWT1BWdGRL?= =?utf-8?B?Mk8wcWtwZFB5cEJpaUdvQ25vUWFZMVA0Mnl2N1VNbG1DeTIvdnpiYThUSk5P?= =?utf-8?B?R25ZcnArZ3F4VWpLckdoL0RJVVBJTDZJY2prSFhaNWFHdjM3N1ltWDI4dTNk?= =?utf-8?B?bjlTOWtOU21uem4xRU9IdVhLUmpRWnA1L2JBRjVRWmZrdmNycWpEOEIxd0RU?= =?utf-8?B?TVJqV3lCWStHa3ZTN1l6QUhXVUxsZkNFMTdLZElSWVpWdUtHSlZNcC9PZk5p?= =?utf-8?B?UzUvT2taNHNnd3g0MWErTVRHT3VaMUZoVExxcmRvbnBsY3RQYWN5NlA0eHZs?= =?utf-8?B?bk1LcFBmNmU3R2tMTmJjK2lYS0lYV3EzMjY4aTdVYTB2bW1WUTM4S3h1ZG5j?= =?utf-8?B?V3VUUHBLY3NRaWhKWHlhV1ZXV1h5cVZ5NHBRL20vcUs2amprN2N4VG91UFRW?= =?utf-8?B?YjZvVHhxNG1EaElmUC84UXozSHdmaWFPcjFrTEdIcFpsYytTc0o3Z0tYMnkv?= =?utf-8?B?ZE1Ta0FZMjJwTG12QTNJS1Y2SCs0blhWU2xUbEhNOWcvM21yZXZjdlF6Ullt?= =?utf-8?B?Yk0xNWxxK2JtM0pFNVF2WlhZVkIzMUs4OUQ0aEVPcms5ZzVESDhIVDZTUlJ0?= =?utf-8?B?WjhPS3dqUWhzMzhkZHFydXhQVUVDK0lqcWs5V3VBNFJmbWlsZmord0ppbFFx?= =?utf-8?B?NG1GUmZ2OW9oWHl5NmhLc2FNR2YzVXVZVmlXUFk4YVV2S0NXV2lHZEFOWGJo?= =?utf-8?B?bjJUc3BwMyt3NFk1K3NvMDhJSmNLZzl5NFB5WHB5RGxuQktidHVxR0RUZWtI?= =?utf-8?B?L0RGbW1ia2hEcWNFa2JYVFUvV3NUaVF3K3FGMlVQR2hIdE1OakZ4VitUODE2?= =?utf-8?Q?1LYHzEWmRi3M+kZihXmPfjbOM+IISVFn?= 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)(52116014)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VExBeDRjWk1wL3Nuc09SMzdUU0dFVXRSdmJMQlMwalNkYVlNZ1ROa1YyQVhK?= =?utf-8?B?aThJdkNoN0lmdHdXWkMycHViTEFnb1FuNXA2QnI1UXBOVVpBNGx0WUlXRjR6?= =?utf-8?B?U0ZIdStMbU5RWHE1R2tFdHU3czdlNnNqNTZOUXFjVXpSbVJNd1NHdzEvKzNI?= =?utf-8?B?R2FMZGJCdmNpZHZrSDl1TzU2MUdFTGZOUmt4Uys3T3h4RnlVajVhWHlxRDhj?= =?utf-8?B?ZWRzSjdvUm9lYXYyM3pQcXZsdW55ZUV1aFRNSVV5OW5GZjBkR0FiVmFGMjhy?= =?utf-8?B?ZzZwYzVlYUYzVWsvWThhcHkwMFhJelVERFc1MytZdFhNcjBUQ0FlaTY2MWgz?= =?utf-8?B?azZHc0NnR2huZXo3eTBZNlpaVFFHUEVocHhWSDUyYnVtcUNua3o2VzlRa3Rt?= =?utf-8?B?d3BCeHNqMTVzb2RONHpUbjQ1Q0hKNWNoakk2ZWg2enMrY3l5QVc0L2gyTXU3?= =?utf-8?B?YllxbzVGcmlQTVpmVlZ1dlJNcE1TNDdaNmFTUWVHYjdPN2lLNjdaUDU3ak1w?= =?utf-8?B?cFE1YmJNejU4cjd2SitKVFl6TkZRL2RBMXJYSXBRYXdVa0wrcER1R2Rybkxs?= =?utf-8?B?TU9UVXUzb21SOWpWb3dvTlNPWmxlMDhXb2FHbU5TRWRqeFhUZDk2bzRVOXRt?= =?utf-8?B?Q3F6azFib2FaZytIZG1tMHRtYU1VQ2JaNWVseTk3Y3pSZmh5eTBzSWNWeDdM?= =?utf-8?B?YnRqQlZiUXZiSlVtWitRYlVCRUR3QUlsbEkrOFE1MzVmbFpkYmRDTHFFTlhl?= =?utf-8?B?L01URGJwSGNVeXFuRmtKV0RsZXRFcElvQXF0Y0ZiZ0FVZGxHa0pjR0hKK1F2?= =?utf-8?B?R2Z1U3h0cTRoOTg3RFIzUTVlYVB2QkkzVkg0Uk1Gem1MRlhaK1FOTjRvR1NJ?= =?utf-8?B?UVZqNmIrUjhFMG5pMTRaV1gxajNUeDJ4NHZSNlpBM0hwTHYwbEtJTXpvMnF5?= =?utf-8?B?Z0lyY2xRWWVkV1Z0algrN3FCRm1QOVlGaTZkUlRUdXRDQXF6cEZwaGR3VGJD?= =?utf-8?B?TEZqQkRndXprTzViRCtCc1hmOU9pUjNSY2ZDZlUwNDlKcTRYN0VxazZvMHlJ?= =?utf-8?B?MGlwSG5EcHFNamNORWdhQXliQ2tUQVMwb1R4S3k2V3hHTlE0YS9GZVJrdlIy?= =?utf-8?B?Nk9INnVnR09nM1M4TE9BdkdQTHllbkZQUklxR1pqTXUvVVpWY0J2c3R6b3M4?= =?utf-8?B?Sm9xQmtuajFrR1FPZlZPMnY0MnpzUnpFWkErbnNadGprVHMxKzNlcFNwbzBl?= =?utf-8?B?WGRqK29za2JNNUdKWGdGZzc5OG0rNEgvMFgzTUJmWDBwQUc5TGxGRFV1VzM1?= =?utf-8?B?dm5ObzVRRFNTUGV3cDVJSkZGa3hJZ0ZoK2N2UmJBYjU2dFlEL1M3a1diUk93?= =?utf-8?B?aVovQlg2OElyUWtYYm1Edk0yUGVKcDh1Ym55cnVCVUt5UENiTFZDN1Z1eW5m?= =?utf-8?B?RWgxeUVHMk5vNVQ1MkJ4K0MyVk5MOXZkQWRWQmtLYXhTUzRMWnh5UlRwN0xD?= =?utf-8?B?b09BbURDSVo5MXk3OEV0eWtmbjNZd1BWdUFjMFIxYXE3UktQQmsvS29YQ0dJ?= =?utf-8?B?RnpDRzZwTU1UL25MNERkM25QZ2FmeHQ0VWdwTFY5SC9WdTIyeTJRVi8zS1Jy?= =?utf-8?B?Z1ByaVVmTFFzMVFWMjg2ZUtmMTRhdHlSR3ZSZVNxQ3czQjdnYkFveGI5VWw0?= =?utf-8?B?ekYwdEhwVG5wTXdQbGlhZzc3YjR3Snlub3FTTTlaUDE3cGhPbmR5OEZyaUQ1?= =?utf-8?B?WU5VQTlFNThKZVZFWWdaY0todHhMNGN6K3M4MWRCNHlqbEJIS1hMUWVzeTlu?= =?utf-8?B?bTA5eEthNDZTVVUvZ2V3RFFPYUdxVjB3NktiWmZIZlczdmdDSGxCSDk3amU3?= =?utf-8?B?b0w1bzRreTFXdXBKbHhLZVFNRkdMSVpueUNUNmJMT0Y2a0JJZkNjcFVlRkcz?= =?utf-8?B?akNReDZXbjE0bitycnNEcG03dGlMMGRMN0JjNVg4bzlzSWlONTBETGtqSnpy?= =?utf-8?B?R0RDZTB1SWhBN1RvcW1VaVhYN21Hak4rVnl3YUJadlptWm5hWVROMnhjWEpk?= =?utf-8?B?MEllZzJyVVYrOEJTcXBLY0JrL3VteDNtanRDQTJNZzFVdkV1RUZKUzEraHIz?= =?utf-8?Q?1JlaTTyAFNKUuCQT64hdLbs8h?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 67646095-270a-4632-c48b-08dd767a0401 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 08:47:38.2888 (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: 2O9Ykyy8I5weTk8ir5QSLUYVx7c0wOZz8j19wQ39+0j1SJRN5kCPQgBXsSDw03mO3rfD0JhJVOuF3wVsgNLkIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR04MB10063 From: Peng Fan The i.MX95 System manager exports SCMI CPU protocol for linux to manage cpu cores. The driver is to use the cpu Protocol interface to start, stop a cpu cores (eg, M7). Reviewed-by: Cristian Marussi Signed-off-by: Peng Fan --- drivers/firmware/arm_scmi/vendors/imx/Kconfig | 3 +- drivers/firmware/imx/Kconfig | 11 ++++ drivers/firmware/imx/Makefile | 1 + drivers/firmware/imx/sm-cpu.c | 85 +++++++++++++++++++++++= ++++ include/linux/firmware/imx/sm.h | 5 ++ 5 files changed, 104 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/arm_scmi/vendors/imx/Kconfig b/drivers/firmwa= re/arm_scmi/vendors/imx/Kconfig index 4c24e17425f830810f8ba376ece9db93c8cded6d..9b4339b93826804599371f2e3a2= e79f27449582b 100644 --- a/drivers/firmware/arm_scmi/vendors/imx/Kconfig +++ b/drivers/firmware/arm_scmi/vendors/imx/Kconfig @@ -15,7 +15,8 @@ config IMX_SCMI_BBM_EXT config IMX_SCMI_CPU_EXT tristate "i.MX SCMI CPU EXTENSION" depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF) - default y if ARCH_MXC + depends on IMX_SCMI_CPU_DRV + default y if ARCH_MXC && ARM64 help This enables i.MX System CPU Protocol to manage cpu start, stop and etc. diff --git a/drivers/firmware/imx/Kconfig b/drivers/firmware/imx/Kconfig index 70c092424328067ea6b946cee59f072661e27e47..8236f81e054ff43c5fbc660a67c= 53ea9324ab402 100644 --- a/drivers/firmware/imx/Kconfig +++ b/drivers/firmware/imx/Kconfig @@ -23,6 +23,17 @@ config IMX_SCU This driver manages the IPC interface between host CPU and the SCU firmware running on M4. =20 +config IMX_SCMI_CPU_DRV + tristate "IMX SCMI CPU Protocol driver" + depends on ARCH_MXC && ARM64 || COMPILE_TEST + default y if ARCH_MXC && ARM64 + help + The System Controller Management Interface firmware (SCMI FW) is + a low-level system function which runs on a dedicated Cortex-M + core that could provide cpu management features. + + This driver can also be built as a module. + config IMX_SCMI_LMM_DRV tristate "IMX SCMI LMM Protocol driver" depends on ARCH_MXC && ARM64 || COMPILE_TEST diff --git a/drivers/firmware/imx/Makefile b/drivers/firmware/imx/Makefile index 7762855d2a771169d4f1867d27e0d51be7c9ad03..3bbaffa6e3478112638ed031375= 602389f18ef09 100644 --- a/drivers/firmware/imx/Makefile +++ b/drivers/firmware/imx/Makefile @@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_IMX_DSP) +=3D imx-dsp.o obj-$(CONFIG_IMX_SCU) +=3D imx-scu.o misc.o imx-scu-irq.o rm.o imx-scu-so= c.o +obj-${CONFIG_IMX_SCMI_CPU_DRV} +=3D sm-cpu.o obj-${CONFIG_IMX_SCMI_MISC_DRV} +=3D sm-misc.o obj-${CONFIG_IMX_SCMI_LMM_DRV} +=3D sm-lmm.o diff --git a/drivers/firmware/imx/sm-cpu.c b/drivers/firmware/imx/sm-cpu.c new file mode 100644 index 0000000000000000000000000000000000000000..091b014f739f68d815d71f9b53a= 2a7eaf0bd607b --- /dev/null +++ b/drivers/firmware/imx/sm-cpu.c @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright 2025 NXP + */ + +#include +#include +#include +#include +#include +#include + +static const struct scmi_imx_cpu_proto_ops *imx_cpu_ops; +static struct scmi_protocol_handle *ph; + +int scmi_imx_cpu_reset_vector_set(u32 cpuid, u64 vector, bool start, bool = boot, + bool resume) +{ + if (!ph) + return -EPROBE_DEFER; + + return imx_cpu_ops->cpu_reset_vector_set(ph, cpuid, vector, start, + boot, resume); +} +EXPORT_SYMBOL(scmi_imx_cpu_reset_vector_set); + +int scmi_imx_cpu_start(u32 cpuid, bool start) +{ + if (!ph) + return -EPROBE_DEFER; + + if (start) + return imx_cpu_ops->cpu_start(ph, cpuid, true); + + return imx_cpu_ops->cpu_start(ph, cpuid, false); +}; +EXPORT_SYMBOL(scmi_imx_cpu_start); + +int scmi_imx_cpu_started(u32 cpuid, bool *started) +{ + if (!ph) + return -EPROBE_DEFER; + + if (!started) + return -EINVAL; + + return imx_cpu_ops->cpu_started(ph, cpuid, started); +}; +EXPORT_SYMBOL(scmi_imx_cpu_started); + +static int scmi_imx_cpu_probe(struct scmi_device *sdev) +{ + const struct scmi_handle *handle =3D sdev->handle; + + if (!handle) + return -ENODEV; + + if (imx_cpu_ops) { + dev_err(&sdev->dev, "sm cpu already initialized\n"); + return -EEXIST; + } + + imx_cpu_ops =3D handle->devm_protocol_get(sdev, SCMI_PROTOCOL_IMX_CPU, &p= h); + if (IS_ERR(imx_cpu_ops)) + return PTR_ERR(imx_cpu_ops); + + return 0; +} + +static const struct scmi_device_id scmi_id_table[] =3D { + { SCMI_PROTOCOL_IMX_CPU, "imx-cpu" }, + { }, +}; +MODULE_DEVICE_TABLE(scmi, scmi_id_table); + +static struct scmi_driver scmi_imx_cpu_driver =3D { + .name =3D "scmi-imx-cpu", + .probe =3D scmi_imx_cpu_probe, + .id_table =3D scmi_id_table, +}; +module_scmi_driver(scmi_imx_cpu_driver); + +MODULE_AUTHOR("Peng Fan "); +MODULE_DESCRIPTION("IMX SM CPU driver"); +MODULE_LICENSE("GPL"); diff --git a/include/linux/firmware/imx/sm.h b/include/linux/firmware/imx/s= m.h index bc27b04afb2f68b048955f51c07a106f4c7e5852..a8a17eeb7d907ef8ac074c4ed1d= 3ac83f1104627 100644 --- a/include/linux/firmware/imx/sm.h +++ b/include/linux/firmware/imx/sm.h @@ -21,6 +21,11 @@ int scmi_imx_misc_ctrl_get(u32 id, u32 *num, u32 *val); int scmi_imx_misc_ctrl_set(u32 id, u32 val); =20 +int scmi_imx_cpu_start(u32 cpuid, bool start); +int scmi_imx_cpu_started(u32 cpuid, bool *started); +int scmi_imx_cpu_reset_vector_set(u32 cpuid, u64 vector, bool start, bool = boot, + bool resume); + enum scmi_imx_lmm_op { SCMI_IMX_LMM_BOOT, SCMI_IMX_LMM_POWER_ON, --=20 2.37.1 From nobody Fri Dec 19 04:26:45 2025 Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2065.outbound.protection.outlook.com [40.107.249.65]) (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 85878266B74; Tue, 8 Apr 2025 08:47:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.249.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102069; cv=fail; b=BVzEakUyiQwR+ES2UmuzHYTWzj3nmZMCz+5Rlg3rZuLOO2GNCQvzYeBWEoEpDO0MCnTm2gnNau5oMZ/U5Fc3QLr+5kaHyl/0SFfBSnjzhb5gQt1/ieGdbgCDGN+tfO9NvclPaLJjAhMbMZQy/OsBhsb5DdxEK7Ey+zJS4DQebs0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102069; c=relaxed/simple; bh=uddcIm3mCe5SaB87JueEiVs8AWMGP4SfOAiezc0fr3s=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=PfSxHJi5p+pDXFZRVOtn/0dyBe/D6qG/Dm+ouinNpGsiIQUEaExdgjxMYujvhP8cXx+ZWueWaIirOrBB+YzDE6SleqDY0v3wYpfGjllzBl5a6IPRYgGRXjGVDo2kj28sj/Ij0ZR7ESGzX6oBWknuyvk8dRbH83kgQwo9Hbx7W+c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=XWcE9AsR; arc=fail smtp.client-ip=40.107.249.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="XWcE9AsR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k87lDxJKgSuoGJWYXd6mE/DQJQIq/oQZUko0SMm0IIvFOGromf9k3gc2dRqnFNU1VTuQkz3x3hUnzPM+tlE3oDeqthsEmGnbW745Sfzu0wlSR7y8z+52Ako/dmYZbCEkCSnpJoHTD6Nd8W/0/E6rtwYs35zOfyxld1BkgGsDMgCtzsC5jclSRaZssL9ZCXpGXg2mfsMs7oOJuWen5RIYwoGW36pOZrU8Am0l/8zXzyVVuQR3ddH7tDpjncecP5RkSZmsRoEja1ZY0qwIBwHDvbtKQ0H1Fd2o6MV09+yM5+NeQdyJY9gsp/lAQ6puiCm48+fDTPu6WyH5R1bhEh30PQ== 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=Ue1bTtJmxgaGtwDoDuKgQqlks51lX70OPpO37EttAdA=; b=CNE8cZcjkJYrR4WxXIPlbmGSrX0PxZTiHi249aHj7U3fazQwJvUU+rruXvQzv0upoeBhCWHYJmgDOEUrzBMBmwS2I/BUVq5Uuy+bYcw4Us5wopDhGV2mXgSXD+HLLrbNltQSIs1y9qfz478BJgeeb5D54VQxikjuYSesy0Mf+MPlIuWJ70agmoFjsM44Hf+Pc1lC+9jNDX4L6faw0Lokar16Zxqis/4/9nBPIN7laA06LdhFvLQnV0Fd3Ydw64egW3llZjBBPhHYKmZ2vIWqyO2oG3fIMzZ3qyXlXr8ohoXEd4Nq5TZ9euxw0F5iZy/ZOLAH5NaoHIPpA3sUKRQ2Ew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ue1bTtJmxgaGtwDoDuKgQqlks51lX70OPpO37EttAdA=; b=XWcE9AsRkC3wOK5MFj3ZSX2I5ERJmdNXiEyZIRX/xOF2QLARQGg0liDcCJawaNic4HbzTI/CUCeLN4UJqc247r+ZXIippq1PGUjQq13oR0+Zqf6IwIKJhgqoyKbMkirlCrSmW0/pqQfEDVN+hCEawnJM95BABnkUySOGWEbPbq0HKC+RKksz83CI5MDJAkglm+Re8QeFfPR+aPpgjj+J5AMgz0z6MXSbovzuh6V6YLdYuVv2v2DRZqu4Otb1zfOHjAZX+lFh/wI2NbnwT5vZ5cBxmh/3oV00IUCHD6VFqEOZb5rUMvLkesbxKN9sNWePUI0zE+HwHZplbH3prAZJqg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by DBAPR04MB7224.eurprd04.prod.outlook.com (2603:10a6:10:1a8::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.33; Tue, 8 Apr 2025 08:47:43 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 08:47:43 +0000 From: "Peng Fan (OSS)" Date: Tue, 08 Apr 2025 16:44:31 +0800 Subject: [PATCH v4 7/7] MAINTAINERS: add entry for i.MX SCMI extensions Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250408-imx-lmm-cpu-v4-7-4c5f4a456e49@nxp.com> References: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> In-Reply-To: <20250408-imx-lmm-cpu-v4-0-4c5f4a456e49@nxp.com> To: Sudeep Holla , Cristian Marussi , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Dan Carpenter , linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744101964; l=977; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=ATAybhJ8S8dUnRsn1OtmHx3Mrkujcbd5Z4FXS3mP5NA=; b=M2xYwekpbShPzQRY9rrsatKB8qogUW14X/FPs22aQ1tXiwPA21BbZrpsfZlj3rd4bKTwc3MsV bEoaIUaMfvkDfMg/trlBATy4iW4DxvTKY3M3PBvqJW4vs+lXFbdzo3R X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: MA0PR01CA0056.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ac::12) 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-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|DBAPR04MB7224:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f6fbffa-841b-460d-82aa-08dd767a06dd X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|7416014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bGxldVdYQmdBLzAza1JaSUVmVkttVEVid1dwVVJMN2t2Wmt2N2hZSXJmaGgv?= =?utf-8?B?cGlad2s0L2VNZGh0bE9RRlJnZG44bFJMTDF2YTRWS1pMdzJGbW8vMjd0cGU2?= =?utf-8?B?bkQ4ZmIrMVhPQjdUczZKUWt1TVJXZlVMVGFLMDdTZmhRNnp0YVJtL3lZU3Q1?= =?utf-8?B?b3JJRld2a0RPa3pkdG5va3ROYVV6NUYwWXRkdm10TmxEUHA1b2FIUENhSDFF?= =?utf-8?B?SVlZdjRPWWlya2pTL3pKUzdzTXdjR1pma3k1bm5rMHp0MXRaQ0trQXhtUG5K?= =?utf-8?B?WE9jVUs3aGk5UEp0TDV1cVhaM1I2RFM2NlRWYmI2RWJPZWc1SGhYK09heG41?= =?utf-8?B?b3Ixb0NTQmM5OXB4am45eUFhQ213MitML3M0djVqenRqNDFOMGRkNHFDLzdq?= =?utf-8?B?Q1llTmtvTHg2NTRoNWhGeitGdkM0dlVNZFYwalhQVFJmU3BwSEs0ZDdXeHdU?= =?utf-8?B?ZExZMksxZGpObU02cEIxYzEwVlZ5dVJHRzBpRnVuSUZxcWFMajdQTHFWd0lU?= =?utf-8?B?SnRnVERTWFFaVHZ6a1RSdGlPUGhjczR4NE83aDhwaytIZXVGNTVNS1RCMXJ3?= =?utf-8?B?UDBUdTExVmxLczNtdTlGcXEveWpIRHZJalluQk95SkFjRTh3eEc2RitkZm02?= =?utf-8?B?MXZHSEdLckRkbnl2TmFIcVhhWXZEK09UNFJBaTQyMldPTjhZMmZuY2RTanZv?= =?utf-8?B?TW5VRC9IUHlwYWV2S29OSWhDZ1JVL3VJQzZOcXRJM1VDMUVjZVdvNTdSK3Fa?= =?utf-8?B?Q0lXalZPd01hSWJIMWd1RGV2WFMxNFY2K2VMMCthamhoTVA0TWNXQVltQS9K?= =?utf-8?B?bzQvY2lycjZWcXVaTGVoMldDWGpEQTZKVHUrdW5ZU3Z1MkVKQ1ZxdnIzZ0t3?= =?utf-8?B?a3hXcjNVcElYa3VMTVNQVjFmMlNtY3VQWk5yMTFTdGcyM09WYVFaQWdEd0px?= =?utf-8?B?bGJCUi9FbEw0RjBaYnVSR3FpRFdyUEVFWFMySFk4UVBaR2U0cWxzSFJKbGdU?= =?utf-8?B?R1lUS0xxbFVHSXV1UXp6UytEbFVNTmNMSnZPOXIrc0VaN1o1NFpGb1o4ZnZq?= =?utf-8?B?UWJEelBzZkZBZDRET3I5Q2ZPN0o3SUI3MVVlNjJDYnVLYnBDWWVOazJTS1ht?= =?utf-8?B?RU5sVm9nNmVSVS9GYzlwNmZNcGpqV2M2VlV1VVppNmp0MTNqQVgrQS9EUEY4?= =?utf-8?B?RVdoKzl3bi9nM1BMN0RaVzkvenQ3YnhuSXZVbkV1L0YvV2FpYU8wUVp3UHhp?= =?utf-8?B?ODlETnFjVVpRbEs2Z240WGZPQXRKbGRVVlM1dldKQWdDb2ZPaFlEYTBHMVJX?= =?utf-8?B?aUd3Skk2Y2VJak5jay9jRzlEcDVraHpza0JkQ2hXMW9HRXNCNEUyc2piS1Fr?= =?utf-8?B?YzRxa3FjVXJvNnA1ZEk5SGorOGdFY01qM2svZGRCUkh5Z3Q2M0haNXJVZVQ5?= =?utf-8?B?YkNBOUxiS2U2RE00bnpYRTZ1Y1BmbFM1YkY5cStLUXhjTnEyZVFRU0dTbnJn?= =?utf-8?B?cm1lUEhmanlERXJwWms2eDY2K3VkWnI5Q3gzYnBZa3FsWHY1aW96YVo3eUdt?= =?utf-8?B?ZHdGeUh5WmhIYmN1VlFONG1vbm42RklORDBnOEhNTVZXY1RYaWxrUUVCR2lE?= =?utf-8?B?cXBoc2xaOWdEd0htbjNJeFY4eU9XZ002MnFpTnZSaWRiVW80OXorMTN6cXJW?= =?utf-8?B?U2xOZlpmbWptRHEwUUh3R0RmeEJMY1N3aW0zTmxyd2h4aXFsdlFqOWRpMlI1?= =?utf-8?B?Z1orZ0phV2grZlQvSDVzRUNFei9rZ0VIak84MDVxQjZIbkxJV3pBY1V3QTFo?= =?utf-8?B?UzFMZnV2U3g2d1ZsRjEvMTVKN2ZzZGFzNnFmQ2d4VXIvVTUxUkgvQXFrQ3hw?= =?utf-8?B?Wkl6VVFUb3ltVFVNZHFpUldtb1lDMFVhRCttd0JGMDVEZnpzdmpmSGtSZ0hT?= =?utf-8?Q?S2QuL98Jf/ZGbYmX/WJaTdlZ0Lbrwg6L?= 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)(52116014)(376014)(7416014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZzF0RTM5RXZGTVZUNUtNeHR4N2FVbmpsMlhXQWErcURQVkU2UGFYRFpsYkxx?= =?utf-8?B?US9zdFQydm40U3ZudWJhcEh1MkhtbjQ5VWg2SWMxcHBCd25vQ1JITXRUeExT?= =?utf-8?B?UUxBc1FJdzJKWGVua1dCV081bmUwWDJwWjhjN0JZYnFuQ0pwR1RJS0V6VGJE?= =?utf-8?B?RjNPSFNZZVY2SmRldHllWGFmSHhVU29kcjE0Q0hYVmVBUERKVHJlL0RFYklO?= =?utf-8?B?bW1RUTVEUXd2Q1B2NzZVQVFBV2Q4TUFWUUlnMDBMeDFTMGZlOWtqYUhHbURM?= =?utf-8?B?NDlRRUJ2elkxdXZiazZYU2ZlbGhhdUczVEFOUENLYkE4eklCaFh2S1NDTzRr?= =?utf-8?B?WStrTGVVNitqY0ZGVVkxbjFkN3Z0K3Q3RFZ1NUNRU0FOdGhsUmZBWk1mMGVw?= =?utf-8?B?cHdTWkJjbHRBZ3dGY0ZmTnRvZWlmWC9XQXBVSkVoejRMU0NSRm81bHBQemcr?= =?utf-8?B?Q3ZHVUxvNUs0ODZqRmY2WHp3cEtUc25KZk9mOTllYVRLaWNXZ2w3anRUeEJm?= =?utf-8?B?enQyTDJJbDJsRTA0ODVJaFNUdTNJQTQrK3pyMXJRRmRYcldHMEw3SnJ4MERp?= =?utf-8?B?YnBRUmpPMnRjcTRMRnFybVhFL2lKNFhla0UwODh4ZWx0ZjQ5MXliMWJSNEZh?= =?utf-8?B?eWszRlZmcGg3ek1OMDl2MzRXV3lWbTdyb0tjVzJEd3hsUTVFK2dnOEwzTkpU?= =?utf-8?B?K0hjZ1ZoSGZQc1VKYUxqcVZ3RlkrM0EwVEVSSmVBNUxkZ3lTc2ZwbEEzWTZq?= =?utf-8?B?RDZqUXBQc3draWNoNjhKZXc4UkFxTnI3ZmlZMkhESmg2c1VsZzdYZk4wbWYv?= =?utf-8?B?d1AvR211cnV3elYydHp2dGx4dStiMjRuQ1pxYUt5N1pneldaRzZKSlM5Tmxi?= =?utf-8?B?MGVINERkUmZkZVlVMFp4MHBrRGNFYWljZjVmTlJvejNDTzVyTXBvOGRYMDMw?= =?utf-8?B?ZzlncTJ5RUQvVmc3M1V3Z1RKWlJZWDA4TG9HOHpKTTV2UHg1QXlNUHY1NHhR?= =?utf-8?B?ekY0NU0wUXpFZmZHVVR0VUpDSTRUQjZ1ZVVjQ0hySHUrQ2dnZU9scXZkZEh4?= =?utf-8?B?dEZzRS9SNWptNjM0aGdUYnlaZjBNTndzOElzM3QvS0k4eWgzeW92WlFkUGxr?= =?utf-8?B?Yll4RDgzRTV6MGZuS2wzWGRNVDI3WGtyZHFVV1NRWTFrTEE5MldXV1NNM1pa?= =?utf-8?B?SU1vK29aM3F3c3o3c1ltaFVLbWRzQjAvRWFERDFMZFR2VS9md2tUSFZZa29P?= =?utf-8?B?SXRhSm5SQm1KWS9aenBZTXlhRGg5b1czSmxCZ1VCYk5rZS8rMDNqTTVSdGFT?= =?utf-8?B?eXRsQUE2ZXVXU0pTOCtVclVGdzVQVm5sYzlweEpSYW1NZEJEWWhMbU9ldVB1?= =?utf-8?B?TnBub1JHakJnaktSSENLdUR3c3pQOGRPRUtTRDNQN08wZkJzUFJhRUNLTDVk?= =?utf-8?B?SWpjWjU3bDI2Qitldzd2RE1KUWFiV3pGdjZJZU5nTE1mcHZUVjNkM2R5T0tz?= =?utf-8?B?YUpOaXRBUE5tajVqOGx5NmU2NlhKbFpvZzhDUGRYS2tNb1hTVy9OOVpxbXBj?= =?utf-8?B?dlI1U1NqZFEyRkdleTAyOVNuUzBjL21naEVGaVhQUHpNeTdtWGZWcmRydm5T?= =?utf-8?B?SkZSUDR6UlFLckFqaldLUXRvRnArem1GWnJaOHFUQXIxaW1rQ2dsQmoveXBT?= =?utf-8?B?Q1FTSDNsUmdOM3JRWklHUjN2Yzg2OUNicWU0OWlWYXZDUm5HT2RvZVdOV1ZO?= =?utf-8?B?MVNBK29sVVo2YWdiQ3hMdytDNlJLekMrKzJQdU4rVUFFeUpnR2NOTmRITUZL?= =?utf-8?B?Vk1PcnUvZERWWllwaElOZXZabkszR0RFdWoydWZ1dFdHUUYveGVzVm1KOUQ2?= =?utf-8?B?OC9pV0JjMVMxZTBhZEh2VFA3citvMjJBbWgydGJ0MGhHcDdwWmFiekt1eml4?= =?utf-8?B?ZXo2Z2pkeFN4SWdoNStjNExxSjdZY2ZsYVNFRWRiZHhVVEY3OXBLRUg1d3dt?= =?utf-8?B?NmJoaDFrT3pVU0lQYmt3MXdINXJkR3QxbEdqVnpwRmJYOUcySDFPaVRVUmlF?= =?utf-8?B?b3oyTGRFUkhuOGlZWFh2WFpMRm43by9naXFzc2d5b0RHbitQeDFjL2JFRWpS?= =?utf-8?Q?vZWLj1S50aZfOFhsjaQGxnQIY?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f6fbffa-841b-460d-82aa-08dd767a06dd X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 08:47:43.1256 (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: a12wzg8iUmlOL821Y40UwtNvwtFKG428Mlq48qN647kgDTr2afLcDJxgHiKQcD3csxLmApg5WtcP8Atwm1UYmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR04MB7224 From: Peng Fan Add entry for i.MX SCMI extensions and myself as maintainer Signed-off-by: Peng Fan --- MAINTAINERS | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index ce2b64f4568d5d3dc48792843b6bb8928f5e0728..e406de86df9bed0f34871fe1ddc= a408984463493 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -23505,6 +23505,15 @@ F: include/linux/sc[mp]i_protocol.h F: include/trace/events/scmi.h F: include/uapi/linux/virtio_scmi.h =20 +SYSTEM CONTROL MANAGEMENT INTERFACE (SCMI) i.MX Extension Message Protocol= drivers +M: Peng Fan +L: arm-scmi@vger.kernel.org +L: imx@lists.linux.dev +L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) +S: Maintained +F: Documentation/devicetree/bindings/firmware/nxp,*scmi.yaml +F: drivers/firmware/arm_scmi/vendors/imx/ + SYSTEM RESET/SHUTDOWN DRIVERS M: Sebastian Reichel L: linux-pm@vger.kernel.org --=20 2.37.1