[PATCH v2] platform: openpiton: Move openpiton platform from fpga to generic
Anup Patel
anup at brainfault.org
Tue Aug 26 04:42:35 PDT 2025
On Tue, Aug 26, 2025 at 4:55 PM Anup Patel <anup at brainfault.org> wrote:
>
> On Wed, Aug 13, 2025 at 5:01 PM Manuel Hernández Méndez
> <maherme.dev at gmail.com> wrote:
> >
> > The OpenPiton framework has a generic PMU that is not used by OpenSBI.
> > Due to OpenSBI’s build system we cannot directly reuse the generic
> > platform functions, so move the OpenPiton platform to generic. Also due
> > to the generic platform is where new features are added.
> >
> > Signed-off-by: Manuel Hernández Méndez <maherme.dev at gmail.com>
>
> Overall, this movement is in right direction. If you already have DT nodes
> for timer, clint, and plic in the OpenPiton FDT passed to OpenSBI then
> generic/openhwgroup/openpiton.c can be further simplified but this can
> be done as separate patch.
>
> Reviewed-by: Anup Patel <anup at brainfault.org>
>
> Applied this patch to the riscv/opensbi repo.
I forgot to mention. I have taken care of generic platform compilation
error for RV32 with this patch and also updated documentation to
reflect the platform movement.
Thanks,
Anup
>
> Thanks,
> Anup
>
> > ---
> > platform/fpga/openpiton/Kconfig | 10 -----
> > platform/fpga/openpiton/configs/defconfig | 0
> > platform/fpga/openpiton/objects.mk | 41 ------------------
> > platform/generic/Kconfig | 4 ++
> > platform/generic/configs/defconfig | 1 +
> > platform/generic/openhwgroup/objects.mk | 8 ++++
> > .../openhwgroup/openpiton.c} | 43 ++++++++-----------
> > 7 files changed, 31 insertions(+), 76 deletions(-)
> > delete mode 100644 platform/fpga/openpiton/Kconfig
> > delete mode 100644 platform/fpga/openpiton/configs/defconfig
> > delete mode 100644 platform/fpga/openpiton/objects.mk
> > create mode 100644 platform/generic/openhwgroup/objects.mk
> > rename platform/{fpga/openpiton/platform.c => generic/openhwgroup/openpiton.c} (82%)
> >
> > diff --git a/platform/fpga/openpiton/Kconfig b/platform/fpga/openpiton/Kconfig
> > deleted file mode 100644
> > index bc9c86ee..00000000
> > --- a/platform/fpga/openpiton/Kconfig
> > +++ /dev/null
> > @@ -1,10 +0,0 @@
> > -# SPDX-License-Identifier: BSD-2-Clause
> > -
> > -config PLATFORM_OPENPITON_FPGA
> > - bool
> > - select FDT
> > - select IPI_MSWI
> > - select IRQCHIP_PLIC
> > - select SERIAL_UART8250
> > - select TIMER_MTIMER
> > - default y
> > diff --git a/platform/fpga/openpiton/configs/defconfig b/platform/fpga/openpiton/configs/defconfig
> > deleted file mode 100644
> > index e69de29b..00000000
> > diff --git a/platform/fpga/openpiton/objects.mk b/platform/fpga/openpiton/objects.mk
> > deleted file mode 100644
> > index 1a0ce0c7..00000000
> > --- a/platform/fpga/openpiton/objects.mk
> > +++ /dev/null
> > @@ -1,41 +0,0 @@
> > -#
> > -# SPDX-License-Identifier: BSD-2-Clause
> > -#
> > -# Copyright (c) 2020 Western Digital Corporation or its affiliates.
> > -#
> > -
> > -# Compiler flags
> > -platform-cppflags-y =
> > -platform-cflags-y =
> > -platform-asflags-y =
> > -platform-ldflags-y =
> > -
> > -# Objects to build
> > -platform-objs-y += platform.o
> > -
> > -PLATFORM_RISCV_XLEN = 64
> > -
> > -# Blobs to build
> > -FW_JUMP=n
> > -
> > -ifeq ($(PLATFORM_RISCV_XLEN), 32)
> > - # This needs to be 4MB aligned for 32-bit support
> > - FW_JUMP_ADDR=0x80400000
> > - else
> > - # This needs to be 2MB aligned for 64-bit support
> > - FW_JUMP_ADDR=0x80200000
> > - endif
> > -FW_JUMP_FDT_ADDR=0x82200000
> > -
> > -# Firmware with payload configuration.
> > -FW_PAYLOAD=y
> > -
> > -ifeq ($(PLATFORM_RISCV_XLEN), 32)
> > -# This needs to be 4MB aligned for 32-bit support
> > - FW_PAYLOAD_OFFSET=0x400000
> > -else
> > -# This needs to be 2MB aligned for 64-bit support
> > - FW_PAYLOAD_OFFSET=0x200000
> > -endif
> > -FW_PAYLOAD_FDT_ADDR=0x82200000
> > -FW_PAYLOAD_ALIGN=0x1000
> > diff --git a/platform/generic/Kconfig b/platform/generic/Kconfig
> > index a24d6ab2..7559a4bd 100644
> > --- a/platform/generic/Kconfig
> > +++ b/platform/generic/Kconfig
> > @@ -36,6 +36,10 @@ config PLATFORM_ANDES_AE350
> > select ANDES_PMA
> > default n
> >
> > +config PLATFORM_OPENHWGROUP_OPENPITON
> > + bool "OpenHWGroup Openpiton support"
> > + default n
> > +
> > config PLATFORM_RENESAS_RZFIVE
> > bool "Renesas RZ/Five support"
> > select ANDES_PMA
> > diff --git a/platform/generic/configs/defconfig b/platform/generic/configs/defconfig
> > index c7a6531e..4b93d0bc 100644
> > --- a/platform/generic/configs/defconfig
> > +++ b/platform/generic/configs/defconfig
> > @@ -7,6 +7,7 @@ CONFIG_PLATFORM_SOPHGO_SG2042=y
> > CONFIG_PLATFORM_STARFIVE_JH7110=y
> > CONFIG_PLATFORM_THEAD=y
> > CONFIG_PLATFORM_MIPS_P8700=y
> > +CONFIG_PLATFORM_OPENHWGROUP_OPENPITON=y
> > CONFIG_FDT_CPPC=y
> > CONFIG_FDT_CPPC_RPMI=y
> > CONFIG_FDT_GPIO=y
> > diff --git a/platform/generic/openhwgroup/objects.mk b/platform/generic/openhwgroup/objects.mk
> > new file mode 100644
> > index 00000000..ab6ca79d
> > --- /dev/null
> > +++ b/platform/generic/openhwgroup/objects.mk
> > @@ -0,0 +1,8 @@
> > +#
> > +# SPDX-License-Identifier: BSD-2-Clause
> > +#
> > +# Copyright (c) 2020 Western Digital Corporation or its affiliates.
> > +#
> > +
> > +carray-platform_override_modules-$(CONFIG_PLATFORM_OPENHWGROUP_OPENPITON) += openhwgroup_openpiton
> > +platform-objs-$(CONFIG_PLATFORM_OPENHWGROUP_OPENPITON) += openhwgroup/openpiton.o
> > diff --git a/platform/fpga/openpiton/platform.c b/platform/generic/openhwgroup/openpiton.c
> > similarity index 82%
> > rename from platform/fpga/openpiton/platform.c
> > rename to platform/generic/openhwgroup/openpiton.c
> > index faa299ce..94567abb 100644
> > --- a/platform/fpga/openpiton/platform.c
> > +++ b/platform/generic/openhwgroup/openpiton.c
> > @@ -3,12 +3,7 @@
> > * Copyright (c) 2020 Western Digital Corporation or its affiliates.
> > */
> >
> > -#include <sbi/riscv_asm.h>
> > -#include <sbi/riscv_encoding.h>
> > -#include <sbi/riscv_io.h>
> > -#include <sbi/sbi_const.h>
> > -#include <sbi/sbi_hart.h>
> > -#include <sbi/sbi_platform.h>
> > +#include <platform_override.h>
> > #include <sbi_utils/fdt/fdt_helper.h>
> > #include <sbi_utils/fdt/fdt_fixup.h>
> > #include <sbi_utils/ipi/aclint_mswi.h>
> > @@ -156,25 +151,23 @@ static int openpiton_timer_init(void)
> > return aclint_mtimer_cold_init(&mtimer, NULL);
> > }
> >
> > -/*
> > - * Platform descriptor.
> > - */
> > -const struct sbi_platform_operations platform_ops = {
> > - .early_init = openpiton_early_init,
> > - .final_init = openpiton_final_init,
> > - .irqchip_init = openpiton_irqchip_init,
> > - .ipi_init = openpiton_ipi_init,
> > - .timer_init = openpiton_timer_init,
> > +static int openhwgroup_openpiton_platform_init(const void *fdt, int nodeoff, const struct fdt_match *match)
> > +{
> > + generic_platform_ops.early_init = openpiton_early_init;
> > + generic_platform_ops.timer_init = openpiton_timer_init;
> > + generic_platform_ops.ipi_init = openpiton_ipi_init;
> > + generic_platform_ops.irqchip_init = openpiton_irqchip_init;
> > + generic_platform_ops.final_init = openpiton_final_init;
> > +
> > + return 0;
> > +}
> > +
> > +static const struct fdt_match openhwgroup_openpiton_match[] = {
> > + { .compatible = "openpiton,cva6platform" },
> > + { },
> > };
> >
> > -const struct sbi_platform platform = {
> > - .opensbi_version = OPENSBI_VERSION,
> > - .platform_version = SBI_PLATFORM_VERSION(0x0, 0x01),
> > - .name = "OPENPITON RISC-V",
> > - .features = SBI_PLATFORM_DEFAULT_FEATURES,
> > - .hart_count = OPENPITON_DEFAULT_HART_COUNT,
> > - .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE,
> > - .heap_size =
> > - SBI_PLATFORM_DEFAULT_HEAP_SIZE(OPENPITON_DEFAULT_HART_COUNT),
> > - .platform_ops_addr = (unsigned long)&platform_ops
> > +const struct fdt_driver openhwgroup_openpiton = {
> > + .match_table = openhwgroup_openpiton_match,
> > + .init = openhwgroup_openpiton_platform_init,
> > };
> > --
> > 2.34.1
> >
> >
> > --
> > opensbi mailing list
> > opensbi at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/opensbi
More information about the opensbi
mailing list