diff --git a/plat/xilinx/zynqmp/pm_service/pm_svc_main.c b/plat/xilinx/zynqmp/pm_service/pm_svc_main.c
index 2906a41d39af2072ca92f6ea2781d01124a78917..69e711aa24f1304bdbf0760d538c37dcb471011c 100644
--- a/plat/xilinx/zynqmp/pm_service/pm_svc_main.c
+++ b/plat/xilinx/zynqmp/pm_service/pm_svc_main.c
@@ -117,9 +117,16 @@ uint64_t pm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3,
 		SMC_RET1(handle, (uint64_t)ret);
 
 	case PM_REQ_WAKEUP:
-		ret = pm_req_wakeup(pm_arg[0], pm_arg[1], pm_arg[2],
+	{
+		/* Use address flag is encoded in the 1st bit of the low-word */
+		unsigned int set_addr = pm_arg[1] & 0x1;
+		uint64_t address = (uint64_t)pm_arg[2] << 32;
+
+		address |= pm_arg[1] & (~0x1);
+		ret = pm_req_wakeup(pm_arg[0], set_addr, address,
 				    pm_arg[3]);
 		SMC_RET1(handle, (uint64_t)ret);
+	}
 
 	case PM_FORCE_POWERDOWN:
 		ret = pm_force_powerdown(pm_arg[0], pm_arg[1]);