On 23/03/22, Jorge Ramirez-Ortiz wrote: > From 528b3117a36b7b4eea1839afbea7191d60638b0c Mon Sep 17 00:00:00 2001 > From: Jorge Ramirez-Ortiz <jo...@foundries.io> > Date: Wed, 23 Mar 2022 14:41:15 +0100 > Subject: [PATCH] arm64: zynqmp: enable the PMUFW watchdog
um, seems my sendpatch script is a bit off. please let me know if I should send a v2. > > If the PMUFW was built with support for the CSU watchdog we must let the > firmware know that it can be started. > > We do this by faking the FSBL done state. > > Reference code in PMUFW: > https://github.com/Xilinx/embeddedsw/blob/master/lib/sw_apps/zynqmp_pmufw/src/xpfw_mod_common.c#L36 > > It needs this fix on the PMUFW > https://github.com/Xilinx/embeddedsw/pull/190 > > Signed-off-by: Jorge Ramirez-Ortiz <jo...@foundries.io> > --- > arch/arm/mach-zynqmp/include/mach/hardware.h | 5 ++++- > board/xilinx/zynqmp/zynqmp.c | 4 ++++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/mach-zynqmp/include/mach/hardware.h > b/arch/arm/mach-zynqmp/include/mach/hardware.h > index a70d6d611b..24c3ef3d7d 100644 > --- a/arch/arm/mach-zynqmp/include/mach/hardware.h > +++ b/arch/arm/mach-zynqmp/include/mach/hardware.h > @@ -174,8 +174,11 @@ struct csu_regs { > > #define ZYNQMP_PMU_BASEADDR 0xFFD80000 > > +#define FSBL_COMPLETION 0x1 > + > struct pmu_regs { > - u32 reserved[18]; > + u32 reserved[17]; > + u32 gen_storage5; /* 0x44 */ > u32 gen_storage6; /* 0x48 */ > }; > > diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c > index 70b3c81f12..c88c5fb8ea 100644 > --- a/board/xilinx/zynqmp/zynqmp.c > +++ b/board/xilinx/zynqmp/zynqmp.c > @@ -419,6 +419,10 @@ int board_init(void) > zynqmp_pm_cfg_obj_size); > printf("Silicon version:\t%d\n", zynqmp_get_silicon_version()); > > + /* fake FSBL completion to start the PMUFW watchdog when enabled */ > + writel(readl(&pmu_base->gen_storage5) | FSBL_COMPLETION, > + &pmu_base->gen_storage5); > + > /* the CSU disables the JTAG interface when secure boot is enabled */ > if (CONFIG_IS_ENABLED(ZYNQMP_RESTORE_JTAG)) > restore_jtag(); > -- > 2.34.1 >