| Message ID | 20260902141744.2422566-1-charles.perry@microchip.com |
|---|---|
| Headers | show
Return-Path: <u-boot-bounces@lists.u-boot-project.org> X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.u-boot-project.org header.i=@lists.u-boot-project.org header.a=rsa-sha256 header.s=default header.b=Iv8Xta0x; dkim=pass (2048-bit key; unprotected) header.d=microchip.com header.i=@microchip.com header.a=rsa-sha256 header.s=mchp header.b=kWZV5qql; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.u-boot-project.org (client-ip=140.211.166.138; helo=smtp1.osuosl.org; envelope-from=u-boot-bounces@lists.u-boot-project.org; receiver=patchwork.ozlabs.org) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4hZlFP1xlhz1xwZ for <incoming@patchwork.ozlabs.org>; Thu, 03 Sep 2026 00:18:17 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id D797280F6E; Wed, 2 Sep 2026 14:18:15 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id S6ZTcgrpLgbp; Wed, 2 Sep 2026 14:18:15 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=140.211.166.142; helo=lists1.osuosl.org; envelope-from=u-boot-bounces@lists.u-boot-project.org; receiver=<UNKNOWN> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lists.u-boot-project.org; s=default; t=1788358694; bh=/YUVkEdEy15efg0OF+YU+zwkC5ISNOlNFuQkmJFtnqM=; h=From:To:CC:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From; b=Iv8Xta0xxlW+dFg76i3wuszhMZdmcvHngH3/HhexfRMa2WRme/zCL3Url+n5Uxd7P 15JVzLFnHosI3zu5ZzcchsRUnt3lXeg6FKXXiflMl5f47ow/je3qnBx0o/6bStNm9Y Hnna+sNGihoFg4XpPvNSyQGvoxKb4mRrWP6RWZL34smoBI2xxHlyZGZ/ZfQH25vZgk PUNXuErV0wFB6yICEFtQl11Xa8Onu1VUriitS6OLhmT3l7HGT/YV8YFuVu2IsNUgNQ C5q/c47U0YoXkwUx1txw9Y9VYdOTg6Cj4DnB3OD861vOz0VnQK9bnvVW+ZJdgmZhr1 fYbBcfrejeNmQ== Received: from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142]) by smtp1.osuosl.org (Postfix) with ESMTP id C2F0780F6F; Wed, 2 Sep 2026 14:18:14 +0000 (UTC) X-Original-To: u-boot@lists.u-boot-project.org Delivered-To: u-boot@lists.u-boot-project.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists1.osuosl.org (Postfix) with ESMTP id 071DD363 for <u-boot@lists.u-boot-project.org>; Wed, 2 Sep 2026 14:18:14 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id ED657400A6 for <u-boot@lists.u-boot-project.org>; Wed, 2 Sep 2026 14:18:13 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id JGMar_PQTfGG for <u-boot@lists.u-boot-project.org>; Wed, 2 Sep 2026 14:18:12 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=prvs=698db811e=charles.perry@microchip.com; receiver=<UNKNOWN> Authentication-Results: smtp2.osuosl.org; dmarc=pass (p=reject dis=none) header.from=microchip.com Authentication-Results: smtp2.osuosl.org; spf=fail smtp.mailfrom=microchip.com Authentication-Results: smtp2.osuosl.org; dkim=pass (2048-bit key, unprotected) header.d=microchip.com header.i=@microchip.com header.a=rsa-sha256 header.s=mchp header.b=kWZV5qql Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) by smtp2.osuosl.org (Postfix) with ESMTPS id 380C14006F for <u-boot@lists.u-boot-project.org>; Wed, 2 Sep 2026 14:18:10 +0000 (UTC) Received: by phobos.denx.de (Postfix, from userid 109) id 124598424C; Wed, 2 Sep 2026 16:18:08 +0200 (CEST) Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id D03DF83EEF for <u-boot@lists.denx.de>; Wed, 2 Sep 2026 16:18:04 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=microchip.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=prvs=698db811e=Charles.Perry@microchip.com Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=microchip.com header.i=@microchip.com header.b="kWZV5qql"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1788358684; x=1819894684; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=QTH8LI3s42lI9A7Z2KFuZTKEtm9Pw+4xy5C9wTfy3zI=; b=kWZV5qqldbK6BWjfY/fq41ZqUwbqnTtozRMmmDzR7NQicQ+sADhd3c2a 0lkDuNPTDh8vmEBfSqFPpGYvrcNyzsqP4wcEEdihiXFssesBQb9P0Kfz3 /M1/XcPqAnX6I0eCqf9uSE/9Oe9CYbwV2L64lhH7lsF2kPD1Wo7heS12N MRs1LaBIh4vWvPDnv10V1NYbAoWoafrauLMlyNFTw6bmBymgt1LmjCMrS OrE6Prn3JUxQbaeK/cd81VRVWXcDCrrhfxUq/FP/VBhb8cblklk6r4kIP IQRcG7VgPUQlBHGs4Y1q/n5oEqwU36PE1xN7NcBUSwqEdOLQ+fNbp8lOV A==; X-CSE-ConnectionGUID: weTUAHovRYGowHGcPlCL8Q== X-CSE-MsgGUID: y5ZWrZxVSci15SQ/w7WYUg== X-IronPort-AV: E=Sophos;i="6.25,258,1779174000"; d="scan'208";a="62141776" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 02 Sep 2026 07:18:01 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.58; Wed, 2 Sep 2026 07:18:01 -0700 Received: from bby-cbu-swbuild03.eng.microchip.com (10.10.85.11) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2507.58 via Frontend Transport; Wed, 2 Sep 2026 07:18:00 -0700 From: Charles Perry <charles.perry@microchip.com> To: <u-boot@lists.denx.de> CC: <charles.perry@microchip.com>, Rahul Pathak <rahul@summations.net>, "Anup Patel" <anup@brainfault.org>, Paul Walmsley <pjw@kernel.org>, Palmer Dabbelt <palmer@dabbelt.com>, Albert Ou <aou@eecs.berkeley.edu>, Alexandre Ghiti <alex@ghiti.fr>, Romain Caritey <romain.caritey@microchip.com>, "Mame Maria Mbaye" <MameMaria.Mbaye@microchip.com>, Tom Rini <trini@konsulko.com>, Heinrich Schuchardt <heinrich.schuchardt@canonical.com>, Rick Chen <rick@andestech.com>, Leo Yu-Chi Liang <ycliang@andestech.com>, Michal Simek <michal.simek@amd.com>, Conor Dooley <conor@kernel.org>, Yao Zi <me@ziyao.cc>, Peng Fan <peng.fan@oss.nxp.com> Subject: [PATCH v3 0/5] Add support for RPMI to U-Boot Date: Wed, 2 Sep 2026 07:17:26 -0700 Message-ID: <20260902141744.2422566-1-charles.perry@microchip.com> X-Mailer: git-send-email 2.52.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean X-BeenThere: u-boot@lists.u-boot-project.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: U-Boot discussion <u-boot.lists.u-boot-project.org> List-Unsubscribe: <https://lists.u-boot-project.org/mailman/options/u-boot>, <mailto:u-boot-request@lists.u-boot-project.org?subject=unsubscribe> List-Archive: <http://lists.u-boot-project.org/pipermail/u-boot/> List-Post: <mailto:u-boot@lists.u-boot-project.org> List-Help: <mailto:u-boot-request@lists.u-boot-project.org?subject=help> List-Subscribe: <https://lists.u-boot-project.org/mailman/listinfo/u-boot>, <mailto:u-boot-request@lists.u-boot-project.org?subject=subscribe> Errors-To: u-boot-bounces@lists.u-boot-project.org |
| Series |
Add support for RPMI to U-Boot
|
expand
|
Hello, This series adds support for RISC-V Platform Management Interface (RPMI) to U-Boot. RPMI is an OS-agnostic protocol for communication between an Application Processor (AP) and a Platform Microcontroller (PuC) [1]. The goals and purpose of RPMI are similar to ARM's SCMI. This patchset first adds an abstraction layer for the transport (UCLASS_RPMI), then adds two transport layer (SBI MPXY and shared memory) and finally adds one client (or service group in RPMI jargon): the clock service group. This series also includes a sandbox mode for which the RPMI transport doesn't attach to a firmware but contains a simulation of a firmware. This reuses code from librpmi [2] to create the message responses. From V3, this series also includes the "mpxy" command line tool created by Rahul [6]. Apart from the spec [1], this series reuses code from the Linux SBI MPXY driver [3], OpenSBI shared memory transport [4] and Linux RPMI clock driver [5]. This was tested on a PIC64-HPSC SoC which features an application cluster and a system controller with isolated address spaces, hence the need for RPMI. I've tested the interoperability between RPMI clients and transports with an S-Mode U-boot (using the MPXY transport) and M-Mode U-Boot (using shared memory transport) and the following device tree fragment: ``` firmware { rpmi: mailbox@7000000000 { compatible = "riscv,rpmi-shmem-mbox"; reg = <0x70 0x00000000 0x0 0x3000>, <0x70 0x00003000 0x0 0x3000>, <0x70 0x00006000 0x0 0x1000>, <0x70 0x00007000 0x0 0x1000>; reg-names = "a2p-req", "p2a-ack", "p2a-req", "a2p-ack"; riscv,slot-size = <64>; #mbox-cells = <1>; }; ifndef CONFIG_RISCV_MMODE clock-service { compatible = "riscv,rpmi-mpxy-clock"; mboxes = <&rpmi 0x8>; riscv,sbi-mpxy-channel-id = <0x1000>; }; mpxy_mbox: mailbox { compatible = "riscv,sbi-mpxy-mbox"; #mbox-cells = <2>; }; endif sysc_clk: clock-controller { compatible = "riscv,rpmi-clock"; ifdef CONFIG_RISCV_MMODE mboxes = <&rpmi 0x8>; else mboxes = <&mpxy_mbox 0x1000 0x0>; endif #clock-cells = <1>; }; ``` [1]: https://github.com/riscv-non-isa/riscv-rpmi [2]: https://github.com/riscv-software-src/librpmi [3]: https://elixir.bootlin.com/linux/v7.0.10/source/drivers/mailbox/riscv-sbi-mpxy-mbox.c [4]: https://elixir.bootlin.com/opensbi/v1.8.1/source/lib/utils/mailbox/fdt_mailbox_rpmi_shmem.c [5]: https://elixir.bootlin.com/linux/v7.0.10/source/drivers/clk/clk-rpmi.c [6]: https://lore.kernel.org/all/20260709175605.1070755-1-rahul.pathak@oss.qualcomm.com/ Cc: Rahul Pathak <rahul@summations.net> Cc: Anup Patel <anup@brainfault.org> Cc: Paul Walmsley <pjw@kernel.org> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Alexandre Ghiti <alex@ghiti.fr> Cc: Romain Caritey <romain.caritey@microchip.com> Cc: Mame Maria Mbaye <MameMaria.Mbaye@microchip.com> Cc: Tom Rini <trini@konsulko.com> Cc: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Cc: Rick Chen <rick@andestech.com> Cc: Leo Yu-Chi Liang <ycliang@andestech.com> Cc: Michal Simek <michal.simek@amd.com> Cc: Conor Dooley <conor@kernel.org> Cc: Yao Zi <me@ziyao.cc> Cc: Peng Fan <peng.fan@oss.nxp.com> Changes in v3: - Added the "mpxy" command from Rahul. See [6]. Changes in v2: - Drop the device-power service group as the DT bindings for it are not mainlined (was patch 5 and 7). - Reorder headers in all .c files. - Don't null check pointers before free(). - Improve error messages in rpmi_check_versions() (patch 1). - Remove struct sbi_mpxy_rpmi_channel_attrs and struct sbi_mpxy_channel_attrs for simpler u32 arrays (patch 2). - Remove transition_latency from struct rpmi_clk_def as it's unused (patch 4). - Simplify last return path of _rpmi_clk_enable_disable() (patch 4). - Move the call to _rpmi_clk_get_rate() from _rpmi_clk_set_rate() to rpmi_clk_set_rate() (patch 4). Charles Perry (4): firmware: rpmi: add support for the SBI MPXY transport firmware: rpmi: add support for shared memory transport drivers: clk: add support for RPMI clocks firmware: rpmi: add a test and a sandbox driver Rahul Pathak (1): drivers: firmware: rpmi: Add the mpxy command MAINTAINERS | 2 + arch/riscv/include/asm/sbi.h | 57 ++ arch/sandbox/dts/test.dts | 12 + cmd/riscv/Makefile | 1 + configs/sandbox_defconfig | 2 + drivers/clk/Kconfig | 7 + drivers/clk/Makefile | 1 + drivers/clk/clk_rpmi.c | 344 +++++++++ drivers/firmware/rpmi/Kconfig | 27 +- drivers/firmware/rpmi/Makefile | 3 + drivers/firmware/rpmi/rpmi-sandbox-clock.c | 446 ++++++++++++ drivers/firmware/rpmi/rpmi-sandbox.c | 156 ++++ drivers/firmware/rpmi/rpmi-sandbox.h | 47 ++ drivers/firmware/rpmi/rpmi-sbi-mpxy.c | 794 +++++++++++++++++++++ drivers/firmware/rpmi/rpmi-shmem.c | 473 ++++++++++++ include/rpmi_proto.h | 62 ++ test/dm/Makefile | 1 + test/dm/rpmi.c | 48 ++ 18 files changed, 2482 insertions(+), 1 deletion(-) create mode 100644 drivers/clk/clk_rpmi.c create mode 100644 drivers/firmware/rpmi/rpmi-sandbox-clock.c create mode 100644 drivers/firmware/rpmi/rpmi-sandbox.c create mode 100644 drivers/firmware/rpmi/rpmi-sandbox.h create mode 100644 drivers/firmware/rpmi/rpmi-sbi-mpxy.c create mode 100644 drivers/firmware/rpmi/rpmi-shmem.c create mode 100644 test/dm/rpmi.c