All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] reset: zynqmp: move reset_assert() into firmware driver
@ 2026-08-20 15:32 Akshay Belsare
  2026-08-20 15:32 ` [PATCH 1/2] reset: zynqmp: move reset assert helper " Akshay Belsare
  2026-08-20 15:32 ` [PATCH 2/2] board: xilinx: zynqmp: use reset assert helper in reset_cpu() Akshay Belsare
  0 siblings, 2 replies; 3+ messages in thread
From: Akshay Belsare @ 2026-08-20 15:32 UTC (permalink / raw)
  To: u-boot, michal.simek; +Cc: git, padmarao.begari, Akshay Belsare

The ZynqMP reset assertion helper currently resides in
drivers/reset/reset-zynqmp.c, even though the driver is built only when
CONFIG_ZYNQMP_FIRMWARE is enabled and the implementation is entirely
firmware-backed. This series moves zynqmp_pm_reset_assert() into
firmware-zynqmp.c, alongside the rest of the PM firmware interfaces.
 
With the helper residing in the firmware driver, reset_cpu() is updated
to invoke zynqmp_pm_reset_assert() directly rather than issuing the PM
request itself or relying on the reset uclass. This is important for
boot flows where reset_cpu() may be called before the reset framework is
available.

Akshay Belsare (2):
  reset: zynqmp: move reset assert helper into firmware driver
  board: xilinx: zynqmp: use reset assert helper in reset_cpu()

 board/xilinx/zynqmp/zynqmp.c       | 7 +++----
 drivers/firmware/firmware-zynqmp.c | 7 +++++++
 drivers/reset/reset-zynqmp.c       | 7 -------
 include/zynqmp_firmware.h          | 2 ++
 4 files changed, 12 insertions(+), 11 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2] reset: zynqmp: move reset assert helper into firmware driver
  2026-08-20 15:32 [PATCH 0/2] reset: zynqmp: move reset_assert() into firmware driver Akshay Belsare
@ 2026-08-20 15:32 ` Akshay Belsare
  2026-08-20 15:32 ` [PATCH 2/2] board: xilinx: zynqmp: use reset assert helper in reset_cpu() Akshay Belsare
  1 sibling, 0 replies; 3+ messages in thread
From: Akshay Belsare @ 2026-08-20 15:32 UTC (permalink / raw)
  To: u-boot, michal.simek
  Cc: git, padmarao.begari, Akshay Belsare, Tom Rini, Simon Glass

zynqmp_pm_reset_assert() is currently implemented in the reset driver,
requiring reset-zynqmp.c to invoke the PM firmware interface directly.
 
Move the helper into firmware-zynqmp.c and expose it through the
firmware layer instead. Since reset assertion has no non-firmware
implementation, this keeps the firmware-specific logic localized to the
firmware driver and simplifies the reset driver.

Signed-off-by: Akshay Belsare <akshay.belsare@amd.com>
---
 drivers/firmware/firmware-zynqmp.c | 7 +++++++
 drivers/reset/reset-zynqmp.c       | 7 -------
 include/zynqmp_firmware.h          | 2 ++
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/firmware/firmware-zynqmp.c b/drivers/firmware/firmware-zynqmp.c
index fae66ccb3d8..9f5556751be 100644
--- a/drivers/firmware/firmware-zynqmp.c
+++ b/drivers/firmware/firmware-zynqmp.c
@@ -175,6 +175,13 @@ unsigned int zynqmp_firmware_version(void)
 	return pm_api_version;
 };
 
+int zynqmp_pm_reset_assert(const u32 reset,
+			   const enum zynqmp_pm_reset_action assert_flag)
+{
+	return xilinx_pm_request(PM_RESET_ASSERT, reset, assert_flag, 0, 0,
+				 0, 0, NULL);
+}
+
 #if defined(CONFIG_ARCH_VERSAL2)
 /*
  * Poll the M-PHY TX/RX config-ready status until it settles or @timeout_us
diff --git a/drivers/reset/reset-zynqmp.c b/drivers/reset/reset-zynqmp.c
index 2b58f3a75b4..eb2f6d0bdfe 100644
--- a/drivers/reset/reset-zynqmp.c
+++ b/drivers/reset/reset-zynqmp.c
@@ -18,13 +18,6 @@ struct zynqmp_reset_priv {
 	u32 nr_reset;
 };
 
-static int zynqmp_pm_reset_assert(const u32 reset,
-				  const enum zynqmp_pm_reset_action assert_flag)
-{
-	return xilinx_pm_request(PM_RESET_ASSERT, reset, assert_flag, 0, 0,
-				 0, 0, NULL);
-}
-
 static int zynqmp_reset_assert(struct reset_ctl *rst)
 {
 	struct zynqmp_reset_priv *priv = dev_get_priv(rst->dev);
diff --git a/include/zynqmp_firmware.h b/include/zynqmp_firmware.h
index f753a67ac27..86f3ccf8932 100644
--- a/include/zynqmp_firmware.h
+++ b/include/zynqmp_firmware.h
@@ -463,6 +463,8 @@ int zynqmp_pm_set_gem_config(u32 node, enum pm_gem_config_type config,
 int zynqmp_pm_is_function_supported(const u32 api_id, const u32 id);
 int zynqmp_mmio_read(const u32 address, u32 *value);
 int zynqmp_mmio_write(const u32 address, const u32 mask, const u32 value);
+int zynqmp_pm_reset_assert(const u32 reset,
+			   const enum zynqmp_pm_reset_action assert_flag);
 int zynqmp_pm_feature(const u32 api_id);
 u32 zynqmp_pm_get_bootmode_reg(void);
 u32 zynqmp_pm_get_pmc_multi_boot_reg(void);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] board: xilinx: zynqmp: use reset assert helper in reset_cpu()
  2026-08-20 15:32 [PATCH 0/2] reset: zynqmp: move reset_assert() into firmware driver Akshay Belsare
  2026-08-20 15:32 ` [PATCH 1/2] reset: zynqmp: move reset assert helper " Akshay Belsare
@ 2026-08-20 15:32 ` Akshay Belsare
  1 sibling, 0 replies; 3+ messages in thread
From: Akshay Belsare @ 2026-08-20 15:32 UTC (permalink / raw)
  To: u-boot, michal.simek; +Cc: git, padmarao.begari, Akshay Belsare, Tom Rini

reset_cpu() currently invokes xilinx_pm_request(PM_RESET_ASSERT, ...)
directly to assert a system reset. Switch it to use
zynqmp_pm_reset_assert(), matching the approach used by
reset-zynqmp.c and centralizing the firmware interaction behind a
common helper.
 
Keep the IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE) early return unchanged so
the reset path continues to compile out when firmware support is not
enabled.

Signed-off-by: Akshay Belsare <akshay.belsare@amd.com>
---
 board/xilinx/zynqmp/zynqmp.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index 5d13881f3ec..c7464b493c5 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -288,13 +288,12 @@ void reset_cpu(void)
 		return;
 	}
 
-	/* In case of !CONFIG_ZYNQMP_FIRMWARE the call to 'xilinx_pm_request()'
+	/* In case of !CONFIG_ZYNQMP_FIRMWARE the call to 'zynqmp_pm_reset_assert()'
 	 * will be removed by the compiler due to the early return.
-	 * If CONFIG_ZYNQMP_FIRMWARE is defined in SPL 'xilinx_pm_request()'
+	 * If CONFIG_ZYNQMP_FIRMWARE is defined in SPL 'zynqmp_pm_reset_assert()'
 	 * will send command over IPI and requires pmufw to be present.
 	 */
-	xilinx_pm_request(PM_RESET_ASSERT, ZYNQMP_PM_RESET_SOFT,
-			  PM_RESET_ACTION_ASSERT, 0, 0, 0, 0, NULL);
+	zynqmp_pm_reset_assert(ZYNQMP_PM_RESET_SOFT, PM_RESET_ACTION_ASSERT);
 }
 #endif
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-08-20 15:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-20 15:32 [PATCH 0/2] reset: zynqmp: move reset_assert() into firmware driver Akshay Belsare
2026-08-20 15:32 ` [PATCH 1/2] reset: zynqmp: move reset assert helper " Akshay Belsare
2026-08-20 15:32 ` [PATCH 2/2] board: xilinx: zynqmp: use reset assert helper in reset_cpu() Akshay Belsare

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.