[PATCH v2 1/2] arm: socfpga: arria10: add option to reprogram the FPGA every reboot

Michał Barnaś barnas at google.com
Tue Mar 19 19:22:05 CET 2024


On Fri, Mar 8, 2024 at 8:01 PM Marek Vasut <marex at denx.de> wrote:
>
> On 3/8/24 6:12 PM, Michał Barnaś wrote:
> > Add Kconfig that enables FPGA reprogramming with warm boot on Arria 10.
> > This option allows to change the bitstream on the filesystem and apply
> > changes with warm reboot without the need for a power cycle.
> >
> > Signed-off-by: Michał Barnaś <barnas at google.com>
> > ---
> >
> > Changes in v2:
> > - Rebase on current master branch
> >
> >   arch/arm/mach-socfpga/Kconfig   | 8 ++++++++
> >   arch/arm/mach-socfpga/spl_a10.c | 8 ++++++++
> >   2 files changed, 16 insertions(+)
> >
> > diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig
> > index 114d243812..89303f1f16 100644
> > --- a/arch/arm/mach-socfpga/Kconfig
> > +++ b/arch/arm/mach-socfpga/Kconfig
> > @@ -80,6 +80,14 @@ config TARGET_SOCFPGA_ARRIA10
> >       imply FPGA_SOCFPGA
> >       imply SPL_USE_TINY_PRINTF
> >
> > +config TARGET_SOCFPGA_ARRIA10_ALWAYS_REPROGRAM
>
> This is not TARGET (as in SoC), but a regular config option, so please
> drop the TARGET_ prefix .
>
> > +     bool "Always reprogram Arria 10 FPGA"
> > +     depends on TARGET_SOCFPGA_ARRIA10
> > +     help
> > +       Arria 10 FPGA is only programmed during the cold boot.
> > +       This option forces the FPGA to be reprogrammed every reboot,
> > +       allowing to change the bitstream and apply it with warm reboot.
> > +
> >   config TARGET_SOCFPGA_CYCLONE5
> >       bool
> >       select TARGET_SOCFPGA_GEN5
> > diff --git a/arch/arm/mach-socfpga/spl_a10.c b/arch/arm/mach-socfpga/spl_a10.c
> > index 9edbbf4a29..d5d3327a42 100644
> > --- a/arch/arm/mach-socfpga/spl_a10.c
> > +++ b/arch/arm/mach-socfpga/spl_a10.c
> > @@ -122,7 +122,11 @@ void spl_board_init(void)
> >       arch_early_init_r();
> >
> >       /* If the full FPGA is already loaded, ie.from EPCQ, config fpga pins */
> > +#ifdef CONFIG_TARGET_SOCFPGA_ARRIA10_ALWAYS_REPROGRAM
> > +     if (is_regular_boot_valid()) {
> > +#else
> >       if (is_fpgamgr_user_mode()) {
> > +#endif
>
> Use CONFIG_IS_ENABLED() or IS_ENABLED() macro please .

I used the ifdefs because I thought that it would be more readable,
but changed as you requested.
Thank you for your response.


More information about the U-Boot mailing list