From patchwork Wed Feb 12 07:40:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 13971291 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0976CC02198 for ; Wed, 12 Feb 2025 07:44:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ANnsaSQu9v+dXsEa8nLp4hGE1OxMJ3A5MhNkRRBPxuM=; b=pXgWEd27EhLWEkxVMP42o93suo TF/tEzm9ZAk2lQAaBssTXC2/DaJOOinWnnkic3OXYy7x7rObCrr3TsZvO4zbPkqEaiFL3uf6UHJwK 4ZosOzqNQI5C3Vq0tihWLepOna8E05MNeh90fzRuetwFDrwY2ULNBStnB6r/L8z14N8Ee9V6Wc88z BJkyws3v8QQzb1CDgxFSSE3HcGbXuWgmIDP3FpN643pC9xQaH4EfQgfFHaSQmcjDLJbRuM6OpoxYU GOzRvVhCmUtQM0MihGmJrSrk5fMgY8dwsXhyBHTQ9H1iDShsdaMAfZVV+IscqWHvmqg349PK9zDk1 qff5EOfQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1ti7Pt-00000006WEO-2bZz; Wed, 12 Feb 2025 07:44:17 +0000 Received: from mail-vi1eur05on20627.outbound.protection.outlook.com ([2a01:111:f403:2613::627] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1ti7N9-00000006Vax-19sM for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 07:41:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iaace57brspKE2Vbinhd2jWHFEl+bi/zb/32GE3dXEhSU6u6Zuz87WxQWdxnWhV46AVs62mph88fzX21Ke9vFD7tg1whADEnpfNxlrgtzzFEjUj13YHQVeLAZpLIGZv0T06QUaMb8YZfKS/0VC9bVcrDhl3he95MdHip3OCb9gDmpmS8o5lggGCOuZ4V1/q3BotyEK4Sp6o9xBjxo19jTx6QwHykOhtByW+fHYmfdFI6qc7j0m3pJJ2D39JucU+Gdc64H9+ugeptxbIZLq5Swil57cTB2c2QSYqarCwkEauN0ZXoNjyzpSm2fp7uyVwZmLrPPg3h9gor4UAYkBslYw== 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=ANnsaSQu9v+dXsEa8nLp4hGE1OxMJ3A5MhNkRRBPxuM=; b=U8GybYfq7xFCYwKllnF/6ZoZtQ4tcPov81VuDoNkpNO00WPL+Eo27f6tFWedOXAmu3upWswkmSeN4xQPr8fQ8prrES5nO0lfrMb9QVKGliz1ptjUrf6Ua4bKPs9j2lCy7cIULjJg8eUMk+fOq3ByeFgqSrHObwXVgjBFBBdXgmfwIs6krX29c9UeB55XOmYBXzMf73bVuRlOC1JDrJhYoehVJsdJCXDG1sNEMbdZvi0y0hiWjrQ754RvSOa7wWKqm5TxdVs4mav8Mp3EmuKU1sw54lbhsaBoYE9M1bwV3EFZUhzVL9ixg07ZTFdSYfFQ6ZzVJwJ6FjljBBbwUYNn1w== 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=ANnsaSQu9v+dXsEa8nLp4hGE1OxMJ3A5MhNkRRBPxuM=; b=OjjGFd/oaP9xVHRqAUsriZqd3KKW/+o0sqoQlRikkE29TUMYmwhGn7GTjXuWc1wHqXLjhx8K4dG56vue35H1zde6vWVAMR8X4ZCAyNAxetZCbYFsq+rbcPuek1VTcSLVONQwWydCSjfWNwdmyy6FCEuF7xMIayQ1Q6cHMyhLOmJxodbMIWBdBrmS3hnDwhi7y5dodgXTVUpoWQARmvRm9P0v6SUCpSCFFQB/vKaik60V/lRRJnGkQc9068c0jHTMSY+uloeW7Rc7hrmVQPo9U5czYWMpj5EgMw+35P86bpPeZ+QkTLOCdylM20eHoWESdXVpm4ow4OityKogFVWc3g== 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 PA1PR04MB10865.eurprd04.prod.outlook.com (2603:10a6:102:48a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.18; Wed, 12 Feb 2025 07:41: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%3]) with mapi id 15.20.8445.008; Wed, 12 Feb 2025 07:41:24 +0000 From: "Peng Fan (OSS)" Date: Wed, 12 Feb 2025 15:40:23 +0800 Subject: [PATCH v2 1/7] firmware: arm_scmi: imx: Add LMM and CPU documentation Message-Id: <20250212-imx-lmm-cpu-v2-1-3aee005968c1@nxp.com> References: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@nxp.com> In-Reply-To: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@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=1739346036; l=47604; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=eE9l9TA9pCk/iFtIAlt9euJ2zISH4ZXCj0VwFDxu54s=; b=s08eUySPIT2+EKBEIRDHGUp8LC9hf4/3YPP8DNJMvflaEacxa4G07YLIYBlVSFuZjwDsac/bp FMqTbpelCnwALbv8o29xRmLFLMxagr7DqvHPKlVR5FbyGaEQ5QmhiRD X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2P153CA0014.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::6) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA1PR04MB10865:EE_ X-MS-Office365-Filtering-Correlation-Id: c361aef4-9c84-4870-d8f8-08dd4b38a64a 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|7416014|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?A/OkCxOn6sn75g+v5T6nzZkorkV4De1?= =?utf-8?q?vX1chQ/RbX2PXNLuYGQ+4PWaaDMrF1C4RMrivMOdkHedbpLK97asg6afsanv2YG5g?= =?utf-8?q?beOdv0nrepWiOuhXvhZgcuNdmrQAws4OsQXPJXa4roi9ubfwpjttN72EHCctiZBYH?= =?utf-8?q?rn5mWM+/QlHPuQRjZCql+rhJcX4NYVu3kWCULcIH+JUqccubhXm4n2/dQOEZjqKQ6?= =?utf-8?q?dTa9ja3EhBwyViZrY/A0wpFVXCkYNz3EN5sqGiC35FB4R1+0zxTnc74RHV/tSD9ES?= =?utf-8?q?4KFpYYhSA6Aippu5Q7aSbvdzT092QptnpYs2Fp+clovdkBtlSeKRK1Wl0Cg8wffEV?= =?utf-8?q?x2HOkvL1qiblTR9mTqD0HuJ01XkegE6ztLWEo6NirBqR/NeFh0qXri/yTaVhEdpxf?= =?utf-8?q?kzrLg14gUhe+sSWIz/fRR/vyOZbFq0hZ4oPfd3ifQj6NGvtY/ziJVVzVztGrvtJiQ?= =?utf-8?q?a2QJAO9LLvGgXfssE88/IL4Q485melXG+jUmmzY8drAysPjq3d6rfzX1qy3TTkSja?= =?utf-8?q?ZeywiJMmPgQ4jBVr7WJVCt6Ck1Hq570pH1OPoh4bXXGC5u68rPZBGRwC+NhHoadyP?= =?utf-8?q?jD4zvYw8s4fzmrAEqMvauxqUyzXhyrT1HTNG4UEfYOKvwhdsgjhWniR/GNQhn1Fm+?= =?utf-8?q?gxUXUNsp0nnECPfJEoLsuT8XocoIfJEJABZUOEZsxn8VR01bfqYPQ/IJtkTDitrDa?= =?utf-8?q?Hs8DKQqzJCqsBWGUs3ecS99q/NGtAnhJLGg4IwOdobA5M5zAuMep+KBZa6UKXlIib?= =?utf-8?q?wbOd6yp9e2//f0/yj8bitj8x581PwGY78PdATL00LOMmCetD7AwAr9fpcAOLD+5AS?= =?utf-8?q?HwEvaKfZZ0hrnZMoE5Xh2WBVixbHkVeTEfr18wAMVjwNfoP8VDQL052pgKpdzMFAs?= =?utf-8?q?AyydPM/GAgfBLmT36P9hTKD/30IWkTEP+2uhsckoh7S6SoTyrGezK+6MWwINu1DNa?= =?utf-8?q?jnrH9I88qV3g+4Uldty1ycjye4wzRfHUsp+TEepnXYrQ+W2NvNHitLy8kyy9JRIWg?= =?utf-8?q?kzKdZ/Hf9Nps7ncTS/iN4fD4CcHVOEsjIMOIdUiTP1OojD8XAWuWFGtD2ioOLQZa7?= =?utf-8?q?uQ48Al9xQ3E7Gek5An/uDlVh0ks4vlEvtWS79pAo/+PpPpgAS3K+jEBOhglBn1jDb?= =?utf-8?q?HUpbd1fyZDJitYgnM7Gb7f/ddMOn8iAZsftetgFom9G57/U4teV/eO/fFV9jik2hE?= =?utf-8?q?vTkaMknI/xtVotpDXomIfVkgvYcGzqITTVG/qcP0GsOSjLbIUCfoAEj03O0IhOTAs?= =?utf-8?q?6OEfCFrfpv52JvYX/qVuup73RQqw0upl5wa6Y9WtUjJu+tjIQVoXJ8SUuN9NePo+I?= =?utf-8?q?NW7AuzeLIWwOGY1c77tIGOlrP1Z6Mm2qSyzTXD6X1uD9njvfHYBquO63ootAHAojc?= =?utf-8?q?DKUlBIftOcI?= 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)(7416014)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?WugbNtSIdN3UnWuY1n3DxZjH79Xl?= =?utf-8?q?1dEFcGNNSOuaNDwcsCV7SoSS5MApBzpwZB7QJzcH4DWFymqkdAesErapDl22RJdrm?= =?utf-8?q?IZUc+/kASDaY8SB4ueaA3tvC+BjHDnZnSgAupE7BfbbLd1OX9i9oH6t+QdH4T9iRV?= =?utf-8?q?dkLtKPc1S8JnxjAfJEavV+6C3qFD/z1hjYTmCLatK9lzb6P1jTeVlOjT02OaICGZ+?= =?utf-8?q?yIKzGBfsEH3Y2cEd1CjyEb6mrP54g0RshVU8fUYmjtmrL20Ojc1WOk8HvMtEXvbkO?= =?utf-8?q?sdrsaooSfjVoc+lpMlY4mFXN7zD2ccGHrCLWc1WnbuNEpbrLuXD7S0xD1ZPTMw+29?= =?utf-8?q?ReaF1UZvUj9p7hTvRJz2yvgu6Dz/nqvqsPYgSIkARwAVxrK4b9qa4SEO0AqW/AeAC?= =?utf-8?q?r/OEW0/2LQhDQtEGhPmiyrIOUyUn7HH87Ktyi1zuHTanNJ3UkoQvYiiXHqGX6MafS?= =?utf-8?q?D7Gihv+wlqvvACjBSmuTZSEupQCHIkgt8OqENK1OVzkX6HzkhcQnPF5CHsn06dfpD?= =?utf-8?q?YQcvJXnu7bmkS8TATTQrUKJIhflkQsKSWPZXH3ubS7PEQ/hfmvhIfIg4ZOqasGsNF?= =?utf-8?q?kTz74HdfAqLRz/3LOdM7lEo1N/J6qDc2LEvKNfPB+Jzp8CA4TkmL4jw6EavLLX3VF?= =?utf-8?q?mUSQNe9NfOP91nQpHdNGKEhVifwxfZYP65RTMnGJuYa60TRD2k5C+MN3iOxdU+NLS?= =?utf-8?q?SBykcNEGejx1ErItojMxMDgIQKbjvvZQgfdsyVbMH1G4wViwYrdlpVlrv6mxFhwpv?= =?utf-8?q?k23mTaLkF+xndAhMVwyY/KlOIDoolsXSPDZ/yIH0xyooki+46lhE9f4m2zvzQWqOE?= =?utf-8?q?N5lFMMkKFAJ3+qXz5TgetqpWXv3mfy9YLflSXhCRDKX8tpNR/+6xcH1O68lPoMtXZ?= =?utf-8?q?vA1oEWJoC1TvOgibij8JO9MTfBjiF4mnfkymna/qqSjkI9QopJkfTsB6etM/tt8w4?= =?utf-8?q?qV0dzEXfQi4Ul9ZNsJZbkSh/XvQ96OhQAeKjnyh9Ud7/vftFa6hoUhkwVVH0/Bz2D?= =?utf-8?q?CGISaIZ2OjF34ijv1OUiwaVDWU0NM4jbKmAQRMJpq81/S8wE2tidkCyEoHnnb+BR0?= =?utf-8?q?loLWOYv8MCtTxpIhj8dYasMu59sk+rTyQx6rwhHznhzzw/nKfSo4RAld4G0p0KZBz?= =?utf-8?q?dmxFavo5auRVBjoaiq8y9Ly/+DmXElJIQVCcAm941OkTICD6YfxhjmrHnjFKSnM9G?= =?utf-8?q?S8eflK2vGvW06wBv1he2aOr5r99sUexe1xKi76kjuisY/btOlyqdJoMskPG3Z5qRI?= =?utf-8?q?hifnbAP8xTi+AfLB2IZBqFPc2ZF8/OYN10W5f6JE6biY/97mEVUyvOORS4evoVyDs?= =?utf-8?q?IbNZoyJlWhDWHHM3FZd4vImZvN1QQzkqnY0S9WdusXgvZBoNUpaZamJqNb9rk+Lb8?= =?utf-8?q?/AQ5LVLGQXzTsi0gWCqdbWh+KV46nUCN1ghnpl9K29x9Egph3+65PZxXtzvfBOAyE?= =?utf-8?q?2JqGGMXsYcvtzmW65oVKKwyhfoIgXs50Km8Gw167+2nvgQ4Gpo7RTPt7QaQRy5OKo?= =?utf-8?q?AsMjtCOj0XS1?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c361aef4-9c84-4870-d8f8-08dd4b38a64a X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2025 07:41:24.0319 (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: qjaSpochQ149WaktwGkaXzA62kvpBozrCSCs++vMbj5PQv0JrrguvJC1ByAJl1637jnQQYnBcUXMUJloQd75iQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10865 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_234127_675356_79C77134 X-CRM114-Status: GOOD ( 11.81 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Peng Fan Add i.MX95 Logical Machine Management and CPU Protocol documentation. Signed-off-by: Peng Fan --- drivers/firmware/arm_scmi/vendors/imx/imx95.rst | 737 ++++++++++++++++++++++++ 1 file changed, 737 insertions(+) diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx95.rst b/drivers/firmware/arm_scmi/vendors/imx/imx95.rst index b2dfd6c46ca2f5f12f0475c24cb54c060e9fa421..78a09cd8102becd5584d28bdef18df2d77fb7e7c 100644 --- a/drivers/firmware/arm_scmi/vendors/imx/imx95.rst +++ b/drivers/firmware/arm_scmi/vendors/imx/imx95.rst @@ -32,6 +32,461 @@ port, and deploy the SM on supported processors. The SM implements an interface compliant with the Arm SCMI Specification with additional vendor specific extensions. +SCMI_LMM: System Control and Management Logical Machine Management Vendor Protocol +================================================================================== + +This protocol is intended for boot, shutdown, and reset of other logical +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 another +LM. The LMM protocol provides functions to: + +- Describe the protocol version. +- Discover implementation attributes. +- Discover the LMs defined in the system. +- Boot an LM. +- Shutdown an LM (gracefully or forcibly). +- Reset an LM (gracefully or forcibly). +- Wake an LM from suspend. +- Suspend an LM (gracefully). +- Read boot/shutdown/reset information for an LM. +- Get notifications when an LM boots or shuts down (e.g. LM[X] requested + notification of LM[Y] boots or shuts down, when LM[Y] boots or shuts down, + 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). + +Commands: +_________ + +PROTOCOL_VERSION +~~~~~~~~~~~~~~~~ + +message_id: 0x0 +protocol_id: 0x80 + ++---------------+--------------------------------------------------------------+ +|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 + ++------------------+-----------------------------------------------------------+ +|Return values | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|int32 status | See ARM SCMI Specification for status code definitions. | ++------------------+-----------------------------------------------------------+ +|uint32 attributes |Protocol attributes: | +| |Bits[31:8] Reserved, must be zero. | +| |Bits[7:0] Number of Logical Machines | ++------------------+-----------------------------------------------------------+ + +PROTOCOL_MESSAGE_ATTRIBUTES +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +message_id: 0x2 +protocol_id: 0x80 + ++------------------+-----------------------------------------------------------+ +|Return values | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|int32 status |SUCCESS: in case the message is implemented and available | +| |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 function in the | +| |protocol. For all functions in this protocol, this | +| |parameter has a value of 0 | ++------------------+-----------------------------------------------------------+ + +LMM_ATTRIBUTES +~~~~~~~~~~~~~~ + +message_id: 0x3 +protocol_id: 0x80 + ++------------------+-----------------------------------------------------------+ +|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 machine. | +| |DENIED: if the agent does not have permission to get info | +| |for the LM specified by lmid. | ++------------------+-----------------------------------------------------------+ +|uint32 attributes | Bits[31:8] reserved. | +| | Bits[7:0] Number of Logical Machines. | ++------------------+-----------------------------------------------------------+ + +LMM_BOOT +~~~~~~~~ + +message_id: 0x4 +protocol_id: 0x80 + ++------------------+-----------------------------------------------------------+ +|Parameters | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|uint32 lmid |ID of the Logical Machine | ++------------------+-----------------------------------------------------------+ +|Return values | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|int32 status |SUCCESS: if LM successfully booted. | +| |NOT_FOUND: if lmId not points to a valid logical machine. | +| |INVALID_PARAMETERS: if lmId is same as the caller. | +| |DENIED: if the agent does not have permission to manage the| +| |the LM specified by lmid. | ++------------------+-----------------------------------------------------------+ + +LMM_RESET +~~~~~~~~~ + +message_id: 0x5 +protocol_id: 0x80 + ++------------------+-----------------------------------------------------------+ +|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: if LM successfully resets. | +| |NOT_FOUND: if lmId not points to a valid logical machine. | +| |INVALID_PARAMETERS: if lmId is same as the caller. | +| |DENIED: if the agent does not have permission to manage the| +| |the LM specified by lmid. | ++------------------+-----------------------------------------------------------+ + +LMM_SHUTDOWN +~~~~~~~~~~~~ + +message_id: 0x6 +protocol_id: 0x80 + ++------------------+-----------------------------------------------------------+ +|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: if LM successfully shutdowns. | +| |NOT_FOUND: if lmId not points to a valid logical machine. | +| |INVALID_PARAMETERS: if lmId is same as the caller. | +| |DENIED: if the agent does not have permission to manage the| +| |the LM specified by lmid. | ++------------------+-----------------------------------------------------------+ + +LMM_WAKE +~~~~~~~~ + +message_id: 0x7 +protocol_id: 0x80 + ++------------------+-----------------------------------------------------------+ +|Parameters | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|uint32 lmid |ID of the Logical Machine | ++------------------+-----------------------------------------------------------+ +|Return values | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|int32 status |SUCCESS: if LM successfully wakes. | +| |NOT_FOUND: if lmId not points to a valid logical machine. | +| |INVALID_PARAMETERS: if lmId is same as the caller. | +| |DENIED: if the agent does not have permission to manage the| +| |the LM specified by lmid. | ++------------------+-----------------------------------------------------------+ + +LMM_SUSPEND +~~~~~~~~~~~ + +message_id: 0x8 +protocol_id: 0x80 + ++------------------+-----------------------------------------------------------+ +|Parameters | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|uint32 lmid |ID of the Logical Machine | ++------------------+-----------------------------------------------------------+ +|Return values | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|int32 status |SUCCESS: if LM successfully suspends. | +| |NOT_FOUND: if lmId not points to a valid logical machine. | +| |INVALID_PARAMETERS: if lmId is same as the caller. | +| |DENIED: if the agent does not have permission to manage the| +| |the LM specified by lmid. | ++------------------+-----------------------------------------------------------+ + +LMM_NOTIFY +~~~~~~~~~~ + +message_id: 0x9 +protocol_id: 0x80 + ++------------------+-----------------------------------------------------------+ +|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 updated. | +| |NOT_FOUND: if lmId not points to a valid logical machine. | +| |INVALID_PARAMETERS: if input attributes flag specifies | +| |unsupported or invalid configurations. | +| |DENIED: if the agent does not have permission to request | +| |the notification. | ++------------------+-----------------------------------------------------------+ + +LMM_RESET_REASON +~~~~~~~~~~~~~~~~ + +message_id: 0xA +protocol_id: 0x80 + ++---------------------+--------------------------------------------------------+ +|Parameters | ++---------------------+--------------------------------------------------------+ +|Name |Description | ++---------------------+--------------------------------------------------------+ +|uint32 lmid |ID of the Logical Machine | ++---------------------+--------------------------------------------------------+ +|Return values | ++---------------------+--------------------------------------------------------+ +|Name |Description | ++---------------------+--------------------------------------------------------+ +|int32 status |SUCCESS: if LM successfully suspends. | +| |NOT_FOUND: if lmId not points to a valid logical machine| +| |DENIED: if the agent does not have permission to request| +| |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. | +| |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. | +| |Bit[7:0] Reason(WDOG, POR, FCCU and etc) | ++---------------------+--------------------------------------------------------+ +|uint32 shutdownflags |Shutdown 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] 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. | +| |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. | +| |Bit[7:0] Reason | ++---------------------+--------------------------------------------------------+ +|uint32 extinfo[0,20] |Array of extended info words(e.g. fault pc) | ++---------------------+--------------------------------------------------------+ + +LMM_POWER_ON +~~~~~~~~~~~~ + +message_id: 0xB +protocol_id: 0x80 + ++------------------+-----------------------------------------------------------+ +|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 machine. | +| |INVALID_PARAMETERS: if lmId is same as the caller. | +| |DENIED: if the agent does not have permission to manage the| +| |the LM specified by lmid. | ++------------------+-----------------------------------------------------------+ + +LMM_RESET_VECTOR_SET +~~~~~~~~~~~~~~~~~~~~ + +message_id: 0xC +protocol_id: 0x80 + ++-----------------------+------------------------------------------------------+ +|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:1] Reserved, must be zero. | +| |Bit[0] Table flag. | +| |Set to 1 if vector is the vector table base address | ++-----------------------+------------------------------------------------------+ +|uint32 resetVectorLow |Lower vector | ++-----------------------+------------------------------------------------------+ +|uint32 resetVectorHigh |Higher vector | ++-----------------------+------------------------------------------------------+ +|Return values | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|int32 status |SUCCESS: if LM successfully powers on. | +| |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 | +| |the reset vector for the CPU in the LM. | ++------------------+-----------------------------------------------------------+ + +NEGOTIATE_PROTOCOL_VERSION +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +message_id: 0x10 +protocol_id: 0x80 + ++--------------------+---------------------------------------------------------+ +|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 supported | +| |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 supported. | ++--------------------+---------------------------------------------------------+ + +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 for the LM the event is for. | ++------------------+-----------------------------------------------------------+ +|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 ============================================================== @@ -436,6 +891,288 @@ protocol_id: 0x81 | |0 no button change detected. | +------------------+-----------------------------------------------------------+ +SCMI_CPU: System Control and Management CPU Vendor Protocol +============================================================== + +This 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 or +Cortex-M cores). +Note: For cores in AP cluster, ATF will use CPU protocol to handle them. + +The CPU protocol provides functions 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 exclusive +to one client. + +Commands: +_________ + +PROTOCOL_VERSION +~~~~~~~~~~~~~~~~ + +message_id: 0x0 +protocol_id: 0x82 + ++---------------+--------------------------------------------------------------+ +|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 + ++---------------+--------------------------------------------------------------+ +|Return values | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|int32 status | See ARM SCMI Specification for status code definitions. | ++------------------+-----------------------------------------------------------+ +|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 + ++---------------+--------------------------------------------------------------+ +|Return values | ++------------------+-----------------------------------------------------------+ +|Name |Description | ++------------------+-----------------------------------------------------------+ +|int32 status |SUCCESS: in case the message is implemented and available | +| |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 function in the | +| |protocol. For all functions in this protocol, this | +| |parameter has a value of 0 | ++------------------+-----------------------------------------------------------+ + +CPU_ATTRIBUTES +~~~~~~~~~~~~~~ + +message_id: 0x4 +protocol_id: 0x82 + ++------------------+-----------------------------------------------------------+ +|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 bytes | ++------------------+-----------------------------------------------------------+ + +CPU_START +~~~~~~~~~ + +message_id: 0x4 +protocol_id: 0x82 + ++------------------+-----------------------------------------------------------+ +|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 + ++------------------+-----------------------------------------------------------+ +|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 + ++----------------------+-------------------------------------------------------+ +|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 address. | ++----------------------+-------------------------------------------------------+ +|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 successfully. | +| |NOT_FOUND: if cpuId does not point to a valid CPU. | +| |INVALID_PARAMETERS: the requested vector type is not | +| |supported by this CPU. | +| |DENIED: the calling agent is not allowed to set the | +| |reset vector of this CPU | ++----------------------+-------------------------------------------------------+ + +CPU_SLEEP_MODE_SET +~~~~~~~~~~~~~~~~~~ +message_id: 0x7 +protocol_id: 0x82 + ++----------------------+-------------------------------------------------------+ +|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 | ++----------------------+-------------------------------------------------------+ +|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 invalid. | +| |DENIED: the calling agent is not allowed to configure | +| |the CPU | ++----------------------+-------------------------------------------------------+ + +CPU_INFO_GET +~~~~~~~~~~~~ +message_id: 0xC +protocol_id: 0x82 + ++----------------------+-------------------------------------------------------+ +|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 runmode |Run mode for the CPU | ++----------------------+-------------------------------------------------------+ +|uint32 sleepmode |Sleep mode for the CPU | ++----------------------+-------------------------------------------------------+ +|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 + ++--------------------+---------------------------------------------------------+ +|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 supported | +| |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 supported. | ++--------------------+---------------------------------------------------------+ + SCMI_MISC: System Control and Management MISC Vendor Protocol ================================================================ From patchwork Wed Feb 12 07:40:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 13971292 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F0361C02198 for ; Wed, 12 Feb 2025 07:45:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=YCeOWA9UN/RDDhAp+34wqyPk+qOXDn/GjVSVBkqyfjc=; b=qTjG9K6w/dZGYjufk/zcdN/Z3u OFOJbEuk5VIjcNJYSqkSAiDgBKKG+fPUg1rbdFWLGibQ5Tj8SXMx0yfAj+3pqgZ/7hS3XGEuU/Cai 9Dlj/G8/QqNrjZPTR4OC8Eju/7soB8KbFoD6tHKC6AztPGxSgZD/hsB+n1rqNztbLUsqmqT1OngKh g8FeNLOP/cv7KkGNp/mpPUNZrs/5+odcB+seUB3sWIbBq+x05BA/Pvthc+RW3JSMrjlhM+IN4qY9B INGKiCNBqW6lrtWqLI4PWTWM/lFo9H0HpuitHfLKaD9pr8DMI/LZou2DdFjD6h4NV27fKDwI5SnFq 5cztcK7Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1ti7RH-00000006WP6-1Gun; Wed, 12 Feb 2025 07:45:43 +0000 Received: from mail-vi1eur05on20623.outbound.protection.outlook.com ([2a01:111:f403:2613::623] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1ti7NH-00000006Vbz-1bG3 for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 07:41:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=D4lm9ANlUbTkFtZfH3KY3MZJPLxg2/zATHhsMeCHh05vSbtp+nwVrJe1TkXNZkyO5gAtnNGOhlooCjNCliIf7v5YXE0l/2ETSCY46azX4x2xsTP4eTkCZBMSTj58BWONYx8p8fEXHDImbkR0GMQjt+kpnSH+nNRnGFV3zJykB+K3LLU+XoyVs6HGTLaM3L4EJmc3Io0+keA16gyUYf9wGwa5lckFl4e1+KpwzFduufsmhT36wftbZMdbGLd819WgSSu/ZT3Wb0oq/n4NyZ2PT3w4gxE1hPlXQRzBvG7+drKX5YORIgqgcm1z4NtdbrsThHx8bDKp0WmJzHveAH6Aag== 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=YCeOWA9UN/RDDhAp+34wqyPk+qOXDn/GjVSVBkqyfjc=; b=tsKWrBOypanvNuVgV2lgDMaiSHfWvQ+3o/NZ4Qt1S975vgAUpz/zavYqM4ziIdM68AksrGzRNAMDIsY1SwL+SD+OQxzQj1AKYlJ5RPyz9c58k8zZEaSnlDSDoJdFJC4aVRxS6gnYpsZkoDH+5vzFeUbyQpsHWBLnO0/xxQ/24LPUNMmRUpffPgHTXkwLIKEtiX9LPQflNJFqlQMCRS/5Loifm2JFRoOimrFUDbxAr0saoUjHoRa4u1hqsn7T3ymcAGVxY3vvcSZRp5YTLIc18sw8YBeUsNkKR6Ge3WF4dtrQixkpiEsxJSNfo8EEf2E1LFsi4d0wna66m07nUCPudw== 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=YCeOWA9UN/RDDhAp+34wqyPk+qOXDn/GjVSVBkqyfjc=; b=n/6mClhREGN9A0+XvbpAAlp5sRic3GTmppca7sn3kJl2H5qeCMBzKOOzTdcPPY96VvHhVpo5qJIeCMVpdON7tr+S6aUf0M/uQh92L7YjdoAa7LsF6tiF2WM1nb61QevD/2hVgvHYQpXnJ/Ix65YBaHYsgpDYOCAMs2CYA4q1LyR0gaQp8tbt8bNhlgzOc2la8ycKsRS5+7IfjKEaOz6Omvd/Y3p4zdsmIW+FjmsOlZQG0AJZ36VRxEcSmuispYgG8TVP08i+qYzHOXJ9/Kq79oAnWqPQgZh4tmQ/W+7KdAprjlSDEUeveMX6LEKti5Dd2PQjQ0EQRpjZrqwQV1W1Og== 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 PA1PR04MB10865.eurprd04.prod.outlook.com (2603:10a6:102:48a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.18; Wed, 12 Feb 2025 07:41:29 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%3]) with mapi id 15.20.8445.008; Wed, 12 Feb 2025 07:41:29 +0000 From: "Peng Fan (OSS)" Date: Wed, 12 Feb 2025 15:40:24 +0800 Subject: [PATCH v2 2/7] dt-bindings: firmware: Add i.MX95 SCMI LMM and CPU protocol Message-Id: <20250212-imx-lmm-cpu-v2-2-3aee005968c1@nxp.com> References: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@nxp.com> In-Reply-To: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@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=1739346036; l=1729; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=1ThZFhQdOmfZO/coVtUZEj/sQTi7Nxb7EXJHWilriCM=; b=HpJ22rh4ZipXRqo2mJhm8qeO26ZwWdMZ5tegvfHuorl25nXEv3Ny+TiQrD3JkrRs8t8kvseoH CwM/AETMLtqA9SG2U9blqfRVEcPTVqntYQQbRgKC9cgXKDnkcTyquh/ X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2P153CA0014.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::6) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA1PR04MB10865:EE_ X-MS-Office365-Filtering-Correlation-Id: 4bff43ab-910f-4719-74c6-08dd4b38a95e 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|7416014|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?TypRMGv798cLz0/5GlxUGqBf0AVjtr3?= =?utf-8?q?Vs61d1kBXqzgpDy/Ggu+1/ppjKhgup+htA6wrdlD+sAFL2u80CittEckFL/w37cFs?= =?utf-8?q?qM3+smGsv9U3eR1Y5F3ww/W9BsmfCFHKMuvmFk9BIADWM5f8NEhYSMfBK18iC51Pc?= =?utf-8?q?tlntz+ABPNdJm9haebNHUreNGFJ8rSLHqbj9czBFXXy9y1Nfkhg7lCW1cTIqaGetQ?= =?utf-8?q?EBryJDo5TcDlrQKuM1PE/CMWrppiU/wB6xROWEt/tAhKRPUgunookhOKl+iFQRFx/?= =?utf-8?q?Qtm/HgBHE3WC5X/h1M7hlISFNceYCW/xe8tqqeX+xFbEdSqdA2hc/DnJBrTqdpy/a?= =?utf-8?q?KWUccWj0yd3iFoLeDP5kxD7eZgX0nEqzpRBTE6OtxJewo9xixF5ySmF+3c/caOQj1?= =?utf-8?q?R56lLxTuyskl8gaFwFTFYAETDpb6cAQvYqr1oVeyuXivNUIa48A7Lm7lGraQBTspI?= =?utf-8?q?5ICVXeZdX/02FoK5u4ThBzuRj5VASy41wDVXPBXxUNu0OIC7z2I1rdcAAOP7IOy07?= =?utf-8?q?rhkJOB7j1cXmbRP2H1NP4divbJeWsvjFd+DPtNocXC4TJRs/mtcckz8tg47gYHFag?= =?utf-8?q?OvuQwp0BS8sTSrDENvN/fT9p5cyvn+jrkwkzaSF6vJoUdJ2Pbm+d/KGvLscFm9RSn?= =?utf-8?q?ivVJnk5lemqOGeaCuD9p/ADk7tnX2Bdy2ug6hT6hPaWtisG2XpEk/71dTYqXhgysd?= =?utf-8?q?T7GhbQQNXWvsM28/EvsPpyfhiZoKCTM9n/Bp7hSI9l221p6P3F1jfMNDZ+ZSXs0DG?= =?utf-8?q?Tuz3wv5rTtT9cHMld4qlLHy6ELI6/Vz74JC3rSmhKczK/nJsenIfaoWKzhLk9J3Sq?= =?utf-8?q?ulTxdI/p9qXoEqLdBBdBC/YzYcqsF29J06Uc3YWqinxlHRM0vhapjXKg0MEmgWDly?= =?utf-8?q?6RmbVswTjtcMQeWwX7C/YxfpSQWqZ3AxYuiAEMnyCP2w////RCNzmMam9kWdQC/S9?= =?utf-8?q?gowKYnLdBeMpZsef5FhL1n1ib+voYUSdWHTfWEvLn4Jimw1O1f+kq3wathvtRqzRr?= =?utf-8?q?9CM6vy7Ii4T7h/Xt0V9Y1J1vw53RlSyBRPZb88Jyg2YfNOEmEQcprT7ladPkmJPF2?= =?utf-8?q?yR9v1zNnh+wRVG7Xxbmu0XwX7+siR62Azlgle0Br1l8FNBU9zmUjbzRWJLGGXGQNV?= =?utf-8?q?QvB9B7TfoTvjR0JXYkkULd9diXRwq0kuUKra0ImQSPj63xxODMkl04QVPYDtcJ3CH?= =?utf-8?q?i+1zkT1jQXaDEO1GgIh8sk2Ae18no37r3pBp1l2MgZhxs8gfTJkIqx2bvErttUutb?= =?utf-8?q?f3rLYglBu+zqZeriHqnAOQ3D0Z4AFpjOlUVOFzqLTBhO+bfcg1uCyvbsVQnRsGvuM?= =?utf-8?q?4CouiuM8nJszLKMydIjvLbpw0RXxz7yR9/GAmiqeVNXO5RSI69fgX0UrImw6FXGHQ?= =?utf-8?q?g1RFfzxSnPP?= 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)(7416014)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?VHePGRlNKEy7FxIIGTGvsa/p/utb?= =?utf-8?q?pVy3BioEH0m5LpwERM+N6AgRs+iLVRhQtMg/boP40VNhmigMHXRPyPF8K/fi4ft0J?= =?utf-8?q?5KC/6MdYvggH+oDVaeqt91b6Z5M2X36jMY7ksyWc3hDBpbLIqgfJDMAlRqlX1FfIa?= =?utf-8?q?ND2ecD3JiCwRIe+AonGMP62l4gKuI+kZ0k6EoXLTe7TJAqjyLwQAbeB3zV/F71feY?= =?utf-8?q?5iq99yA3j1/p3lQHYJRAcO7TIKSVlY0P8H9ms24VbbYiIikYbzv0eP2Fq9V39FLe6?= =?utf-8?q?msVZjLY9sUYnbvMZu4xB2eEDkPB7ARrtL4h001Ovn383FYR+E2xoYiEEDx43I5ozx?= =?utf-8?q?e3025Fa3PD98Q+2hY0LQuvIwP+ahOVywDZ3hjvg6jW+g3VsSowQgR6VeOqDyEGHbi?= =?utf-8?q?k6tEWPMo/O6jFGBboCM2EcQvHUchYwp356oAP44zJygzts6ce6JD3iJ+II3n3bvn3?= =?utf-8?q?dVWKCpYh61rsMZFDvNEOlxZBjyITRau1CTG+YFk6gA+vVF/lW6cK1R+S3FxrNYgrm?= =?utf-8?q?+WktBW+aG+4Ahbi7ssTxwvkQBb+pybEdqPfkNkiDehw0ntNAwyySxaO7bqVAkpkIW?= =?utf-8?q?ZtBhzKYtpuTFXc+TTAbfgUf0etl5hiC3w7F3vXeFHZSwzMjssL8AUJ+bqiqOL3iJj?= =?utf-8?q?TFDQzcpf0hZ7Wq8JkcZWVTbclqqSQXKAuDep5MHrMoW2Q+kFRikPeDI3xZ76uft86?= =?utf-8?q?nHd4laBqv7BQqEKHsB+rOwSiD54Qo8ZWb1kGpo2R1euc2CqjSvWJ8Agwq0zwyhRfq?= =?utf-8?q?BzIbSJTRAZPNC27CXkkUiAM8hLxHPFM9RDPfZOy/icBlDxA04v1fwBBw3xmcNFwiX?= =?utf-8?q?Bopx2D+KRSTrpRZZL+Wx6k/jxIx+67vMn5oS6UESVdBsDWzoSLkMxHrGtB8j5oQT5?= =?utf-8?q?uMFBqqd5Bb9H0NwDmX+PH3+JA63J+K3rEdpmQA+idQRp9rAbL9qSOKG4+2cFRx6JN?= =?utf-8?q?yrMhvXEPceXSiMsuA4SiuFWTwiBFFOHNh/4EgYzW12tvQM7k6RqEfjvJP1M8sBdmp?= =?utf-8?q?a6RuvW4OfuepveS5XK91uJxpR9KNKNCkd6SnM8elFAXoJijxqn2k9HypHJhf41x1S?= =?utf-8?q?HPZg8cANddJPNvPdiYB7cjtwAnTkAhFR/oIBKT4+urRaw+3bNaZuD8mSLWhs4yNxX?= =?utf-8?q?gLngk7/3TpbriWUgHsboPz0DajxuZiCKKLLaTD7/u9baPU3y86N3JU6kGovrxK4oM?= =?utf-8?q?a7laTXKPgFBz73PzwQm6g7MlycNMMaQCEJ/g5HWI2QiGquCDUpHtvNEWcqpbWeRKU?= =?utf-8?q?XG/C2PKNeM/Ze6OS/bBTmXUcd3rHZtnn6wMZhwQKK1QQFgoEzRZyfDY6bI7PfI6VT?= =?utf-8?q?wORYAFNqUhxPz3/fNqSrRCe/7etfzuuhJD13UG5ixjeJutk7m0nXj660nx2jOj6K/?= =?utf-8?q?6tMvtuIiMP5sFm5ywVOPOlrDAlh8U8+tfPYVzvIL3OHamo/hWloXMBxuFDNLT5AkI?= =?utf-8?q?v1+KKlr1XPacSL9uxDok5ZAWHRC9JPtnCJixxFe1a+P8eddf+nc4ys0jdEyF4wPRC?= =?utf-8?q?tJC9oxcMiSMz?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4bff43ab-910f-4719-74c6-08dd4b38a95e X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2025 07:41:29.0921 (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: JA1rp9SzUgM6x3obZjSYnWBBmpk9p/f0CN/guxL2k0CL8W1ZeAJ5oJU5oidw51kMzxLsx/9H1BHisaMbeElXew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10865 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_234135_426365_2A5450D9 X-CRM114-Status: UNSURE ( 7.48 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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). Signed-off-by: Peng Fan --- .../devicetree/bindings/firmware/nxp,imx95-scmi.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Documentation/devicetree/bindings/firmware/nxp,imx95-scmi.yaml b/Documentation/devicetree/bindings/firmware/nxp,imx95-scmi.yaml index 1a95010a546b14b1d3d97aa990c0305a551f2620..75f63819285b191a815dc4287e34d299983b1c40 100644 --- a/Documentation/devicetree/bindings/firmware/nxp,imx95-scmi.yaml +++ b/Documentation/devicetree/bindings/firmware/nxp,imx95-scmi.yaml @@ -11,6 +11,14 @@ maintainers: - Peng Fan properties: + protocol@80: + $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 +27,14 @@ properties: reg: const: 0x81 + protocol@82: + $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 From patchwork Wed Feb 12 07:40:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 13971293 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 93B51C0219E for ; Wed, 12 Feb 2025 07:47:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=801NIo4+87ARYLa5R5Iu89WiaawZopw6CsikR4i6YvI=; b=HTxWFbbLr9ZFEX2ei6rbq5x83A LKO3IHAZOsNIXghpSIF8GS7y/saEJGUgJb3HDJMO+0Vt17VirguF95avRTgIAzyGchv3dExtHStOb nFZhv2VvyuzHdivnbYSea3CglM05vTgywhP8NfCtUJ8PbDTbfmzN7xHQaki2/rOju7jiYY7k1fD7A dE9y181RSy++wFp5Fiz442rGGpBoDkPqU1/R2nR2StUSwN2yEvKwOq2FHuc/605rUe/wBog2QQXOK iz8BzGviFyvlcpAKWLaI46Cr/j4eqb+i4U7T5Oq6rdESBI8FHAz3rPBgRmk3J+W1ZZye+OsoMsFMR c6fCfIVw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1ti7Sf-00000006Wfs-06DL; Wed, 12 Feb 2025 07:47:09 +0000 Received: from mail-vi1eur05on20623.outbound.protection.outlook.com ([2a01:111:f403:2613::623] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1ti7NI-00000006Vbz-3PzT for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 07:41:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PTUOYeQ2MfL/YrWIFzZ0JUENX++Ykw6gqGjXQB5myUZX/CabfTrMMJjTAkFG/omq1AgTyZIl/Hp3mniOEt4U382+XjfbDsvmgLF+H6d8M/qeALWKY5ygctNpnanB1z2oXFxG363yfdZKT1gtD9eASrx7o+Vr4IV3j5R4j7MZhDe3V4qCvmO18yOx+MxlaIMxtphgS1HOkjXKb3d37tPvFk7YGDxvaLq3bdWhITaAxsi8ZoiAvF34enwdXkkS1KWuiesuXEJAdBmEQ+a5dHrcCz1B25rMlTOEHxNashjWPfC1IBWUUSh+DYWFgJJTaAQ4Mu8xPQZWt63z1r2A4zHjwg== 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=801NIo4+87ARYLa5R5Iu89WiaawZopw6CsikR4i6YvI=; b=pjUGEfDnDIAZTT0xdx3rdGhjDEkT/L66x+9CwNi5NsHQfyhsHRJeM80ikeEM5OH+OcsGB7rwYt/KRSO3+3iEEpQm5k1JE1rbvSqHESPRQ0GQMd170+1xlszZBIYGwOoevxHMhDdTlDvBtkZLQoIyCOvABkyITKjfc9yobWUCsRDxuhsnLtiA2Doj8c1uW8mW+23erF/Ob51h5wX7I8QFU1pHEadpLNCQzl/o2EeU6ssn1n0scg94uXE7Y0tMFs+G0c7tSpykDRkL+QqWYCjCBd93uXmcSt04nCXleEGhhGw/83c098EZiPUSxq0dPpPo5ttKSMVw5sJZSzOQkLMYhA== 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=801NIo4+87ARYLa5R5Iu89WiaawZopw6CsikR4i6YvI=; b=UG+qV9OtNau9CpWWr/Pt1ZtE/jTXoYxM0fi0eJXUgSjfGnKdv1GWlOLemBvyqWkaWkiCJNGkj+pmyhxGNr7pACBGbpRSedyUeOXX78dBsteJ/5F/ojtDwdcEZSQs6jhuyYUl+bC2i69Fkl48ATqZ2kmulXHLlCEBUAj+drdcGA5c/pWJl1hDTD4c3u4MYU7I66aBWqS2wyylU963kiJwEfphJGswnUglxw85gHbbZpM00/72j8uig3z2dQgqxdmb1RDu7M3t/Zl9ds+UQybP+ppxIf1jy2VXhgs63bbwd89Ff3YtbRZzEGTEkjncS1B5HD4BQVoYiUEZAurH+cz0ng== 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 PA1PR04MB10865.eurprd04.prod.outlook.com (2603:10a6:102:48a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.18; Wed, 12 Feb 2025 07:41: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%3]) with mapi id 15.20.8445.008; Wed, 12 Feb 2025 07:41:33 +0000 From: "Peng Fan (OSS)" Date: Wed, 12 Feb 2025 15:40:25 +0800 Subject: [PATCH v2 3/7] firmware: arm_scmi: imx: Add i.MX95 LMM protocol Message-Id: <20250212-imx-lmm-cpu-v2-3-3aee005968c1@nxp.com> References: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@nxp.com> In-Reply-To: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@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=1739346036; l=10648; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=Vvy9asaU//yZ2UynoNHoDkay3kqMP0A6OlYkMhIlOH8=; b=qNIcPp9070KDtvnBnIAxa0hLp/ydAYn1tKYCqL6ipxXsVGs44rayEoIqFM5C8AJ8rSFAnCnWe 6nqJK4kbNVODLYV5OMPVYxnY5121p3pw03k151dv4D9fH70JuKTTpXp X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2P153CA0014.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::6) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA1PR04MB10865:EE_ X-MS-Office365-Filtering-Correlation-Id: 9b72627f-b4c3-4dd2-1b3e-08dd4b38ac3d 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|7416014|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?lTGyExQTlNFdgiqaNT+txXvj0VETLwl?= =?utf-8?q?gIfhnNu+ZobHw/JhlhuNrS7oMY59vL36z9/SCUctf+oFCm0Xx6AxMVz1R2ZiCq6Ui?= =?utf-8?q?deNxfKd2eEcS1GIhmqCah+chGif/1GvrvqHkhX6JDRqj3vlw0LH+/WIf1EuzfV7PJ?= =?utf-8?q?oWEbbRg8m2+MroW4jPHzEsKSNG78Lp4xrJltYXxiWCik0RfchsVSREVRfXS0JXlpC?= =?utf-8?q?6NXLasJqIjaQ2rzBjAmeZvYMZsFMpWeGLwWuvJ+HZ7Ww/rdF6Y1N+eEtNkcNy8ft1?= =?utf-8?q?XwoSqtusMpLpk/8CyuFOc8eHQGwy7ZxMO/uwqpmXopqtCh9ubtnCE4OVyWCbq9+va?= =?utf-8?q?I76gQhd1gK6v7phgEGt5ssg+6FLDaN7kT3Uz5txEizM9Sn9wkAnxNxR0Ti+qOvdfE?= =?utf-8?q?7E7/sm21h1Ity469yww0rAytGcu3K0NT+6dPyBmH5vMkAfXS0ZL8N8TSy2g+IEAjQ?= =?utf-8?q?pxZ9oDRTnPKP6Aza72+B9rfRWMp2mk9kdGR37xW44r1aE+UqlA0yDWZ59bhJIL78z?= =?utf-8?q?a+m502QAr2KaIYC4qmRQu0+3Q4yE7KZBLVSRmwlWYcG/gDQ18qKFR4LvbB6YTbHVD?= =?utf-8?q?EH/cHfDNyIIhqr7kPRZPbBvTYX7GwY6vaSFwVI2U8iKyRoAxCdd373QBUFu14neKM?= =?utf-8?q?xv8cLPYKbBbApqtTeyHQnwEppMA565Uvh2Ic8Ivh4e1BALGLg+Zgk2WJ+HYFXuKNp?= =?utf-8?q?CjU2PLAOCNESOafPmRDWnnqyzw60sNeNYbiupdAJLOE3/XuRWw6k5yDDwjl1dmEez?= =?utf-8?q?Os3o/co7vb3rzQpKtjfghFNuX+pqhgMze3ium8BGi8dG9COZu9at5LU/OHZa7obTm?= =?utf-8?q?OjtMqCdyc6r6gpf257vCJXJnmUMgbyZlEOiqctaEJucR0tjTzKiX8IIgI/pPRKbdM?= =?utf-8?q?O3jQrxqmr/Hdp60+j9904vUjV2WQ+cK4q6xn23v15/1u+mT81eHAWHnO71EmkyoJF?= =?utf-8?q?Qnou+hwgN163sQnW0ckekTqJbWnp5J2jIjwjDDZxvFM/pflpXAfh9YGpRhsURUHMz?= =?utf-8?q?xqrHWSGSMTDHRXD03Rrv8ULh6R+PH3YNm0FbUUvQiffcndaHhKf/aL1syMLrbO+nf?= =?utf-8?q?d6hrm5DWn6raRfbY+EK38osMkz20j8mclieUmwdGK2SR1WaXvuHw3znqW93BNrp8q?= =?utf-8?q?yH9/1uu781PHiDh4vBDUJOKYA3Ghi7cSstqRqr5xswWcMuXt5JX/PNqKiBvJiWzvW?= =?utf-8?q?hGHl4L4xIFjxx6uHs8yV8n6U0W4ash9d6j8wyGvdwuGRqyPFtcDvtKrLQvmkbEa/+?= =?utf-8?q?APPdu00kuXFvsVqeSl+p0pfvy0VdQRfTEZPtOT4RjadvjiCFvFTC/zA+J6GH+t+be?= =?utf-8?q?aS8qvnDLq6A3MGzvQcCv6Pk5tj0XxSY1SFi4cggBnyUk13ccNzwyzAC21tZWccEHT?= =?utf-8?q?nJeUGoBFebc?= 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)(7416014)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?S+q0MEdvJshY6lvHZqtC1EaAnmKp?= =?utf-8?q?uXMQpFW+f8TLfKVtdD011IY/7Tet8/J738oii7BwEFyLieBZpU5cHVZV9iGyG99I1?= =?utf-8?q?f9cy6yvb2s8BSc+z8e7YqF+jsnLEvNHsREf+6JO4a5PSYPGbhm23r6ESTpxm1VduS?= =?utf-8?q?Z0MnlC77rjhOVWgmKbC2QQzPdo7nUnzKtxws7YCNGJcsJhv4BxCsjs5azqWlZg26F?= =?utf-8?q?YSVkXXxP3BFZGogRcsUHrwpJCgbwC8zccAJXokNjKhOE/H48gbYWQUAEjosS/qlcG?= =?utf-8?q?mGCc12GOp+FTBfolcg1jDqWPkU5gi0J/l6SVMnGgUkwYd9/g0/HpLLMRxQZkuxfVO?= =?utf-8?q?RdhF1aC3K3qEPd86orqMR6YL4tnJ1/bDVkfBkb7XMuVoriB1Lae+khTL8eq80m3om?= =?utf-8?q?RM3XMlsExvgPgvWswTYRifkWT41YNpU9CJI58WwU/rlgzuplKz8X57nUydpChr8yv?= =?utf-8?q?jxSI50ytja6PUxYCmtUxHE80Qm+OCrdYEuYTradZ67NMI8TJjXoXBuvUCv3fJ3D9E?= =?utf-8?q?OOsUBlANxbsSUTYV763MgpRTIuEHELciskGqmK/0X4UQq3gMTsRMf66nGzhhe86Hq?= =?utf-8?q?YyiUQSsBLtu36LkJKkmwsiHdmG99nPjfAuTsUkOkTWQIeAJzKni62CkVc9NgqF3vR?= =?utf-8?q?FOgzNRqIy7ijNlCR2NWrFSvZjnh/rVaUckFV0tCPbj17VbirWDm8DeYU86kh2GT/n?= =?utf-8?q?seaR6pdlxEJninIXzp08Z9CR40G+aHcDcheGagsPw+D3bxcGsi4ow5jqgpvP24Ai5?= =?utf-8?q?fSHmoFC/a980CYgc4CXCIcGkaj1GiNDUvAcjyrcAssveNHEfHG+tKtvx1r6zNzhNq?= =?utf-8?q?tn4N5549xgAfNp0d1BBI46K8fg6USEtMkb0PwcPu4wF9Jal01mjfIQkON99Ii2rYT?= =?utf-8?q?2qqBQ3cYH69NA1wmj1EOZYWdDuqt8DcqS5s1kndH8wqSUWTYgPWOMcjAypZvuXA0p?= =?utf-8?q?INcvq2wJD3/5dilzVdgNd4Pq3M890x7nrEOiSojUuRmZ7dPuVlZ09wnE3F7pcQPiQ?= =?utf-8?q?nYUZo8nEaUcKY5X9NfTJGuP60RYFwOseV3VU1mWblez5f1dQY4bWY/Qv71p915go8?= =?utf-8?q?JVF6jx8VzruBrbczyunhTjAcI2a+eYmU8+zE0SHgAzPC2fmUAxRDvLVjajmkiOMQd?= =?utf-8?q?fizkRa6fBZvi8tw2bFj8NApgvtnYtC+MetOC1E3HzBmbdBfGEy4mfrFlpASS0Plrk?= =?utf-8?q?YQWkQzR8QoKG3w7wwyyoUjYXIfazbo2ghow6w7NFKRBXrFyA7Z8A4bRKpmb0mXuri?= =?utf-8?q?YfXL1QQ8YRnQCKDKd7R8GY5Ar67/ZsntmgrDv0bpLKIeLWY7YcMNrv4gHx00P7DU3?= =?utf-8?q?lIjPfs80AyflFnpF1LoND4e4+POeDVmK2KC2SHS2UORzj5JX/gqel3ZhvOWYjSf+s?= =?utf-8?q?sYmg9RC6a2so2INO4opZOarfWnSbntOe/gJP4EP92pzB5d1DtzuhaqkrVV6kANubU?= =?utf-8?q?Bl/hefBAyZxcqnS53+4c61oDS4QVavJQVwhxQDZxwGAg5NO531p/lT2lYf7DP3H5G?= =?utf-8?q?zKFZiwZM1eWf?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b72627f-b4c3-4dd2-1b3e-08dd4b38ac3d X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2025 07:41:33.7688 (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: 6nrcWiARwi0ZHGvgU2Ef47N03yrydGnAI9TLA2cIyfpguBmZVjhHcUH1CNpWR4explNJlRnaulF3jxyZPM0LfA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10865 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_234136_870332_505E3D9E X-CRM114-Status: GOOD ( 15.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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. 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 | 270 +++++++++++++++++++++ include/linux/scmi_imx_protocol.h | 31 +++ 4 files changed, 313 insertions(+) diff --git a/drivers/firmware/arm_scmi/vendors/imx/Kconfig b/drivers/firmware/arm_scmi/vendors/imx/Kconfig index a01bf5e47301d2f93c9bfc7eebc77e083ea4ed75..1a936fc87d2350e2a21bccd45dfbeebfa3b90286 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. +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/firmware/arm_scmi/vendors/imx/Makefile index d3ee6d5449244a4f5cdf6abcf1845f312c512325..f39a99ccaf9af757475e8b112d224669444d7ddc 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) += imx-sm-bbm.o +obj-$(CONFIG_IMX_SCMI_LMM_EXT) += imx-sm-lmm.o obj-$(CONFIG_IMX_SCMI_MISC_EXT) += imx-sm-misc.o diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c new file mode 100644 index 0000000000000000000000000000000000000000..4b9211df2329623fae0400039db91cb2b98cded1 --- /dev/null +++ b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c @@ -0,0 +1,270 @@ +// 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 = 0x3, + SCMI_IMX_LMM_BOOT = 0x4, + SCMI_IMX_LMM_RESET = 0x5, + SCMI_IMX_LMM_SHUTDOWN = 0x6, + SCMI_IMX_LMM_WAKE = 0x7, + SCMI_IMX_LMM_SUSPEND = 0x8, + SCMI_IMX_LMM_NOTIFY = 0x9, + SCMI_IMX_LMM_RESET_REASON = 0xA, + SCMI_IMX_LMM_POWER_ON = 0xB, + SCMI_IMX_LMM_RESET_VECTOR_SET = 0xC, +}; + +struct scmi_imx_lmm_priv { + u32 nr_lmm; +}; + +#define SCMI_IMX_LMM_PROTO_ATTR_NUM_LM(x) (((x) & 0xFFU)) +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; +#define SCMI_LMM_VEC_FLAGS_TABLE BIT(0) + __le32 flags; + __le32 resetvectorlow; + __le32 resetvectorhigh; +}; + +struct scmi_imx_lmm_shutdown_in { + __le32 lmid; + __le32 flags; +}; + +static int scmi_imx_lmm_validate_lmid(const struct scmi_protocol_handle *ph, u32 lmid) +{ + struct scmi_imx_lmm_priv *priv = ph->get_priv(ph); + + if (lmid >= 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 = 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 = ph->xops->do_xfer(ph, t); + if (!ret) { + out = t->rx.buf; + info->lmid = le32_to_cpu(out->lmid); + info->state = le32_to_cpu(out->state); + info->errstatus = 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, out->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_boot(const struct scmi_protocol_handle *ph, u32 lmid) +{ + struct scmi_xfer *t; + int ret; + + ret = scmi_imx_lmm_validate_lmid(ph, lmid); + if (ret) + return ret; + + ret = ph->xops->xfer_get_init(ph, SCMI_IMX_LMM_BOOT, sizeof(u32), + 0, &t); + if (ret) + return ret; + + put_unaligned_le32(lmid, t->tx.buf); + ret = ph->xops->do_xfer(ph, t); + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int scmi_imx_lmm_power_on(const struct scmi_protocol_handle *ph, u32 lmid) +{ + struct scmi_xfer *t; + int ret; + + ret = scmi_imx_lmm_validate_lmid(ph, lmid); + if (ret) + return ret; + + ret = ph->xops->xfer_get_init(ph, SCMI_IMX_LMM_POWER_ON, sizeof(u32), + 0, &t); + if (ret) + return ret; + + put_unaligned_le32(lmid, t->tx.buf); + ret = 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 = ph->xops->xfer_get_init(ph, SCMI_IMX_LMM_RESET_VECTOR_SET, sizeof(*in), + 0, &t); + if (ret) + return ret; + + in = t->tx.buf; + in->lmid = cpu_to_le32(lmid); + in->cpuid = cpu_to_le32(cpuid); + in->flags = cpu_to_le32(flags); + in->resetvectorlow = cpu_to_le32(lower_32_bits(vector)); + in->resetvectorhigh = cpu_to_le32(upper_32_bits(vector)); + ret = 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, u32 lmid, + u32 flags) +{ + struct scmi_imx_lmm_shutdown_in *in; + struct scmi_xfer *t; + int ret; + + ret = scmi_imx_lmm_validate_lmid(ph, lmid); + if (ret) + return ret; + + ret = ph->xops->xfer_get_init(ph, SCMI_IMX_LMM_SHUTDOWN, sizeof(*in), + 0, &t); + if (ret) + return ret; + + in = t->tx.buf; + in->lmid = cpu_to_le32(lmid); + in->flags = cpu_to_le32(flags); + ret = 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 = { + .lmm_boot = scmi_imx_lmm_boot, + .lmm_info = scmi_imx_lmm_attributes, + .lmm_power_on = scmi_imx_lmm_power_on, + .lmm_reset_vector_set = scmi_imx_lmm_reset_vector_set, + .lmm_shutdown = 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 = ph->xops->xfer_get_init(ph, PROTOCOL_ATTRIBUTES, 0, + sizeof(*attr), &t); + if (ret) + return ret; + + attr = t->rx.buf; + + ret = ph->xops->do_xfer(ph, t); + if (!ret) { + priv->nr_lmm = SCMI_IMX_LMM_PROTO_ATTR_NUM_LM(le32_to_cpu(attr->attributes)); + 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 *ph) +{ + struct scmi_imx_lmm_priv *info; + u32 version; + int ret; + + ret = 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 = devm_kzalloc(ph->dev, sizeof(*info), GFP_KERNEL); + if (!info) + return -ENOMEM; + + ret = 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 = { + .id = SCMI_PROTOCOL_IMX_LMM, + .owner = THIS_MODULE, + .instance_init = &scmi_imx_lmm_protocol_init, + .ops = &scmi_imx_lmm_proto_ops, + .supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION, + .vendor_id = SCMI_IMX_VENDOR, + .sub_vendor_id = SCMI_IMX_SUBVENDOR, +}; +module_scmi_protocol(scmi_imx_lmm); + +MODULE_DESCRIPTION("i.MX SCMI LMM driver"); +MODULE_LICENSE("GPL"); diff --git a/include/linux/scmi_imx_protocol.h b/include/linux/scmi_imx_protocol.h index 53b356a26414279f4aaaa8287c32209ed1ad57b4..07779c36ef9a126907e26e304a8feca16fd60ab2 100644 --- a/include/linux/scmi_imx_protocol.h +++ b/include/linux/scmi_imx_protocol.h @@ -11,8 +11,10 @@ #include #include #include +#include #include +#define SCMI_PROTOCOL_IMX_LMM 0x80 #define SCMI_PROTOCOL_IMX_BBM 0x81 #define SCMI_PROTOCOL_IMX_MISC 0x84 @@ -57,4 +59,33 @@ 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); }; + +#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_boot)(const struct scmi_protocol_handle *ph, u32 lmid); + int (*lmm_info)(const struct scmi_protocol_handle *ph, u32 lmid, + struct scmi_imx_lmm_info *info); + int (*lmm_power_on)(const struct scmi_protocol_handle *ph, u32 lmid); + 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 From patchwork Wed Feb 12 07:40:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 13971309 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 70F94C02198 for ; Wed, 12 Feb 2025 07:48:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=gwJ6/lxr9FomupW0m1i8fOytNWU+gCFsnxkKpEd8NDk=; b=Slgv8jLhupwYEH5IFM/P8BkYyS S4L7F0W6uchLxbEKdJWPRpa6IGU4rmq/NFf+92r8AQsY7nPmFiJIIcgRKykTCyE4QHFOyJvBwf2iM ug1OIegSUsytvM+gk3BuoGdeK/p2wOlTAO1jUeU83Sv+UOtOSTF/LQPOexzOeDdRAbSMwpbUz7TrO 2R4U90KQiVvanvrRbHpLarlIUkdTvQxVEo/NBzEzFfLt18my172aBSMddyBCQJ/aKsLRdY7ebLC3V cZX1sYPnTGYbwW9vAUykddWqa2DW+/SOv9j9WXDnzM6bNe787ZdmNznRnISMPzG4BgjtiC2jeeS2n ZficCRZw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1ti7U2-00000006Wnk-3Xsv; Wed, 12 Feb 2025 07:48:34 +0000 Received: from mail-am6eur05on20618.outbound.protection.outlook.com ([2a01:111:f403:2612::618] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1ti7NO-00000006VeK-3Vz4 for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 07:41:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cjeK6kEW/VK7yjEuSOZjd5SdMSDQtLKaoirutmjA7T31xwlKwN/gpmAcMJ8S9Lse3afj85ZRHGboLdhzb2UwDowjcVUc3aWTxsCH1dEpLHlTLOTAxhZeQM2UYS6uBkdEAtVUeAm8wUW8dYeKI6ABbKYzlEzDNUEOCn0IiB4s5uhkLRt9s7esC6JvH2jBf35VMGu9oT8Wpc225TegtVDOP+H7K2tQmzpGPdQvjIvkg62G/j3Jy56SFkUfENX8jrGRAX38Fy1hdggo/IUvo+AnqdODoO4vlG+2QrhuCy8JMSGGSGoZpx0urvcreirRpHyKDpLSb+B/9CX7C9YsETJhZQ== 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=gwJ6/lxr9FomupW0m1i8fOytNWU+gCFsnxkKpEd8NDk=; b=Rh3ySw9n5WHsEjec8AC0IJOmC7I21v/KB/0KGUqbNHpNZzW51LBc5L1LWjpsttp5n7paZ8Pu2hU6oNCY7F30eSTs88LYVvXhXK0XaDT8p4rRm2ODeE+d5XemMoUh3XFacB54UdNXnkxj1R3Y9F9wacyTIYEU9c+RvmYNUAIN/o4A1GO19Z1GxtPnM4IOMUyZvkm1oV3ePPKcZMgr2C4/d3c2eCk41fNJuoQ4K3oUGO/WZbmv+tJCUVvo6X+DrUylksjY5tsAWp0rAwuwQFL6ub0xV1HXXoL4EZWlCEt823XkdCWYXznMgDE/09MA8C9ML9fZVScfQl6Gy2dsp6qbwA== 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=gwJ6/lxr9FomupW0m1i8fOytNWU+gCFsnxkKpEd8NDk=; b=LrnUpXcxjirta3fst6DpLHXyPreDFVUSDzFdjaqdW0WvMDyPjXZ6qlUb8kTWy4sysA/Mam0V7eIrXeclZTcUB/2ZANKYGOeOLuF0RcIZEkt/DX5h87E40+oPwZq7qPRfoWDwaYmkw3OjcE3JoL/DBYL+Bb5Qiz4dZJyGwMEZPYtKGiwYyikzgnv3CQxLv6tOkjWDwdzSuB66umTrrxeCDt5U6YTg5GnlAcEYDwQuymLPGFZHrvpDkFstihgBvWyheUnt6JrSy5YdIUvtIDjfEYIJcDYgZwGRTZ6E5JWQnE+taNBSffqVUyaORTMkfgGkNytX+Ks4Jj9oleD1H3cmNQ== 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 PA1PR04MB10865.eurprd04.prod.outlook.com (2603:10a6:102:48a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.18; Wed, 12 Feb 2025 07:41: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%3]) with mapi id 15.20.8445.008; Wed, 12 Feb 2025 07:41:38 +0000 From: "Peng Fan (OSS)" Date: Wed, 12 Feb 2025 15:40:26 +0800 Subject: [PATCH v2 4/7] firmware: arm_scmi: imx: Add i.MX95 CPU Protocol Message-Id: <20250212-imx-lmm-cpu-v2-4-3aee005968c1@nxp.com> References: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@nxp.com> In-Reply-To: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@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=1739346036; l=10406; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=NvFULzB1HrCABVbOpkyWAcBVXMReXmha9//xPqxA0GY=; b=l9oAkRR1pIEzmROiDzXNITKyd0in4P9MIeQBsOTb4sy3cnyNczlBh5AvXzPmWvj+xqmB1Z3VA QSkj82HcQD4Dkpjv8nM+CUYIJKZ2P5hvQqkEhqUA0qiO7FEoazwZp7O X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2P153CA0014.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::6) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA1PR04MB10865:EE_ X-MS-Office365-Filtering-Correlation-Id: 1fff6577-7ce0-4882-c380-08dd4b38af41 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|7416014|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?9cnqZs+9MRGz7b6RPxr9iAJfpGPIVqn?= =?utf-8?q?op6FXiSfohb1IfIpnpVos2m4vMUBXOpKLVu2o79TFqRU3UTUP6DMPTWZK03f1RYgk?= =?utf-8?q?JckCKXqPFxoqyeQyFUx3PUIoS4vOSs6VnPDTejdtm+f0og2QV1fP7yncHYorHsH35?= =?utf-8?q?Ulp0XD6kBBVYyrTXMzebc6rMUmitUTCLDQnbv1ZKNJMesO01F2x3V8te/r3AFItx7?= =?utf-8?q?6f3pRwEHx/Rm+WueToUwHOD6qAj/iNceMwuixRQCfWTz8ZuFHwIK051l6y9Ix4uFY?= =?utf-8?q?3i5Z5bfmRiAW6KhqiIgI6SuKRgy7xK227WoqSJnfvNvQfUoNpokYeYKNIRMBm328s?= =?utf-8?q?23jTaUygmQweZqV2FGzJJorcqHaKVcWN/9u6BQ5EAIQJuMJP2fySUNP4EHYGGIVCZ?= =?utf-8?q?3/tjWhy/XNg3lRuM8XJwCAEitfPIgdz4dbzth+JP1cX4Jy9xquszLxAd1zmkYOGnB?= =?utf-8?q?6vMDrFzNiJvtVDAHaNaxU8T0yUz7OcA/EhHaBctUnkOQvruYtOpQLG5xBv1i89ics?= =?utf-8?q?DCjyiaOSrS1qaUByPxd+G58ERs0RUUzvAWfzQQFVf35ZQo91B1QFq5UY9Wo1zOC5M?= =?utf-8?q?sNHqPLG/IYd47PZcIkD1preG9fkZCyRWrJ+XULC4QNwsPldR45cZpeoD8uXlAPPqL?= =?utf-8?q?QwCiSN3jIanmHdJvQCMXFaodNdScnJWTh4tGwQA2Odz8SlOkfg1eEq1JgysXIN90P?= =?utf-8?q?rVq9ASql4S8uowZSsTFiZwedYs0pFCIEYpJ1qKNELJz1oUsdn7ndZU1+IZp4VIh5n?= =?utf-8?q?DTkdR96LRXqshAmTUCVaTyYLn1qRL9XrvCPBV5I1hWqWmhzurKhqzFrzkcv0Vmq4U?= =?utf-8?q?3XLu8IFxGJIAV4h13aNxCjkxodscgNVuWR2TqfQQXU5Mczo5ySDDcYoTFXf03g/Q3?= =?utf-8?q?v8oNV66uVBmUNBpMirkzpSUWQG238WxjZiLLsO9WCSLxqIpkCgN0DquoywPDFH/2/?= =?utf-8?q?VD6lDA1soAVwhFVUnYA5Z6HqPbDrz42Zew6UkruKGWGhPf3EN8A12W4rg8osOZDrr?= =?utf-8?q?hAfAJIAwA1t4TzjifU1OsjJGlX2bO99NuXR8K7Hqo1zLWq3GNCdt0rRs+pNaIlH9w?= =?utf-8?q?rxiN93/cqiBxQfPAfQmzCzB3VvOCSzPL15tAJTgVKftVarlMVuAi/+vY9fJ0Uqjgl?= =?utf-8?q?+dUlOs2We0wxChlCq9/JSuwFcSZoBOKxHy+/APsLI9OPTrTu1FOA9v/hURhx/pOuR?= =?utf-8?q?9JaRRBiD+W6bl9qs6xW8SxgY1KVncpXukXKJwNikJmkTQv7E2T2DVQ1QsC58NzfYR?= =?utf-8?q?6JahDSX/xIuFUOIFKHSYUJGrGn9uAdjeg4ZvEicpAhsPZL7PVGxppbU5d40j1uaAH?= =?utf-8?q?u4dtFM++K/nPQ1TxdL9Jb038s4a8mH+riYHPtdcxQEUpfQ4GDk5NbkPPb9e6vSybY?= =?utf-8?q?7/+1f5ELEHL?= 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)(7416014)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?wdhp8cd+fOCWuC//HEOflcqqNLCM?= =?utf-8?q?ilCLgd+K7JWdoIc9IWE24IMeJvEi1YGsVLOP8Sg6yGRZtU7j/8cl2+6QP2C770Wpl?= =?utf-8?q?6E6q8qu5VVXJSuOfYNgsfnasGa5zG2WfrNOHaOdGTmxdw4FktCTj7/qR5XpCOrGbV?= =?utf-8?q?O85PWuM0k8HxYGszC6CKLmcoHHCg4Qkvc1yrOUbtBco1r0mL2lXtjz7vjRNZVSRfr?= =?utf-8?q?Gad4vSJ6F+VihlaHip6OcTLxzFAoNQJx8WLl62wM5+XZ2Z9BFIa5TIpM2e8IVTeTk?= =?utf-8?q?rNkqda/cWv7g0IWI2Ivgx29nwHUNr06Y6Mz2Dx4XO+rW1KJ1HGaPGkZ0xboR4kQaP?= =?utf-8?q?eNoRxn9jt9Rrvibi2JYuDu5zw9T91alUH/wW545qANBJpBuTR7o5LPJEEP7D7FTTD?= =?utf-8?q?HyLr1QcQsPq/0LSdaO/elZconVMhYcipjXuamCmaEkmZV/jHNm76bfEirC3WBEalR?= =?utf-8?q?4F8D2dA2WvqIfoP6lHUEoZHDzdiWaIHg9/bKajXIA1NWItpRWUhYM01pJUIZX/1Ki?= =?utf-8?q?kgB0KsIk/tiWIbXiY4NOyUlIc2JrJs00w8v/hSeg4CDAUDghgNdjt9IJ68ws/uV9Y?= =?utf-8?q?uTiW5ihxw84fWPnj1Bc1qD8FLgDeDm2bAxsIWUZjoCSuYmHY3MRzwn9wj2iM7RNDe?= =?utf-8?q?ny0RUICCCoTEcs32ZjlSt8ESzBYgQ2zB0UB76vBxlvl/NKMCRnQrgUADWD8dTNv6p?= =?utf-8?q?omjHvrLgag50ek69uL8BONp3Nc5pgWqYdNiyx8KZULdYBMs0+YQosyPQDr09lWj+1?= =?utf-8?q?sBKM/MV8GA7HdNbrqmtR6fn0TPgTfTk4yD3xpHwCPECurfEQIBQDXqdCw+/+CfN7G?= =?utf-8?q?IUHV61VqHmbivGQ0h1JXeeXEdSBsKImqEB3+tQxhnmG0IAaCWvq+SmNEQuGl9Zd+U?= =?utf-8?q?Zqou5XXMnI41wPTMu5PjCJTrLbFjm2TDg+cgrYVn7cHj/VwsZG0hgz8slsEsyAmV0?= =?utf-8?q?Ene/SuhPfnJBau3Ir9AZUazC989h02nfnwaaifC4Sl+hDUrlBdijVn1Ul2nuCr8Xe?= =?utf-8?q?7K2a4t2WSCBhmKDcYC8MbZF+owUnVE8ANXA6SIUQRF6egXSir2RzeQONpuqC8FA9G?= =?utf-8?q?ZycVD9nhgk0ZpIGykQg0I27fxs6Wrm6N/pIyyqFtBd/Q93niQDvLRoAyAw90PBagc?= =?utf-8?q?3B6oGg8vft9HjCpqwKhHpW9z4ym10ZueMZiqzXI/Mbt/lhixDnKWZX1GU2DyF7jSN?= =?utf-8?q?6m7yMoQnjuihbpVwbi0bBxmYHYUEW8s+pC1G6H0WwseTVyWhp6zB9qV0L2KqXYnRc?= =?utf-8?q?yGSo0uEZRpOIACeQgs5J9YowcrhDgTRUt35wq2uyy63HzKkk2q3GJMMLYYgBSFLgg?= =?utf-8?q?6Yoem1vF3Zf/iNz31UnHeyVMzvsAHcuFKZ7Vc91Qjk2BJvRZ9ooLMXosEY53WhjlP?= =?utf-8?q?DeYY0gf8zlh3WU1kkeJSLx5y8244I28GC698Eifiat4gH2RnT6NlvuUwvyxvCSMSX?= =?utf-8?q?qM7AUCpqWgbqilGgDVT4DCoWk10EMMsRYF8IkKjcy+VryGxaY2RagY4eXYaUbhHs7?= =?utf-8?q?Um/f0m6G06fL?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fff6577-7ce0-4882-c380-08dd4b38af41 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2025 07:41:38.8394 (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: XTq14Xx/KR32vngWvfaC7+IT+9TgSrUhJR9vGovO76RmcVtggl4DbRVkTJyQxJe2J3jLxwmll9bInXDjJ76W0A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10865 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_234143_041003_D14BE317 X-CRM114-Status: GOOD ( 15.23 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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 | 287 +++++++++++++++++++++ include/linux/scmi_imx_protocol.h | 10 + 4 files changed, 309 insertions(+) diff --git a/drivers/firmware/arm_scmi/vendors/imx/Kconfig b/drivers/firmware/arm_scmi/vendors/imx/Kconfig index 1a936fc87d2350e2a21bccd45dfbeebfa3b90286..b5f13d0e40155e485f4d1696e9550645d888ef44 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. +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/firmware/arm_scmi/vendors/imx/Makefile index f39a99ccaf9af757475e8b112d224669444d7ddc..e3a5ea46345c89da1afae25e55698044672b7c28 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) += imx-sm-bbm.o +obj-$(CONFIG_IMX_SCMI_CPU_EXT) += imx-sm-cpu.o obj-$(CONFIG_IMX_SCMI_LMM_EXT) += imx-sm-lmm.o obj-$(CONFIG_IMX_SCMI_MISC_EXT) += imx-sm-misc.o diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c new file mode 100644 index 0000000000000000000000000000000000000000..c815b58897c3b74dcc8ffdbbde9714f3c7e0784e --- /dev/null +++ b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c @@ -0,0 +1,287 @@ +// 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 = 0x3, + SCMI_IMX_CPU_START = 0x4, + SCMI_IMX_CPU_STOP = 0x5, + SCMI_IMX_CPU_RESET_VECTOR_SET = 0x6, + SCMI_IMX_CPU_INFO_GET = 0xC, +}; + +struct scmi_imx_cpu_info { + u32 nr_cpu; +}; + +#define SCMI_IMX_CPU_PROTO_ATTR_NUM_CPUS(x) ((x) & 0xFFFF) +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 = ph->get_priv(ph); + + if (cpuid >= info->nr_cpu) + return -EINVAL; + + return 0; +} + +static int scmi_imx_cpu_start(const struct scmi_protocol_handle *ph, u32 cpuid) +{ + struct scmi_xfer *t; + int ret; + + ret = scmi_imx_cpu_validate_cpuid(ph, cpuid); + if (ret) + return ret; + + ret = ph->xops->xfer_get_init(ph, SCMI_IMX_CPU_START, sizeof(u32), + 0, &t); + if (ret) + return ret; + + put_unaligned_le32(cpuid, t->tx.buf); + ret = ph->xops->do_xfer(ph, t); + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static int scmi_imx_cpu_stop(const struct scmi_protocol_handle *ph, u32 cpuid) +{ + struct scmi_xfer *t; + int ret; + + ret = scmi_imx_cpu_validate_cpuid(ph, cpuid); + if (ret) + return ret; + + ret = ph->xops->xfer_get_init(ph, SCMI_IMX_CPU_STOP, sizeof(u32), + 0, &t); + if (ret) + return ret; + + put_unaligned_le32(cpuid, t->tx.buf); + ret = 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; + u32 flags; + + ret = scmi_imx_cpu_validate_cpuid(ph, cpuid); + if (ret) + return ret; + + ret = ph->xops->xfer_get_init(ph, SCMI_IMX_CPU_RESET_VECTOR_SET, sizeof(*in), + 0, &t); + if (ret) + return ret; + + in = t->tx.buf; + in->cpuid = cpu_to_le32(cpuid); + flags = start ? CPU_VEC_FLAGS_START : 0; + flags |= boot ? CPU_VEC_FLAGS_BOOT : 0; + flags |= resume ? CPU_VEC_FLAGS_RESUME : 0; + in->flags = cpu_to_le32(flags); + in->resetvectorlow = cpu_to_le32(lower_32_bits(vector)); + in->resetvectorhigh = cpu_to_le32(upper_32_bits(vector)); + ret = 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; + + *started = false; + ret = scmi_imx_cpu_validate_cpuid(ph, cpuid); + if (ret) + return ret; + + ret = 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 = ph->xops->do_xfer(ph, t); + if (!ret) { + out = t->rx.buf; + mode = le32_to_cpu(out->runmode); + if ((mode == CPU_RUN_MODE_START) || (mode == CPU_RUN_MODE_SLEEP)) + *started = true; + } + + ph->xops->xfer_put(ph, t); + + return ret; +} + +static const struct scmi_imx_cpu_proto_ops scmi_imx_cpu_proto_ops = { + .cpu_reset_vector_set = scmi_imx_cpu_reset_vector_set, + .cpu_start = scmi_imx_cpu_start, + .cpu_started = scmi_imx_cpu_started, + .cpu_stop = scmi_imx_cpu_stop, +}; + +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 = ph->xops->xfer_get_init(ph, PROTOCOL_ATTRIBUTES, 0, + sizeof(*attr), &t); + if (ret) + return ret; + + attr = t->rx.buf; + + ret = ph->xops->do_xfer(ph, t); + if (!ret) { + info->nr_cpu = SCMI_IMX_CPU_PROTO_ATTR_NUM_CPUS(attr->attributes); + 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] = {'\0'}; + struct scmi_xfer *t; + int ret; + + ret = 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 = ph->xops->do_xfer(ph, t); + if (!ret) { + out = 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 *ph) +{ + struct scmi_imx_cpu_info *info; + u32 version; + int ret, i; + + ret = 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 = devm_kzalloc(ph->dev, sizeof(*info), GFP_KERNEL); + if (!info) + return -ENOMEM; + + ret = scmi_imx_cpu_protocol_attributes_get(ph, info); + if (ret) + return ret; + + for (i = 0; i < info->nr_cpu; i++) { + ret = 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 = { + .id = SCMI_PROTOCOL_IMX_CPU, + .owner = THIS_MODULE, + .instance_init = &scmi_imx_cpu_protocol_init, + .ops = &scmi_imx_cpu_proto_ops, + .supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION, + .vendor_id = SCMI_IMX_VENDOR, + .sub_vendor_id = SCMI_IMX_SUBVENDOR, +}; +module_scmi_protocol(scmi_imx_cpu); + +MODULE_DESCRIPTION("i.MX SCMI CPU driver"); +MODULE_LICENSE("GPL"); diff --git a/include/linux/scmi_imx_protocol.h b/include/linux/scmi_imx_protocol.h index 07779c36ef9a126907e26e304a8feca16fd60ab2..6aa76580718f2604a5da25f71fff564cf59dab45 100644 --- a/include/linux/scmi_imx_protocol.h +++ b/include/linux/scmi_imx_protocol.h @@ -16,6 +16,7 @@ #define SCMI_PROTOCOL_IMX_LMM 0x80 #define SCMI_PROTOCOL_IMX_BBM 0x81 +#define SCMI_PROTOCOL_IMX_CPU 0x82 #define SCMI_PROTOCOL_IMX_MISC 0x84 #define SCMI_IMX_VENDOR "NXP" @@ -88,4 +89,13 @@ struct scmi_imx_lmm_proto_ops { u32 flags); }; +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); + int (*cpu_started)(const struct scmi_protocol_handle *ph, u32 cpuid, + bool *started); + int (*cpu_stop)(const struct scmi_protocol_handle *ph, u32 cpuid); +}; #endif From patchwork Wed Feb 12 07:40:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 13971310 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AC7D3C021A4 for ; Wed, 12 Feb 2025 07:50:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=2ZV94HHvgsE9LVMm/kVq9QaGyh+zF78/pIcWhUA4ofo=; b=gM9CI3wlxkMPU1vegMK9SvsdiD dc90XDJHdzeGM+MKxQhG9yfiUtsDdqFcJBUAF5e4DHNPpJeynzAEa49DI2bYFuO0M3vF1brTVPc1a g4WAGScS0/Hz9SrGFbThc/WaPU0mExX2voYHwMknxezhoyB8TZbPoiu20wEn5PLbaDffR++yx795T ajblbMrU0ldimDekc0DXomdEm9yIxyDyBVoJpoRVkgBX8eXFzv28WDmjv+enlhdY56TQBf17lrG5O RVHsuZe9Dyq0QHxFvwyc5BNSrWc6jBD6xVJyQFA7GR772wkRdDuJ/28A8RQnRpTNF7nlXrDJbuemh Km2Zx9iA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1ti7VP-00000006WxR-25I7; Wed, 12 Feb 2025 07:49:59 +0000 Received: from mail-db8eur05on2060b.outbound.protection.outlook.com ([2a01:111:f403:2614::60b] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1ti7NS-00000006Ven-2nd3 for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 07:41:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TNmVHjNcPltsKMYvyxeD6STrq7LI0Iqgw49OiLqCSjgq/j2vvygPTcpy64qxehMM6MxLGrtTjbf6a+12Z0X4HC/dSJkDHxrCli2unMx1N5AOJundoy2SlqAdgTNQ57Pefikgdv0zDkQn+YBlBa5EELWG4ShI61QbshC7+QNsQto4Xu3qVuKj8NmiKXV05xbNIIsKRdFAUTpGS2zjRYiE58QNyMaj/57kO3BhSX8V3TkIUu+N6NDxfH/l51hAC0bFMS88jpstTljEphGQnJyHRfNc6EmtaCO6+/C17SmmhPcs0XIRtkawG/qOKxabDlOBJk8QMvhAIpXSGbgLn63a7g== 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=2ZV94HHvgsE9LVMm/kVq9QaGyh+zF78/pIcWhUA4ofo=; b=Z7fi8+yja3/9YMtmJdb00m20KVL514m7cZOLOkgZWeewNyEL885mk0/qRTO4KFDFCQ5qFfjcKwcVioXO+wFhJ7XijXFJLQrf0UCtBdqEocjKAEF8f0yoqsypISlq3GzQtAk/DiH1P4Z07TZucshHJIwbcoIbtVXhLhaR53uQa62CS3mg5QapFI65jLMfVo2CJ4XESuk+0Im5GK/P67XZtah1aIADYOMUioMLlwaYnVNOobxi5lMhDAgYMhMKX4lF2NxpbVJoHgZIjZJ9mbgXL6wMthmvNSIhpDQwDEu4fLyAG6MbY1T8d9//rlxYV7AJLJ2IjspdjlLZr4avUeS3AQ== 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=2ZV94HHvgsE9LVMm/kVq9QaGyh+zF78/pIcWhUA4ofo=; b=v8w2C3WXaBKThYCzVYUGVV9QGzPZpUfhm5U8JKZkDp7/VVBK+cOHrJx0+J3Ws5P8fBrI7LD4SEVi17IjUrUDPauvqAph9gR25U7NP1bDmKgs6Mftpk9TI+QGGo39gyd2ZUvhO2uZ129y2FX/MczENlOOlrUqtN9r8V/SZaqr9Qmv2hEFVLLr8GJ3vFmF4F+Bp/s4eEym78yZSCNc6RBHRGxXfkuDD1TUSesU655aH67cRW/Wf/zO7Xd45Isp4s512IY4YHVshrkFfbEnLeVTb6XIqMjAk+rGRW7B2y7EM2hBUdctYtZNmLw/fxnj10sNiO83nc0E9RWgfrcztXP7VQ== 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 PA1PR04MB10865.eurprd04.prod.outlook.com (2603:10a6:102:48a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.18; Wed, 12 Feb 2025 07:41: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%3]) with mapi id 15.20.8445.008; Wed, 12 Feb 2025 07:41:43 +0000 From: "Peng Fan (OSS)" Date: Wed, 12 Feb 2025 15:40:27 +0800 Subject: [PATCH v2 5/7] firmware: imx: Add i.MX95 SCMI LMM driver Message-Id: <20250212-imx-lmm-cpu-v2-5-3aee005968c1@nxp.com> References: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@nxp.com> In-Reply-To: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@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=1739346036; l=5885; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=Y5YiY9EjHk3+0onquYZWlfsbcy9uIDhrsDG5HbDra3A=; b=S4yzzrarCecvGolZ0kijrvCM1rNIys93EejRC3DdizpOs7C6osovfxclvs9YinRfqT/39aIQa DoGv/EI5rbwAUHqOq/kRwqqIBm6xNdETHm4jQf1I6wi9W243Ay1XU/D X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2P153CA0014.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::6) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA1PR04MB10865:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f5e1181-f702-495a-24cf-08dd4b38b22e 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|7416014|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?0tBCZOvFD0XC33Yy3XR0TuRSprzbwK3?= =?utf-8?q?3ICyrMDR2VJqbHS3ImxdYOPe+tDe5mKvQ56mjZVTQKyzramp7pPBJRxd9X8N0YG83?= =?utf-8?q?CTUW4FDVGLrMX1jFhGD9bFKY1kLJYAkkwQPZz+pD1aMfykR70QtGVDqMsXoozx3sa?= =?utf-8?q?0yPMs6qJowqTQKVHpUkN01XUKC69eYjsklFmCsDXi1mj10n5jI7g+w1h0zdqB5bMD?= =?utf-8?q?rCbGu/J/WZdoPg8C+Fl4g49A879thaMqPoDUW1Ogc7RBmTAwPoMW1sh+qzERU0W+r?= =?utf-8?q?MXzyEfhelYaCiuLFoy5a9WQFRsIg+4hmbJ0m9ZC/hItvPOn7/tdQfohlxL1a/KMsY?= =?utf-8?q?SjtACULqGmtLA9xciKGp2gBN2niU/sP7+50bV7OIz4fckytNuMMxU22VbaUzcp031?= =?utf-8?q?l3B9HGHTBAaovUeXAOezEDuadPYxiSuBosmsT/osWTLhhvuLWDHq1lw9Ufw2YafAA?= =?utf-8?q?Vh26QkPeYXTTTpbcTwRaYGR/jtm8C+UHmVhklFQQvLhwYcY2hKhw1Kmxv6pBukPLY?= =?utf-8?q?B7TJxh8J3GKLd9mKHnveV7g3eek8p4Ib3CGluCI03gdNmiikNA99JwhbUCyl7BeBY?= =?utf-8?q?cTsj/bJqG7MrcLynAhZ56uGLTyMj1MqT8YMFylkwFnUk1cx2LSACxjF6pub2Yj8p+?= =?utf-8?q?EXVC6hT4OdsUw7Qif/zX75h0w5642bXz5H2KIVo9rejaWP6/9sxwA3iCHPZCuDs4y?= =?utf-8?q?gd53wZ6DNsSTYF5NZ4gd2sJPruZgSCqUxWsraXh190dtKRjX2VqtHAj1ALcfYUuKQ?= =?utf-8?q?gf7r49w4hxF986ZwtnBlqEq2FM6EVui1PMw53TBUG5ZYfdBA9n5glXRtqb68xTnMd?= =?utf-8?q?nmNAUiW63kNwFrpstrG0osbrpSJIm73YAsHBJnRe15oI62YNDXs6tkzbPTkcy/g7F?= =?utf-8?q?FBmtmQGGLRBnb2DMJ4+TphJn2XPpYlyX85OcpA6xLSNQu0Y8kNToHQA9cLZwIKVDl?= =?utf-8?q?3fnNqtRWNZysWr+Hl+U2/AY03DPtwVBJ0Ot133acevMD6EXWwR5C+NZlYcSURMnHt?= =?utf-8?q?REpnudrXAFvphGFuGtUo1O5TCbRsg6AZERfZXdStLPJsKPK7hyYtd4j3Y/Tdao0dJ?= =?utf-8?q?jV+FZQU9D0zA3cqckKgXx7ZG1v2rxPWOAxFHztts91ioqyrgmE6WP7ByY9/iV4TmT?= =?utf-8?q?8vKTrtXQI/T+fVqGQA9WvVdKJGYrb0XqxVpAQUxCRCDqlk/oJB9OrE9yIFE1UTG52?= =?utf-8?q?Gts6k/x+uKS9/ZlL1LM8AZSqR+N1w76GYauznKUgjds4nrTSCXegbga2EYlcU8sor?= =?utf-8?q?h+Wx2z4lHHKen1oFsV/8np820i8VJREE6aR2CU+JrEe3bMzkT5dDoZgpQ5SsDSADu?= =?utf-8?q?kbmIeKjbA7gB3rUs9OoDNORjWH4ynhWuhTW/S+FTgO0KKJYO9B10FlrHT0e5iiRv4?= =?utf-8?q?R4klQKcUCu4?= 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)(7416014)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?tyPbBmtSGbNTWc89C+TvDKLjeH9X?= =?utf-8?q?GoIG4kANX2RZq4NbH8fVRIRfvcvjAT7NyOsvOHJYqPRJERkOSyGrP9/9JP9T0F9Ej?= =?utf-8?q?+eBqjJirfOyXS3T2XOT2lHOAbiOGlq/pzmG22WFgBktwMQ7dd483l81ql9lMJhakh?= =?utf-8?q?77Ua/pPF8TASkNakxz0jTnXl5h7ZqjSBhehXKksQfy1BBqwK53J/15STyfeZjv4Ax?= =?utf-8?q?/a76J1LNkBVakVWlD2SGGR02uSiEHNVETfB8dGN4qDa+294jreFH/g2vB52348Xaa?= =?utf-8?q?vHlbKheDzmWhY78Qai4AWIYo2vwpQZHnThVUACwirCMsPG4lFYGI6ckSPJYtXS/cC?= =?utf-8?q?EANe3BGBBXy4/hUyDPQCbvu4O7xL3kxEj9/8IKl7Yqow1VKfNWTu1AVqDYs32slg7?= =?utf-8?q?57S7TnoAx0DmZmt/284nz32Sg+nDaKI7a7VCumnmKJeo+8BSOH1Xx5ec1VJf41yJr?= =?utf-8?q?axAzJF1vYZ9uLxcYoVSFU7u+iRiieGY29uyaPD+1hjmT8d4qeyS3xP4f1xv/ttQ/w?= =?utf-8?q?QAvCa0guK9CpPlvzECVRLWhjsG0LsnhbwWkxe4oJS0AHdWmC7PsfSFUwnxSolBwtm?= =?utf-8?q?faRkyg1SZQ85jrKSkPDPnS6sp83n15J7TrImcQU4ElQ5xd5M9VAsSJzQNEx4rJFjQ?= =?utf-8?q?SeGuTd1rx/IOSXoDqNkrIgSNR8BjIy3o0HB2dkLsKbJb2meiTOQyjiqSmZph8Gpm8?= =?utf-8?q?38WtWBHNTRUGgkgWuKxzr8LCy+CAo8Y4ReYckkta7CtgVwQTdHzFoCL0v7sidTwxW?= =?utf-8?q?aZeGJng9o2GuFw1ksJqLmByG0caKk029aTRHk5u7iVq3kSE4wfAFskfhzHA2/Kgs7?= =?utf-8?q?I0z5BwCamCIHcSXuD6U9QM36ytmVDTJSMMz3Nrw5A4tMHCjrwV6N6McS/aUZp3+pX?= =?utf-8?q?ztc7MYYkf4MUExeEJMt3zAaLIPS1Alf+p5qysp/4PqhGZ4Mg6oTdqj/kx/I9HpJw+?= =?utf-8?q?2czQgZc2zzF3VIBElVuUrnC4HeWqvBUvHxx78gWkcXUtiEfyUFZPTQYeEoZ1PDBhP?= =?utf-8?q?/6/PCDFFxGAHnDCbI9vL+M9gFlxpQqIzeiayWDYEOLCNkLdRXvA2H13uZ8eNotkru?= =?utf-8?q?CVmIabBxBzBHf5/p+vobdAJbVS+9OFesB4fSz87P2MP1uci8F0XO7ZKuwZ11N1xYd?= =?utf-8?q?znJDwZUAzbRbCD4u1NLG3+xFal0HIYxrhtWAxLrwDYRS1mQtf1FB22Ayc/+piGgb2?= =?utf-8?q?8ct1WMV+ey45aNMw35+9TppHqA9taUndU+KvQ30JJfkm8ge1Kc9h+c6Hlioydemyu?= =?utf-8?q?v/EH5hihxVSexniArOwGsuzyatK5B/7kfpAuOyKb3v/FpZpn9p7VoQNvZF4NvNNWP?= =?utf-8?q?fdU61ADYRTRdWBUEp5T7K/RNPaa5Z4tT5z3wGoJTL0Gu3G25RwQeeZ/hRvyqMKHu+?= =?utf-8?q?XHkEZprJwC99f6dqj7ZRtCNkP+VtTngcnUnP5IFEcteEPSzchL0ynZfDonou/L9M6?= =?utf-8?q?hL4DLJQ+l5WczP94/iV2A+loQMR/6K23b6Jah0G3pd6R1gGsalbqNqXCBV+NMBIXv?= =?utf-8?q?GAQkcH6c36g8?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8f5e1181-f702-495a-24cf-08dd4b38b22e X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2025 07:41:43.7249 (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: 5ocLmyvZDq1Q9YoAhnAfI5lgz5xQcZEO3ei7ZPZFsmbpMuwenUWqtzFAUi8JQd+7uWl1j3rqJz5DiJ+J2QltOQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10865 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_234146_866451_14DEA4D8 X-CRM114-Status: GOOD ( 17.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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. Signed-off-by: Peng Fan --- drivers/firmware/imx/Kconfig | 11 +++++ drivers/firmware/imx/Makefile | 1 + drivers/firmware/imx/sm-lmm.c | 98 +++++++++++++++++++++++++++++++++++++++++ include/linux/firmware/imx/sm.h | 33 ++++++++++++++ 4 files changed, 143 insertions(+) diff --git a/drivers/firmware/imx/Kconfig b/drivers/firmware/imx/Kconfig index 907cd149c40a8b5f1b14c53e1c315ff4a28f32ac..c3e344d6ecc645df1f0e3ee8078934c47f347fd7 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. +config IMX_SCMI_LMM_DRV + tristate "IMX SCMI LMM Protocol driver" + depends on IMX_SCMI_LMM_EXT || COMPILE_TEST + default y if ARCH_MXC + 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" default y if ARCH_MXC diff --git a/drivers/firmware/imx/Makefile b/drivers/firmware/imx/Makefile index 8d046c341be878bb6dd1e6277992ff66ae90e292..7762855d2a771169d4f1867d27e0d51be7c9ad03 100644 --- a/drivers/firmware/imx/Makefile +++ b/drivers/firmware/imx/Makefile @@ -2,3 +2,4 @@ obj-$(CONFIG_IMX_DSP) += imx-dsp.o obj-$(CONFIG_IMX_SCU) += imx-scu.o misc.o imx-scu-irq.o rm.o imx-scu-soc.o obj-${CONFIG_IMX_SCMI_MISC_DRV} += sm-misc.o +obj-${CONFIG_IMX_SCMI_LMM_DRV} += 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..ed9650a8cb7ca878874e8609f0a5c83b5e46204a --- /dev/null +++ b/drivers/firmware/imx/sm-lmm.c @@ -0,0 +1,98 @@ +// 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_boot(u32 lmid) +{ + if (!ph) + return -EPROBE_DEFER; + + return imx_lmm_ops->lmm_boot(ph, lmid); +}; +EXPORT_SYMBOL(scmi_imx_lmm_boot); + +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 vector) +{ + 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_power_on(u32 lmid) +{ + if (!ph) + return -EPROBE_DEFER; + + return imx_lmm_ops->lmm_power_on(ph, lmid); +}; +EXPORT_SYMBOL(scmi_imx_lmm_power_on); + +int scmi_imx_lmm_shutdown(u32 lmid, u32 flags) +{ + if (!ph) + return -EPROBE_DEFER; + + return imx_lmm_ops->lmm_shutdown(ph, lmid, flags); +}; +EXPORT_SYMBOL(scmi_imx_lmm_shutdown); + +static int scmi_imx_lmm_probe(struct scmi_device *sdev) +{ + const struct scmi_handle *handle = sdev->handle; + + if (!handle) + return -ENODEV; + + if (imx_lmm_ops) { + dev_err(&sdev->dev, "lmm already initialized\n"); + return -EEXIST; + } + + imx_lmm_ops = handle->devm_protocol_get(sdev, SCMI_PROTOCOL_IMX_LMM, &ph); + if (IS_ERR(imx_lmm_ops)) + return PTR_ERR(imx_lmm_ops); + + return 0; +} + +static const struct scmi_device_id scmi_id_table[] = { + { SCMI_PROTOCOL_IMX_LMM, "imx-lmm" }, + { }, +}; +MODULE_DEVICE_TABLE(scmi, scmi_id_table); + +static struct scmi_driver scmi_imx_lmm_driver = { + .name = "scmi-imx-lmm", + .probe = scmi_imx_lmm_probe, + .id_table = 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/sm.h index 9b85a3f028d1b0a5287b453eb3ad8412a363fe6c..e02b7b558afb6f430f6fbeeaf3ee1f59feea3c1b 100644 --- a/include/linux/firmware/imx/sm.h +++ b/include/linux/firmware/imx/sm.h @@ -8,6 +8,7 @@ #include #include +#include #include #define SCMI_IMX_CTRL_PDM_CLK_SEL 0 /* AON PDM clock sel */ @@ -20,4 +21,36 @@ int scmi_imx_misc_ctrl_get(u32 id, u32 *num, u32 *val); int scmi_imx_misc_ctrl_set(u32 id, u32 val); +#if IS_ENABLED(CONFIG_IMX_SCMI_LMM_DRV) || IS_ENABLED(CONFIG_COMPILE_TEST) +int scmi_imx_lmm_boot(u32 lmid); +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 vector); +int scmi_imx_lmm_power_on(u32 lmid); +int scmi_imx_lmm_shutdown(u32 lmid, u32 flags); +#else +static inline int scmi_imx_lmm_boot(u32 lmid) +{ + return -EOPNOTSUPP; +} + +static inline int scmi_imx_lmm_info(u32 lmid, struct scmi_imx_lmm_info *info) +{ + return -EOPNOTSUPP; +} + +static inline int scmi_imx_lmm_reset_vector_set(u32 lmid, u32 cpuid, u32 flags, u64 vector) +{ + return -EOPNOTSUPP; +} + +static inline int scmi_imx_lmm_power_on(u32 lmid) +{ + return -EOPNOTSUPP; +} + +static inline int scmi_imx_lmm_shutdown(u32 lmid, u32 flags) +{ + return -EOPNOTSUPP; +} +#endif #endif From patchwork Wed Feb 12 07:40:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 13971311 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C8CBEC02198 for ; Wed, 12 Feb 2025 07:51:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=cSP0XDMY0TfQbgL6hb2bpJpAy/LolSImVLH+edvMo1I=; b=ESgrk5OsZrFG91oR5VyrrkKvgf t2dAoVXQmt4zVkGI88PMZPMX7rtbNXycAZzueFcJtTWJuqKsZXAoVgiFnna2ZqPMRQYI3oH6dvwzz w2XM5G8BcjanK+DHwf90kFp5Gwa6fkdhjqiYZzToaUyMmWCzkSn1cAHYWoXRs5p5+9urlkO00pAOT fexEhYhtVvMNtl2AXpDvkKbK7X/9TLqK9EGq20jEjpQDFKkf4qgpkitlwF93ZRrFv0rgZqQhTFjyI Otf/4VkURJB7upE+J3+1sSFNL5iAKisSQsOBCX42X5CvzRir/sHG5cBrXWXQPgm3Ciy+igTLtQSbg Nqh0Hikg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1ti7Wn-00000006X7t-0wZ2; Wed, 12 Feb 2025 07:51:25 +0000 Received: from mail-db8eur05on20625.outbound.protection.outlook.com ([2a01:111:f403:2614::625] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1ti7NX-00000006Vfn-245b for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 07:41:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eucVAusdF2VFaY2yi8IQxIMLs3VZs1WAYEx1XfJoFLovFQLq6q87AQ9UdyxsyJbm/l0jiheW3F7PCL/LObvvXTeKZlNdm/AVyWcBwOIgfrUn9grlAN7j/YIqfvyY/x+J4+xvqQ3iTU2NFjvxHbn5qf/RD4zsOVcFXs4TMSfZu2OUcNds3or61lWTeIhWZXnwufPuwM+Ymr8OtDxNTQy0w7CXrd+BSJlWyMiuu+hRbbgOme9rI1mDw0jc2BukLR6xVfXaUmewG0zPsqTplbOO7N5b90HP30j6txxPV1qN9Km/98IkI/cGcdHd1jiiaIS/zGU3pyrmTl2SjMb4gNpB4w== 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=cSP0XDMY0TfQbgL6hb2bpJpAy/LolSImVLH+edvMo1I=; b=REwMxwTaFtzhZBv5YaqsD0zw1x5Taj/I+vQuBqGtP7IIcJYkb77mnfgdLFIXQGFwK2KSMT2d3CnQH2x6gDx5/bQWbyFgrucoSVioKH+Ed/gspkQyFi3Fdkl1RaFbIeBPxRxPRHpVAeWcRtKvG1xOp7m27VYlNy+funyzem9+FJwDzLpyQLbZUJ6eBfAcB1ahA8wPt5v8oGXgRmMcTcYb1PpILvUb2X1ejRfuMfdHLOAplhdsOCqvYKB8awxu5d0dKTry/XeTnTqyoGVUcTFTMZjsTnSTDXUuTwUUPkMQd6GZGJM8LOMNdCy6J+9FnnqndrJELrGEf5nwx3pa9Ay+hg== 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=cSP0XDMY0TfQbgL6hb2bpJpAy/LolSImVLH+edvMo1I=; b=ZRlapBVZxgJOFje87si9UmdNw/sN7Br3qGHMujqE9dnt2KNldmFfd3F0VGjAAZFP/7YfMvrq23ljA9WK2PoI+uUAEnwlTQNUe5xmZ/yerY2Yx2VVyshe7LWtFvjcbGugWzkVR5I2EEEa0gJRK0uZ0fSwB0bb//I9ujhVz6tRiOOumbfUb/qd5enQv0jreoMgUi+ZYJSdX1AOuqIvQBe8cYpORfa4MnjmfxQ2uYSaAMeI3qiD5E2H3p09xxbTVatC78QyE7xXljfaPPVw4urQaD/1zE34LcST/Xy+VHcsko4gknypf1efxYLnNyplZ72NaHEgS09XEivez4UY/ySYEg== 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 PA1PR04MB10865.eurprd04.prod.outlook.com (2603:10a6:102:48a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.18; Wed, 12 Feb 2025 07:41:48 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%3]) with mapi id 15.20.8445.008; Wed, 12 Feb 2025 07:41:48 +0000 From: "Peng Fan (OSS)" Date: Wed, 12 Feb 2025 15:40:28 +0800 Subject: [PATCH v2 6/7] firmware: imx: Add i.MX95 SCMI CPU driver Message-Id: <20250212-imx-lmm-cpu-v2-6-3aee005968c1@nxp.com> References: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@nxp.com> In-Reply-To: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@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=1739346036; l=5658; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=jnqCj8AkedEQ9gtARM7DQLSPNZL2HiFxGo0lP+P4RLA=; b=OV37mNXSGzRyca89q7GCG6r73vcCc2n7Vvf4yzwO1O1B5Op7ve7bo1xy4W7Y1Z6ya9dhkMN51 zefTWTPNZfuDT2k+UnBMyjPca7eaEop8wAYNN+hj6bWzgoBGecZrKvg X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2P153CA0014.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::6) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA1PR04MB10865:EE_ X-MS-Office365-Filtering-Correlation-Id: 2b9203b3-53f7-465f-4401-08dd4b38b524 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|7416014|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?BTJDD0dn77u9P71wpqtG9ygIaNklA5l?= =?utf-8?q?Xyv09G3Jop9Io6adLLuZRs07HUbcS1lFispYrrAgqE5Hkb+RjdV5f8MY/z0dnBIf3?= =?utf-8?q?YYFCEr4NNaC1U/J1Yosp5i+cRMkxMaXXByH4tUyxKBCFZ6bxD4fvMidpekb2gQdEO?= =?utf-8?q?7YYid4G7R7/eVpMpfpuTMN87T2yUkVkFnw0vsTXt8AWiiIjKrz8Eg0HEV+1K46DxF?= =?utf-8?q?qbEjhYzJ0obkExP14i/9jZRHkOqzJhpcPCxe9aXPtz9fa1y9WhZKBPB/gx2FEFD3n?= =?utf-8?q?u9J9DP041Rhr2DDU6OuWX096O9j7/84xPrhN8ub4rdSZx/D0zXArxhYbcyTXOF25Q?= =?utf-8?q?Nq7vFsaQwkDhMldco6rfRlUNGjvAQVA3o6Ish1rAYL+uWK2Zpt2Y4kct9Jtn8voz7?= =?utf-8?q?xpB6HwpqUEhf7DLQ0sL/mTc137zKn9Wi85XgHKNb8AXxAXkWNNbECANbGMSowFOT9?= =?utf-8?q?E1koImFro2LHo5eFid1hZpnKusCJ3dPbuDVWrm6/sqdKeJb6oA7tGKjWF2x6mZUGK?= =?utf-8?q?gJBk+eCWH1seeMVfxrigD/9yEPnNLVu3p5YpYDDv3aYhDhf119q43DmTlkr3TwY3b?= =?utf-8?q?6ek27evZxHrJqJpiIvl2CVFuO/VwqY6jwmmbtrop0VQC5asHUMBBIs6OKrgOX/Y92?= =?utf-8?q?bpRgSy4wsD7dtVaARV5zJzwMXOHAoO8UBvjTttHJOs9W1GA0bGW6CPPdTuMqemc8f?= =?utf-8?q?Nm9nXzHvdWWa9AB1U1WNpNgdwmX4WxHik2Q5ry4FlYBRSdUz7iku+ISX69e8ZjP5W?= =?utf-8?q?vEyA1P/2tfx/rKDEMagW1EOBQRJw4ZF7APDjTlaSdEu+wsg9RXMBFjratMJ7TEMo5?= =?utf-8?q?w631ITGmh9tnhhb7aJ60jCZtgLFAcn4dJshQQyEbP9UcLVw9ULhGjB1wNEOulHOto?= =?utf-8?q?XQAdfFErQvWH+OrFHUl2KDpD5vYzSnzx1SvCFp6CQDbeXfXr+cw4BdIJlLlUR5XxG?= =?utf-8?q?4YuKPfv4U9PUZV3pvtc5Q6N9s83C/ZvSSyPiok8CmmMvnzciFKoIutzpQrHjYMLnV?= =?utf-8?q?DQxK+AKcvwEGhUEeOEF9v5JT+mZqN5Osn/kgEOSLIB2qHCcRTeDkK5r5DQ0Q8Jp04?= =?utf-8?q?t1iD7kDhKjTtCXfKQPoIs4U4TVsV6XwN+67ORlbagkWByPb+0kJ4ngonayK8ZXNqE?= =?utf-8?q?YheE7IBH94+1okNoPGi0dYrqmrmdhox+p7cdgtq1+plLnDwAMSaxiy2w6IhJclmbY?= =?utf-8?q?D3HwpbtsqolxjYNLEgtYfGTfxluu+yPA+7HbzX8IpfkGdnPLls/4pAoZ3N7zjJ0ij?= =?utf-8?q?JzJGDRX5r1aiaqpzgS87aSWZ71WHnxRHZdxuAw9THOC7zavrFpten89GZ7nreHz5p?= =?utf-8?q?5iWgbsFuZgFjpmTHavs+gGsAF2Xl5BvyA22ZYgQvtU04ZVOboMeYFqbS7pNNUVbK3?= =?utf-8?q?EOhRIcUx/4Z?= 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)(7416014)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?PKslBPcxPh8WsQy3dTv51NDusvJ4?= =?utf-8?q?Hj/v10DXM0QIvMdqSp4on9dqJ2nWRekt4F7U6K4sZLHwFqoJbYZ9BwyyFLBzoM2FZ?= =?utf-8?q?XG2byJxqinJA4lynnxdbsZQB3CbXHQj1/rTANPdG51vbOu/wP8Q5D1huK9jL7+Jwc?= =?utf-8?q?PSp1arV4z47GFm//QJ7iMT7MhBFJ90psbH0uLF3NY7ldi8cAdm2GMr5KASQVvm7Qr?= =?utf-8?q?cAN10VEpdebmVXJ45ip8lvHCWm6kZLKWcat/olIHHeB/KV4HyYd2VLTzhE4Q3D5R8?= =?utf-8?q?xwCEkESA4h1y6R8C76YX9VbOu977ibG2vs4ueeGVzPSVmiVvmparOXOL5Wvr6Hzli?= =?utf-8?q?yb5I9CszSmT+N29B2vRFGkFe41AgMTBavTbZmw5DbvPZQZ10QdZecDwiYTqaYpnON?= =?utf-8?q?dRU3YbkZRn9SUnZ+RXRyoUonHqM64+Y7i6jreTOSj3FEkILBEV+ht/Py6uQvPA+ES?= =?utf-8?q?JV5BTnodhZUhRGMs7qXv6poocRWAFQBiMVfaonQX/Nms4rW5jNiigM5AU4phJRxND?= =?utf-8?q?Wnh989rA0iXj7MTMcxGP1Orsj/qPER05iEJVIgE3ynHFgyNdQhsOimJnAW6OccvX4?= =?utf-8?q?feGilgwzFMq0g8xKg4+oW0wTZrbnk1WmfnhhhnD3DIztbkkrshLHBBZqkwmI0ZvhP?= =?utf-8?q?zuD0fl49DnQknlsjLrOWtcQpM98cHwha36xancclFUOYQp5wEzeqwEwnK3X+DsstT?= =?utf-8?q?NFIucL3ZJBBLiUEIIMDMgQp/Sg1nDE4x84Uv1uLD7hl09Nc9lfz+NCALnINeYIxGh?= =?utf-8?q?SVKxTM/kTLByqRQ3v4/oiX0vWZEUnna2Asp362QrBvLzgbs7zepR2K/nV95XvDNkz?= =?utf-8?q?+TV6E3kWJO4ZvPsQosDgS1MU+AJC78e5wAh5eV6B/heH9ja9hs0C+fc7e3WGz2Gtq?= =?utf-8?q?PlN3fHI+TEUrZr/Eq9XQEoo4pr3pRZlfz+1alUfu7pU5tPrZHlbsKbS2oy45yOYi0?= =?utf-8?q?MwuqkJjWAIJFaySPxpTBvPl8dbUxEozZumw5kiXFaEqhWnel7YUrKmaZBmbJIkcLF?= =?utf-8?q?PPjm9pU50ipw4kRtPWsPn49QKGMWKrTTU4PaCQ4pU6BqkDaM8fIeXhu8AYlWCKxV2?= =?utf-8?q?t7TBOqKr390psls7UcXMk8mQpD4HINnERDRre0NqADn7Q7bqivb+u2nAseJZoKu/A?= =?utf-8?q?hEnv2523gQC1OLQfC1IualT2Z1Hc/MESBE1zDpd3cdZaAKwKLPhwljmuO//4bmcSV?= =?utf-8?q?7Z6oB2FRvVAD1xpDR6zVjU7oFmXHo6IPeN83Qx3gtmocdOyUO4fEmZhC1X/wni8qf?= =?utf-8?q?Ckq+y7eQHCIHhmP9X1GW0BSM4dxm15DLoOVLe0QSsSgj9uLHsoqjvAz9OSYPiOo8Y?= =?utf-8?q?Sgu+tyLqdedO+36b4U+V4Hht8dxDblOW8rouJk2/ReIypwQQ2Zk6fJAhKGyzjhskj?= =?utf-8?q?cFuTL0LMFf4OcdTOtJjoJTRoRsn7JPP8mpPw6H+/unow4l5r9/ZZm0ABxM9tN3Z70?= =?utf-8?q?GoVbQ26X+YrNkx4Mi4yTEk4+mnJFhre6Y0mBZCA7w9vCTQ54+mgXBam+NUICHWIwQ?= =?utf-8?q?FpevZjnfwyRU?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b9203b3-53f7-465f-4401-08dd4b38b524 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2025 07:41:48.6682 (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: 9WTzK043RQ5JB8BjY08DzsuYvS03AmDdHq6hKj1nqgv461tKMRfyZXAHK621dr39xyNN5epf5RUWvFQ1Av1KdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10865 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_234151_693159_9BAF0645 X-CRM114-Status: GOOD ( 17.56 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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). Signed-off-by: Peng Fan --- drivers/firmware/imx/Kconfig | 11 +++++ drivers/firmware/imx/Makefile | 1 + drivers/firmware/imx/sm-cpu.c | 91 +++++++++++++++++++++++++++++++++++++++++ include/linux/firmware/imx/sm.h | 29 +++++++++++++ 4 files changed, 132 insertions(+) diff --git a/drivers/firmware/imx/Kconfig b/drivers/firmware/imx/Kconfig index c3e344d6ecc645df1f0e3ee8078934c47f347fd7..91c753921dffbe16ced8c10565d44c15b66b2797 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. +config IMX_SCMI_CPU_DRV + tristate "IMX SCMI CPU Protocol driver" + depends on IMX_SCMI_CPU_EXT || COMPILE_TEST + default y if ARCH_MXC + 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 IMX_SCMI_LMM_EXT || COMPILE_TEST diff --git a/drivers/firmware/imx/Makefile b/drivers/firmware/imx/Makefile index 7762855d2a771169d4f1867d27e0d51be7c9ad03..3bbaffa6e3478112638ed031375602389f18ef09 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) += imx-dsp.o obj-$(CONFIG_IMX_SCU) += imx-scu.o misc.o imx-scu-irq.o rm.o imx-scu-soc.o +obj-${CONFIG_IMX_SCMI_CPU_DRV} += sm-cpu.o obj-${CONFIG_IMX_SCMI_MISC_DRV} += sm-misc.o obj-${CONFIG_IMX_SCMI_LMM_DRV} += 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..1ce694a34b22843db5c1697ecb33c0479edb2ed9 --- /dev/null +++ b/drivers/firmware/imx/sm-cpu.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_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) +{ + if (!ph) + return -EPROBE_DEFER; + + return imx_cpu_ops->cpu_start(ph, cpuid); +}; +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); + +int scmi_imx_cpu_stop(u32 cpuid) +{ + if (!ph) + return -EPROBE_DEFER; + + return imx_cpu_ops->cpu_stop(ph, cpuid); +}; +EXPORT_SYMBOL(scmi_imx_cpu_stop); + +static int scmi_imx_cpu_probe(struct scmi_device *sdev) +{ + const struct scmi_handle *handle = sdev->handle; + + if (!handle) + return -ENODEV; + + if (imx_cpu_ops) { + dev_err(&sdev->dev, "sm cpu already initialized\n"); + return -EEXIST; + } + + imx_cpu_ops = handle->devm_protocol_get(sdev, SCMI_PROTOCOL_IMX_CPU, &ph); + if (IS_ERR(imx_cpu_ops)) + return PTR_ERR(imx_cpu_ops); + + return 0; +} + +static const struct scmi_device_id scmi_id_table[] = { + { SCMI_PROTOCOL_IMX_CPU, "imx-cpu" }, + { }, +}; +MODULE_DEVICE_TABLE(scmi, scmi_id_table); + +static struct scmi_driver scmi_imx_cpu_driver = { + .name = "scmi-imx-cpu", + .probe = scmi_imx_cpu_probe, + .id_table = 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/sm.h index e02b7b558afb6f430f6fbeeaf3ee1f59feea3c1b..0eff427e5ba2cb3f93c26f7d055c346a1d1433f0 100644 --- a/include/linux/firmware/imx/sm.h +++ b/include/linux/firmware/imx/sm.h @@ -21,6 +21,35 @@ int scmi_imx_misc_ctrl_get(u32 id, u32 *num, u32 *val); int scmi_imx_misc_ctrl_set(u32 id, u32 val); +#if IS_ENABLED(CONFIG_IMX_SCMI_CPU_DRV) || IS_ENABLED(CONFIG_COMPILE_TEST) +int scmi_imx_cpu_start(u32 cpuid); +int scmi_imx_cpu_started(u32 cpuid, bool *started); +int scmi_imx_cpu_stop(u32 cpuid); +int scmi_imx_cpu_reset_vector_set(u32 cpuid, u64 vector, bool start, bool boot, + bool resume); +#else +static inline int scmi_imx_cpu_start(u32 cpuid) +{ + return -EOPNOTSUPP; +} + +static inline int scmi_imx_cpu_started(u32 cpuid, bool *started) +{ + return -EOPNOTSUPP; +} + +static inline int scmi_imx_cpu_stop(u32 cpuid) +{ + return -EOPNOTSUPP; +} + +static inline int scmi_imx_cpu_reset_vector_set(u32 cpuid, u64 vector, + bool start, bool boot, bool resume) +{ + return -EOPNOTSUPP; +} +#endif + #if IS_ENABLED(CONFIG_IMX_SCMI_LMM_DRV) || IS_ENABLED(CONFIG_COMPILE_TEST) int scmi_imx_lmm_boot(u32 lmid); int scmi_imx_lmm_info(u32 lmid, struct scmi_imx_lmm_info *info); From patchwork Wed Feb 12 07:40:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 13971312 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A7145C0219E for ; Wed, 12 Feb 2025 07:53:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=I9H/UZrGNJ2uV2Kffx5loszWsQdrI+3pBlee1YOkCbI=; b=CX/BHWKY5JiYc2tPTdCfPcoK+A 6qu9dUknHgU1ekT8tl3aaJTt+Jq8iJaj/H+9JIWXvpl6W6iv3gelR+evE49ZyCgjznlgk//pelHZU uoEl1j3yiHLDRt0ffxluNTmgP2sEu2BJU7wDHSkovJejVkav//26S/7YBBglpO58DDs+to7xnEy5L QGL3tJqzzTotuGw3aLbwyD/Jy24i9QfpWkR5MJDXqYv1Y9HNygvYiH0OdDMeAI9zfd6qhyiRnj9k3 0Cxz1Y9E96XnA0De5lzvd4FcMvr59Hu5RJtus4ClRfCnBypVvD5fdMrXbuHxwnQIYuuQC8vl/7IE8 MUaoMfmQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1ti7YA-00000006XIH-3muZ; Wed, 12 Feb 2025 07:52:50 +0000 Received: from mail-am6eur05on20624.outbound.protection.outlook.com ([2a01:111:f403:2612::624] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1ti7Ne-00000006Vh9-2bLV for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 07:41:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EgfXTY4fkcEJ+IXD2KXBct4opT7t1xGpFyixLOvPEZ+9VYGTtmeYUgxBNLpmytqCSLPMg4VJFDjaTUjka3rwy0c8mYu+KyBaoMPiLY1ooESp6rTS5OeeQdacoedTtPiGN64HGgkmto2WMvgK4xAt//lFjUfgDIUn7Poe4FrKCUaoTSWzybVYtB94EPc6DEICb8d40/I0223AUbGEXnUVseqD+3WTxOWqGhOEPlgSdztLJMfNpxYMkEXNGs1VFpUalaiCHDe8Ax5d9b3y5s9Ob6kmH7FDNoiEVBF5WXPhEgDOO8c3OLmZpuOZj3nxiZUGvTCLqdACiskk/YUWlFr7Sw== 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=I9H/UZrGNJ2uV2Kffx5loszWsQdrI+3pBlee1YOkCbI=; b=RAujjNsGYHXVyeYdzT/bk7QgK0nyaOuZPR9bVIh2cBDSzi4H2B5bHxch1FxXEeBjL2DvJwf51t7apeNgMSx3vlHH1H8n4JElfUdZtuz2/D0gLTQBbT+4s4PTqOOFQqiHK7TEtJ5bQLr6OWqqJMSAclGtMjWidmFvdf3pzWfXEyVIqt/+tPcMBcDxlr24qXewjzYYX7ILyBOJaRVTPcBK0cpQT/7kQ6fj+i37sVc6/ZJkVbua8Hx90w+Rt5/BNiG6oFnEGz/kG9qmzev7ONVkI0Et7pzvg95lvcCdTtO4miQ004ePuk5mWc9h7e8Uwf/qk1YNOYWxcXiDAXV27mzdEA== 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=I9H/UZrGNJ2uV2Kffx5loszWsQdrI+3pBlee1YOkCbI=; b=ikXY0VVpZOsbBz/B1i0ZuHXE0rKnhqJKv3g23wsZQKczxw9KCISSVDbIGpXyo/zgiLTIByWrnLV4KECAc3yYJVX6GTz/BFZ8D++X0jnrRy4UBijWJhlN6UnPF7of9FjoJZQYKwCWfuH3+oMXrGBJId5pvFyuURCCbD3pBsUeFqvLM2rsYMs/BRIdJ3ctGOQgpJqvlWSzfbSW12E+7HVGL0K1oOxrEOCgco/9BfvCESPjHygBS189vuhncUJAYmT1RPOaLujz3pMMfMwkHkXJRvQp78O0bH+9lqG0gNtHwohQlOX4Um8J7E4ZJV2rEBj2EJO1WvBLWuWnxxw+YAzh2w== 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 PA1PR04MB10865.eurprd04.prod.outlook.com (2603:10a6:102:48a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.18; Wed, 12 Feb 2025 07:41:53 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%3]) with mapi id 15.20.8445.008; Wed, 12 Feb 2025 07:41:53 +0000 From: "Peng Fan (OSS)" Date: Wed, 12 Feb 2025 15:40:29 +0800 Subject: [PATCH v2 7/7] MAINTAINERS: add entry for i.MX SCMI extensions Message-Id: <20250212-imx-lmm-cpu-v2-7-3aee005968c1@nxp.com> References: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@nxp.com> In-Reply-To: <20250212-imx-lmm-cpu-v2-0-3aee005968c1@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=1739346036; l=977; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=BIymGkA7Nj8ryPe/v/aNAs5333irqosIJ33tNalCWTs=; b=szFeeck/SpY1sSS8wc/++V623KjdAVWKCB7vVybseLbTtowtBtaHJbAIH5M1sNjXxdNzR1PZg 8Tqq1NCsrP8DznNxyIK80+nDc6m4wXLmx7reb7h/Dwac9I+MmHzWzLh X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2P153CA0014.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::6) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA1PR04MB10865:EE_ X-MS-Office365-Filtering-Correlation-Id: d9968534-3cb4-4362-4ead-08dd4b38b7de 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|7416014|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?piPTNVQOtZN+Nk2pk9uB8oly/4h7XPY?= =?utf-8?q?dhTkb412+7w7n8NxCJhA8FCPZYj1yfFc/mnFcXSKBH7lWDL9bvMEoRR+9lvAnNDnI?= =?utf-8?q?6rNsd+HVvuRk+iRBkH9s4ZvJGIYC4rHQx70bQVChneJJHfn9CRGm68QS+5RVDdDtP?= =?utf-8?q?QS7Mj+DuJ+/UOjPbCUljHO2VbvrqXgEZxl2rCKdN+rGHh4Vq3dXQz91DHWsH1aHyi?= =?utf-8?q?5LfZhx60He3O+shnx50Aq3a5HZ4bit8naT7xA6i4detxC6dulWqBCCdhm5LIgw4ca?= =?utf-8?q?iZ2hmWDyoq2YRs1fuNebbbBOoeGE35L4bTvON1h46to1FtEwoHbgOd6oAeQ6hqvn+?= =?utf-8?q?Daxp1EKC84K+pfOtT1wOdMTs/nBEMFQnT5qqmIXJtdbCTw7RvZ2acJXB73wS+t3Tf?= =?utf-8?q?h0DYTItAm95saiNfxLM+tJ/Z1KtDy1o3XUtaIS7TqPaqqUm89CQ7vxfpPpB6k6Z9M?= =?utf-8?q?vnfw79DzFGdokElJwOVUfGPhdDffEBMq02vllCM2YZ/5Rn8Q8RKy59J+m1VuZd7SB?= =?utf-8?q?xLH5lRZyWERxq/pfnLTCaFgYl+XQ9GbrQE0hNZjs7A/uZq66iHVes84XJjzhHjajy?= =?utf-8?q?ESLNfH+WEOxCRyTUuD7FmIU1EM4nlRKrF7Ti9/E8buB/hkZK3VEI/5l3Hy2Y0/fOj?= =?utf-8?q?6s3FsPbjycppLgSln48xNUPRHzdKolb30v3E+NRCC183wWU1A05x4AMkQahjHx2/y?= =?utf-8?q?B/AaN9VyKXlTgDdpGFkNjgqMVM6+kU3f5bDvtp9Migky+V4wLi4Fv8x+7WUToBDxm?= =?utf-8?q?EeTpg9noQn/S8eTj6tAfDFgE+RHtPmGbERaI01w4yklPAoX5GMOJqQ6IRzcDuluEA?= =?utf-8?q?ARhaMsgt0MkLeFhADUj4z2NlsYkgpiLwoV14q0HQT6eS7CDtcCDWlAb87kSVFhkh9?= =?utf-8?q?DIjGnrcYKct/Q16iHuNAifoBkktjvkAed9e+oMsaEePm1S1wp11ZJA68tJnTQcxHK?= =?utf-8?q?gAJLFYWx7HjE4fNK9gFhLVHhEUE8yHEnHhpmR4x/rvDxwsl7Z5fyg1pQmhGV4c/QD?= =?utf-8?q?8VppGdav15Q7tDRLgUmQuwIJG++kmNyGbLR8obVCLSoszw76y/ybxNE2G7EmDLm3t?= =?utf-8?q?Lv93zIZF5p1W0m8hcUerTft9uuGrAYQs3uFK7uHM5lgIHxY7BND6Gpz6cqC08xGsd?= =?utf-8?q?vEzPHVYxF60YRtrmnWZKigGIqhxpADJN5WqMddENu3lE72UDPLtrp/LVOFvohdgYP?= =?utf-8?q?dTGLTc+JBVslcao/EnrLIErZiUlhvd5vgA7DC/C9vJRQZs/O1UxxX5/nCVvZEwLn6?= =?utf-8?q?IvkM+tX3SP+WsRa3LTpnZ5LorPUjed1OpE/+K+DTnUVExrbihCoWTRy8K7kUjQtSs?= =?utf-8?q?3AAyWdPVwqPyArUpjEg3m7wedc1i6uA3BpzE2akuFf1wXoeb1fKVzJ6415lbPGpsE?= =?utf-8?q?f6ST2PesZQg?= 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)(7416014)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?PyHODvLkn3nDCyutUWpoiL0vSKNb?= =?utf-8?q?qqA+PkHf03vaSmx5NVQsX5Oqzam4VLG8jzgYfBlCODOmGexr4FZbG3YJFa4xAfOSS?= =?utf-8?q?BmUQiPm0GS8uy1vtAUT2A1BihmzKBh0j0aSDyYl6qVbj93PE39UfxJoqEUxiejqlW?= =?utf-8?q?UkULGG8AuTY7dqaFvxkteygL9aOGAyRf2bacPiMMiAb1mUuilsokkgfbStDDPfac8?= =?utf-8?q?53Va168LJSQtDE8yWVFhh0z+9S8PJm0yGCKpNU2hnK/KNJvFi2kF4eFPa6egdV6V6?= =?utf-8?q?S6H++FWzpVwfaL6xDBtAWNOizD3v4fb+ePGHFGU0tmaM6Q4zW95qTrk5FdS6I9Iq6?= =?utf-8?q?xB3Tap6C6GGrzlRVgEddZNlE6XrBr8wlpn+rc0yqUDqcb8zXFCR4SSku+YYXkf2lJ?= =?utf-8?q?BWGMS6XUBb2d1aaXZWfpCifC1DvkjuHdeb6UBVKXSr0jCn23m99PsBrKKNxHyK1fF?= =?utf-8?q?3HnSS6pabB47EtWq/yo/a/8De2nAtHco9x923zCLxjl5xc7Z914wwB+yBmm5QnUAv?= =?utf-8?q?FFc34RJ1VbLPOyr6KZ2WSDTJFq/VomTqttvWbLCk+cD1cguKaDnSLMNmngM0olTN6?= =?utf-8?q?+GYWaRXq8+gNvle3dv8a6YF6tIj/ydo4SPsQkOnHf1OGlqtHNO6jNcap+7aq32jKh?= =?utf-8?q?+jnrEgunXhFsGFxITmCnOdZTJUTmqlYon35Vpd6J8kWEtkQKwKsllxkLYgIEIwRL5?= =?utf-8?q?bfS4yBijL7jlTcBjSDiaT1CB2FWdRCA42aMoo9kWAGlrgKEz0JAcZEiyVUxf/j0e9?= =?utf-8?q?Ljo5cjLPdDE7uMuPsqAIicgY217pSPgMnKssCjtyKUILN+pVwuITwQ7sx2fSjVpEp?= =?utf-8?q?izpDQn+LmuOGONYgcsF+Sh5e6+Q+jAh4S8Lfxfze2jHpMJfGHHTZFW56NSNnm57HY?= =?utf-8?q?/frFVGJLtA1bjzg4kWr/lRm1LXYfZ7uFxZ2vAGqzaQh10pbznMICb+hz2SfKRxpIi?= =?utf-8?q?SVjr5qKQoDYCDq76RHRuDfBb3KORDX0lnObuRPLn63yRofvTxOn8xuba2ZfPupUT/?= =?utf-8?q?zHkpZQixqOtCvuJ5x63l2qsvxO/yO8iTHr61moYKUuamOMkjtbCxGBoEUGCuar6es?= =?utf-8?q?f6t+w31x0eb+9RVyTnZIRwDIcX9xpsykk+cCyg/m+rc2s8Q0KfC/EkfkZIlwvV/mZ?= =?utf-8?q?rrgvZwlvSlikf57yiKLMqCWuCR0BQhczr/Yv67D3oqcD+sRWfPynC41ylKmW/SmLD?= =?utf-8?q?6oBz0l+vGIb92AHUQO6sNKzm/rrBHKg7G9t2wXlpyKIBQPqy/9tylIk1fx53VE6E8?= =?utf-8?q?ioROAGOM8xsYbkc+XfbFnKTp97yUnl3RxDXS1510XEi+/18umFsUyXT8WOYpOqEnu?= =?utf-8?q?Wo2YKdxvSBE0FdCD/aDJZNv2XjGq1+X6X74XTyVt5tvBio4VaYPDe5YOcW+3t6KIm?= =?utf-8?q?HpMVzpdFucTknBvsqVjClrucy7FIuGBz5N9HdsrBNRK3h9BpVN2QjGRHFSw+65eVP?= =?utf-8?q?JA3UTm7obvpTsKW144Ump35fstp+sDA1aWc/PtqFkdHTv0Qn6i0EEwyjjThk0mRj/?= =?utf-8?q?Z9e9MtOb1ptI?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9968534-3cb4-4362-4ead-08dd4b38b7de X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2025 07:41:53.2979 (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: hWxPUg1sc1ALeBUGOsZwvJhXE2iU5yqodpQt/GkWoneTrIazbEFtv/6oZl0rcxdXMDcKoc8XDSuQCasiJ8/CIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10865 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_234158_698723_6ED2C253 X-CRM114-Status: UNSURE ( 7.47 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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 3520ce6f98592f5057bb220da35eaaffa5dd33c4..4a704c98a04b4f17707573f6b7fc1fb4b89c3733 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -23052,6 +23052,15 @@ F: include/linux/sc[mp]i_protocol.h F: include/trace/events/scmi.h F: include/uapi/linux/virtio_scmi.h +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