return -EINVAL;
ret = hwmgr->pptable_func->pptable_init(hwmgr);
+
if (ret == 0)
ret = hwmgr->hwmgr_func->backend_init(hwmgr);
{
struct pp_instance *pp_handle;
struct pp_smumgr *smumgr;
+ struct pp_eventmgr *eventmgr;
int ret = 0;
if (handle == NULL)
smumgr->smumgr_funcs->smu_fini(smumgr);
return ret;
}
+
hw_init_power_state_table(pp_handle->hwmgr);
+ eventmgr = pp_handle->eventmgr;
+ if (eventmgr == NULL || eventmgr->pp_eventmgr_init == NULL)
+ return -EINVAL;
+
+ ret = eventmgr->pp_eventmgr_init(eventmgr);
return 0;
}
{
struct pp_instance *pp_handle;
struct pp_smumgr *smumgr;
+ struct pp_eventmgr *eventmgr;
if (handle == NULL)
return -EINVAL;
pp_handle = (struct pp_instance *)handle;
+ eventmgr = pp_handle->eventmgr;
+
+ if (eventmgr != NULL || eventmgr->pp_eventmgr_fini != NULL)
+ eventmgr->pp_eventmgr_fini(eventmgr);
+
smumgr = pp_handle->smu_mgr;
if (smumgr != NULL || smumgr->smumgr_funcs != NULL ||
if (ret)
goto fail_hwmgr;
+ ret = eventmgr_init(handle);
+ if (ret)
+ goto fail_eventmgr;
+
amd_pp->pp_handle = handle;
return 0;
+fail_eventmgr:
+ hwmgr_fini(handle->hwmgr);
fail_hwmgr:
smum_fini(handle->smu_mgr);
fail_smum:
static int amd_pp_instance_fini(void *handle)
{
struct pp_instance *instance = (struct pp_instance *)handle;
+
if (instance == NULL)
return -EINVAL;
+ eventmgr_fini(instance->eventmgr);
+
hwmgr_fini(instance->hwmgr);
smum_fini(instance->smu_mgr);