public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: "Michał Barnaś" <barnas@google.com>
To: u-boot@lists.denx.de
Cc: "Michał Barnaś" <barnas@google.com>,
	"Dinh Nguyen" <dinguyen@kernel.org>,
	"Marek Vasut" <marex@denx.de>, "Simon Glass" <sjg@chromium.org>,
	"Simon Goldschmidt" <simon.k.r.goldschmidt@gmail.com>,
	"Tien Fong Chee" <tien.fong.chee@intel.com>,
	"Tom Rini" <trini@konsulko.com>
Subject: [PATCH v3 1/2] arm: socfpga: arria10: add option to reprogram the FPGA every reboot
Date: Tue, 19 Mar 2024 18:18:13 +0000	[thread overview]
Message-ID: <20240319181949.3083508-2-barnas@google.com> (raw)
In-Reply-To: <20240319181949.3083508-1-barnas@google.com>

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@google.com>
---

Changes in v3:
- Rebase on current master branch
- Drop the TARGET_ prefix in Kconfig
- Remove #ifdefs and use IS_ENABLED

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, 14 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig
index 114d243812..a89bd8ca58 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 SOCFPGA_ARRIA10_ALWAYS_REPROGRAM
+	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..3981d2d4f1 100644
--- a/arch/arm/mach-socfpga/spl_a10.c
+++ b/arch/arm/mach-socfpga/spl_a10.c
@@ -122,7 +122,10 @@ void spl_board_init(void)
 	arch_early_init_r();
 
 	/* If the full FPGA is already loaded, ie.from EPCQ, config fpga pins */
-	if (is_fpgamgr_user_mode()) {
+	if ((IS_ENABLED(CONFIG_SOCFPGA_ARRIA10_ALWAYS_REPROGRAM) &&
+	     is_regular_boot_valid()) ||
+	    (!IS_ENABLED(CONFIG_SOCFPGA_ARRIA10_ALWAYS_REPROGRAM) &&
+	     is_fpgamgr_user_mode())) {
 		ret = config_pins(gd->fdt_blob, "shared");
 		if (ret)
 			return;
@@ -130,7 +133,8 @@ void spl_board_init(void)
 		ret = config_pins(gd->fdt_blob, "fpga");
 		if (ret)
 			return;
-	} else if (!is_fpgamgr_early_user_mode()) {
+	} else if (IS_ENABLED(CONFIG_SOCFPGA_ARRIA10_ALWAYS_REPROGRAM) ||
+		   !is_fpgamgr_early_user_mode()) {
 		/* Program IOSSM(early IO release) or full FPGA */
 		fpgamgr_program(buf, FPGA_BUFSIZ, 0);
 
-- 
2.44.0.291.gc1ea87d7ee-goog


  reply	other threads:[~2024-03-19 18:21 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-22 15:20 [PATCH 0/2] arm: socfpga: arria10: allow to reprogram FPGA with warm reboot Michał Barnaś
2024-02-22 15:20 ` [PATCH 1/2] arm: socfpga: arria10: add option to reprogram the FPGA every reboot Michał Barnaś
2024-03-01  8:14   ` Chee, Tien Fong
2024-03-03 16:22   ` Dinh Nguyen
2024-03-08 17:12     ` [PATCH v2 0/2] arm: socfpga: arria10: allow to reprogram FPGA with warm reboot Michał Barnaś
2024-03-08 17:12       ` [PATCH v2 1/2] arm: socfpga: arria10: add option to reprogram the FPGA every reboot Michał Barnaś
2024-03-08 18:46         ` Marek Vasut
2024-03-19 18:18           ` [PATCH v3 0/2] arm: socfpga: arria10: allow to reprogram FPGA with warm reboot Michał Barnaś
2024-03-19 18:18             ` Michał Barnaś [this message]
2024-03-28  6:38               ` [PATCH v3 1/2] arm: socfpga: arria10: add option to reprogram the FPGA every reboot Chee, Tien Fong
2024-03-19 18:18             ` [PATCH v3 2/2] chameleonv3: set in defconfig for FPGA to reprogram " Michał Barnaś
2024-03-28  8:00             ` [PATCH v3 2/2] chameleonv3: set in defconfig for FPGA to reprogramevery reboot Chee, Tien Fong
2024-03-19 18:22           ` [PATCH v2 1/2] arm: socfpga: arria10: add option to reprogram the FPGA every reboot Michał Barnaś
2024-03-08 17:12       ` [PATCH v2 2/2] chameleonv3: set in defconfig for FPGA to reprogram " Michał Barnaś
2024-02-22 15:20 ` [PATCH " Michał Barnaś
2024-02-29 13:03 ` [PATCH 0/2] arm: socfpga: arria10: allow to reprogram FPGA with warm reboot Dinh Nguyen
2024-02-29 13:49   ` Michał Barnaś
2024-03-01  8:13     ` Chee, Tien Fong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240319181949.3083508-2-barnas@google.com \
    --to=barnas@google.com \
    --cc=dinguyen@kernel.org \
    --cc=marex@denx.de \
    --cc=simon.k.r.goldschmidt@gmail.com \
    --cc=sjg@chromium.org \
    --cc=tien.fong.chee@intel.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox