diff --git a/arch/arm/cpu/armv8/zynqmp/spl.c b/arch/arm/cpu/armv8/zynqmp/spl.c
index e51e2b6156790db42578e4887056493fc5161d5a..41ca74a2be2be6ec148de47d322f4e0d224d5dcd 100644
--- a/arch/arm/cpu/armv8/zynqmp/spl.c
+++ b/arch/arm/cpu/armv8/zynqmp/spl.c
@@ -129,12 +129,13 @@ u32 spl_boot_mode(const u32 boot_device)
 	}
 }
 
-__weak void psu_init(void)
+__weak int psu_init(void)
 {
 	/*
 	 * This function is overridden by the one in
 	 * board/xilinx/zynqmp/(platform)/psu_init_gpl.c, if it exists.
 	 */
+	return -1;
 }
 
 #ifdef CONFIG_SPL_OS_BOOT
diff --git a/arch/arm/include/asm/arch-zynqmp/sys_proto.h b/arch/arm/include/asm/arch-zynqmp/sys_proto.h
index ad2856863363d0ada08d9abcfeeace3826847e14..4dfabba80a5c0eb5c9c0da44bf24cffcdc078bfd 100644
--- a/arch/arm/include/asm/arch-zynqmp/sys_proto.h
+++ b/arch/arm/include/asm/arch-zynqmp/sys_proto.h
@@ -33,7 +33,7 @@ enum {
 int zynq_board_read_rom_ethaddr(unsigned char *ethaddr);
 unsigned int zynqmp_get_silicon_version(void);
 
-void psu_init(void);
+int psu_init(void);
 
 void handoff_setup(void);
 
diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index 8b6c0ea46698e9597b7c0041799cd4b5ade51159..db557e88067447dca3669254aad5bc2a0c090002 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -237,15 +237,16 @@ static char *zynqmp_get_silicon_idcode_name(void)
 
 int board_early_init_f(void)
 {
+	int ret = 0;
 #if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_CLK_ZYNQMP)
 	zynqmp_pmufw_version();
 #endif
 
 #if defined(CONFIG_SPL_BUILD) || defined(CONFIG_ZYNQMP_PSU_INIT_ENABLED)
-	psu_init();
+	ret = psu_init();
 #endif
 
-	return 0;
+	return ret;
 }
 
 #define ZYNQMP_VERSION_SIZE	9