diff options
| author | Michal Simek <[email protected]> | 2026-05-25 13:45:46 +0200 |
|---|---|---|
| committer | Michal Simek <[email protected]> | 2026-06-08 10:50:06 +0200 |
| commit | 8efa173b389e5cef6eece991351442baea0264fd (patch) | |
| tree | bd545cc373e2646007a97ab90bdb5be52f481982 | |
| parent | f59b7a010e2e29d0e2890ec1e60fd0b3f0714ec0 (diff) | |
reset: zynqmp: Implement rst_reset using PM_RESET_ACTION_PULSE
Implement the rst_reset operation in the ZynqMP reset driver to use
PM_RESET_ACTION_PULSE. This allows the reset controller to perform
a reset pulse in a single firmware call instead of separate assert
and deassert calls.
This matches the Linux kernel implementation of zynqmp_reset_reset().
Reviewed-by: Simon Glass <[email protected]>
Signed-off-by: Michal Simek <[email protected]>
Link: https://lore.kernel.org/r/be77d6f1b60f591ef626c14229d85c5cab867967.1779709539.git.michal.simek@amd.com
| -rw-r--r-- | drivers/reset/reset-zynqmp.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/reset/reset-zynqmp.c b/drivers/reset/reset-zynqmp.c index d04e8eef3bb..2b58f3a75b4 100644 --- a/drivers/reset/reset-zynqmp.c +++ b/drivers/reset/reset-zynqmp.c @@ -45,6 +45,16 @@ static int zynqmp_reset_deassert(struct reset_ctl *rst) PM_RESET_ACTION_RELEASE); } +static int zynqmp_reset_reset(struct reset_ctl *rst, ulong delay_us) +{ + struct zynqmp_reset_priv *priv = dev_get_priv(rst->dev); + + dev_dbg(rst->dev, "%s(rst=%p) (id=%lu)\n", __func__, rst, rst->id); + + return zynqmp_pm_reset_assert(priv->reset_id + rst->id, + PM_RESET_ACTION_PULSE); +} + static int zynqmp_reset_request(struct reset_ctl *rst) { struct zynqmp_reset_priv *priv = dev_get_priv(rst->dev); @@ -74,6 +84,7 @@ const struct reset_ops zynqmp_reset_ops = { .request = zynqmp_reset_request, .rst_assert = zynqmp_reset_assert, .rst_deassert = zynqmp_reset_deassert, + .rst_reset = zynqmp_reset_reset, }; static const struct udevice_id zynqmp_reset_ids[] = { |
