mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 10:04:26 +00:00
feat(xilinx): add feature check function for TF-A specific APIs
Currently, there is common feature check function for firmware APIs and TF-A specific APIs. This should be separate from firmware APIs. So add new TF-A API for feature check of TF-A specific APIs. Signed-off-by: Jay Buddhabhatti <jay.buddhabhatti@amd.com> Change-Id: I5585d17fb6aa1e98989d935117cca10bdb85133e
This commit is contained in:
parent
c26aa08bee
commit
9a0f5d128a
4 changed files with 42 additions and 0 deletions
|
@ -64,6 +64,7 @@ enum pm_ret_status pm_register_notifier(uint32_t device_id, uint32_t event,
|
|||
uint32_t wake, uint32_t enable,
|
||||
uint32_t flag);
|
||||
enum pm_ret_status pm_get_chipid(uint32_t *value);
|
||||
enum pm_ret_status eemi_feature_check(uint32_t api_id, uint32_t *ret_payload);
|
||||
|
||||
/*
|
||||
* Assigning of argument values into array elements.
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
(uint32_t)XPM_NODESUBCL_DEV_PERIPH, \
|
||||
(uint32_t)XPM_NODETYPE_DEV_PERIPH, (IDX))
|
||||
|
||||
#define TF_A_FEATURE_CHECK 0xa00U
|
||||
#define PM_GET_CALLBACK_DATA 0xa01U
|
||||
#define PM_GET_TRUSTZONE_VERSION 0xa03U
|
||||
#define TF_A_PM_REGISTER_SGI 0xa04U
|
||||
|
|
|
@ -363,6 +363,37 @@ enum pm_ret_status pm_set_wakeup_source(uint32_t target, uint32_t wkup_device,
|
|||
return pm_ipi_send_sync(primary_proc, payload, NULL, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* eemi_feature_check() - Returns the supported API version if supported.
|
||||
* @api_id: API ID to check.
|
||||
* @ret_payload: pointer to array of PAYLOAD_ARG_CNT number of
|
||||
* words Returned supported API version
|
||||
*
|
||||
* Return: Returns status, either success or error+reason.
|
||||
*/
|
||||
enum pm_ret_status eemi_feature_check(uint32_t api_id, uint32_t *ret_payload)
|
||||
{
|
||||
enum pm_ret_status ret;
|
||||
|
||||
/* Return version of API which are implemented in TF-A only */
|
||||
switch (api_id) {
|
||||
case PM_GET_CALLBACK_DATA:
|
||||
case PM_GET_TRUSTZONE_VERSION:
|
||||
ret_payload[0] = PM_API_VERSION_2;
|
||||
ret = PM_RET_SUCCESS;
|
||||
break;
|
||||
case TF_A_PM_REGISTER_SGI:
|
||||
case TF_A_FEATURE_CHECK:
|
||||
ret_payload[0] = PM_API_BASE_VERSION;
|
||||
ret = PM_RET_SUCCESS;
|
||||
break;
|
||||
default:
|
||||
ret = PM_RET_ERROR_NO_FEATURE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* pm_feature_check() - Returns the supported API version if supported.
|
||||
* @api_id: API ID to check.
|
||||
|
|
|
@ -393,6 +393,15 @@ static uintptr_t TF_A_specific_handler(uint32_t api_id, uint32_t *pm_arg,
|
|||
{
|
||||
switch (api_id) {
|
||||
|
||||
case TF_A_FEATURE_CHECK:
|
||||
{
|
||||
enum pm_ret_status ret;
|
||||
uint32_t result[PAYLOAD_ARG_CNT] = {0U};
|
||||
|
||||
ret = eemi_feature_check(pm_arg[0], result);
|
||||
SMC_RET1(handle, (uint64_t)ret | ((uint64_t)result[0] << 32U));
|
||||
}
|
||||
|
||||
case TF_A_PM_REGISTER_SGI:
|
||||
{
|
||||
int32_t ret;
|
||||
|
|
Loading…
Add table
Reference in a new issue