]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
plat: versal: Add InitFinalize API call
authorRavi Patel <ravi.patel@xilinx.com>
Mon, 12 Aug 2019 10:10:10 +0000 (03:10 -0700)
committerManish Pandey <manish.pandey2@arm.com>
Mon, 7 Dec 2020 11:10:01 +0000 (11:10 +0000)
Add support to call InitFinalize API in Versal which calls
corresponding LibPM API.

Signed-off-by: Ravi Patel <ravi.patel@xilinx.com>
Signed-off-by: Rajan Vaja <rajan.vaja@xilinx.com>
Change-Id: I3428b7245b4db1ef6db8a90b7ad20b6e484ed3b2

plat/xilinx/versal/pm_service/pm_api_sys.c
plat/xilinx/versal/pm_service/pm_api_sys.h
plat/xilinx/versal/pm_service/pm_svc_main.c

index dd9ff6445c6f8723c33600fc55a9d01d16aa71f5..1f7539d96262019e104e6794825e27a90e738af7 100644 (file)
@@ -84,6 +84,22 @@ enum pm_ret_status pm_get_api_version(unsigned int *version)
        return pm_ipi_send_sync(primary_proc, payload, version, 1);
 }
 
+/**
+ * pm_init_finalize() - Call to notify PMC PM firmware that master has power
+ *                     management enabled and that it has finished its
+ *                     initialization
+ *
+ * @return     Status returned by the PMU firmware
+ */
+enum pm_ret_status pm_init_finalize(void)
+{
+       uint32_t payload[PAYLOAD_ARG_CNT];
+
+       /* Send request to the PMU */
+       PM_PACK_PAYLOAD1(payload, LIBPM_MODULE_ID, PM_INIT_FINALIZE);
+       return pm_ipi_send_sync(primary_proc, payload, NULL, 0);
+}
+
 /**
  * pm_self_suspend() - PM call for processor to suspend itself
  * @nid                Node id of the processor or subsystem
@@ -800,7 +816,6 @@ enum pm_ret_status pm_feature_check(uint32_t api_id, unsigned int *version)
        switch (api_id) {
        case PM_GET_CALLBACK_DATA:
        case PM_GET_TRUSTZONE_VERSION:
-       case PM_INIT_FINALIZE:
                *version = (PM_API_BASE_VERSION << 16);
                return PM_RET_SUCCESS;
        case PM_GET_API_VERSION:
@@ -843,6 +858,7 @@ enum pm_ret_status pm_feature_check(uint32_t api_id, unsigned int *version)
        case PM_PLL_SET_MODE:
        case PM_PLL_GET_MODE:
        case PM_FEATURE_CHECK:
+       case PM_INIT_FINALIZE:
                *version = (PM_API_BASE_VERSION << 16);
                break;
        case PM_LOAD_PDI:
index 4de592a2f41c7cfc865c5f77af1b8a04a8914264..dd2aefc47d028885abfa55b2d0a2db5078d3375c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019, Xilinx, Inc. All rights reserved.
+ * Copyright (c) 2019-2020, Xilinx, Inc. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -15,6 +15,7 @@
  **********************************************************/
 
 enum pm_ret_status pm_get_api_version(unsigned int *version);
+enum pm_ret_status pm_init_finalize(void);
 enum pm_ret_status pm_self_suspend(uint32_t nid,
                                   unsigned int latency,
                                   unsigned int state,
index f0e42d6514af2fca412338d7e7f0002eb39c3f64..9ad13da5db8d99546835a64e72548f34af18dbf8 100644 (file)
@@ -159,7 +159,8 @@ uint64_t pm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3,
        }
 
        case PM_INIT_FINALIZE:
-               SMC_RET1(handle, (uint64_t)PM_RET_SUCCESS);
+               ret = pm_init_finalize();
+               SMC_RET1(handle, (uint64_t)ret);
 
        case PM_GET_CALLBACK_DATA:
        {