On 03.06.2024 17:08, Michal Simek wrote:
On 6/3/24 16:50, Lukas Funke wrote:
On 03.06.2024 16:32, Michal Simek wrote:
On 6/3/24 15:34, lukas.funke-...@weidmueller.com wrote:
From: Lukas Funke <lukas.fu...@weidmueller.com>
This commit enables SPL to reset the CPU via PMU-firmware. The usual
reset mechanism requires bl31 to be loaded which may not be the case in
SPL.
Signed-off-by: Lukas Funke <lukas.fu...@weidmueller.com>
---
board/xilinx/zynqmp/zynqmp.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/board/xilinx/zynqmp/zynqmp.c
b/board/xilinx/zynqmp/zynqmp.c
index 95a134b972d..99f5c178c1d 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -40,6 +40,7 @@
#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/sizes.h>
+#include <dt-bindings/reset/xlnx-zynqmp-resets.h>
#include "../common/board.h"
#include "pm_cfg_obj.h"
@@ -285,6 +286,14 @@ int dram_init(void)
#if !CONFIG_IS_ENABLED(SYSRESET)
void reset_cpu(void)
{
+ if (!CONFIG_IS_ENABLED(ZYNQMP_FIRMWARE)) {
+ log_warning("reset failed: ZYNQMP_FIRMWARE disabled");
+ return;
+ }
+
+ xilinx_pm_request(PM_RESET_ASSERT,
+ ZYNQMP_PM_RESET_START + ZYNQMP_RESET_SOFT,
+ PM_RESET_ACTION_ASSERT, 0, 0, NULL);
If you disable ZYNQMP_FIRMWARE xilinx_pm_request() should fail.
we should likely fix it in drivers/mmc/zynq_sdhci.c:114
That's an odd place for a default implementation. I'd like to move the
functions to a common location but I've no idea where. That's probably
why the last developer moved it here. Any suggestions?
static inline to include/zynqmp_firmware.h?
Sound like the right place.
Currently zynqmp is not buildable when disabling CONFIG_ZYNQMP_FIRMWARE.
I'm not sure if it even makes sense to disable it. Maybe this should be
enforced!?
However, I'll drop the 1/2 patch and convert 'CONFIG_IS_ENABLED' to
'IS_ENABLED' in v2 to get finish this series. Refactoring should be
addressed in another series.
Best regards
- Lukas
M