* [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.