diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0049-drm-amd-powerplay-implement-functions-of-amd_powerpl.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0049-drm-amd-powerplay-implement-functions-of-amd_powerpl.patch | 273 |
1 files changed, 0 insertions, 273 deletions
diff --git a/common/recipes-kernel/linux/files/0049-drm-amd-powerplay-implement-functions-of-amd_powerpl.patch b/common/recipes-kernel/linux/files/0049-drm-amd-powerplay-implement-functions-of-amd_powerpl.patch deleted file mode 100644 index 9cd50e81..00000000 --- a/common/recipes-kernel/linux/files/0049-drm-amd-powerplay-implement-functions-of-amd_powerpl.patch +++ /dev/null @@ -1,273 +0,0 @@ -From 67e2f17bd49366a1695ac77aebc2594825533848 Mon Sep 17 00:00:00 2001 -From: Rex Zhu <Rex.Zhu@amd.com> -Date: Fri, 28 Aug 2015 12:56:43 +0800 -Subject: [PATCH 0049/1110] drm/amd/powerplay: implement functions of - amd_powerplay_func - -This is the common interface for interacting with the powerplay -module. - -v2: squash in fixes - -Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> -Acked-by: Jammy Zhou <Jammy.Zhou@amd.com> -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 191 ++++++++++++++++++++++++-- - 1 file changed, 183 insertions(+), 8 deletions(-) - -diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c -index 1964a2a..66ccfc0 100644 ---- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c -+++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c -@@ -27,6 +27,8 @@ - #include "amd_shared.h" - #include "amd_powerplay.h" - #include "pp_instance.h" -+#include "power_state.h" -+#include "eventmanager.h" - - static int pp_early_init(void *handle) - { -@@ -177,11 +179,31 @@ static int pp_set_powergating_state(void *handle, - - static int pp_suspend(void *handle) - { -+ struct pp_instance *pp_handle; -+ struct pp_eventmgr *eventmgr; -+ struct pem_event_data event_data = { {0} }; -+ -+ if (handle == NULL) -+ return -EINVAL; -+ -+ pp_handle = (struct pp_instance *)handle; -+ eventmgr = pp_handle->eventmgr; -+ pem_handle_event(eventmgr, AMD_PP_EVENT_SUSPEND, &event_data); - return 0; - } - - static int pp_resume(void *handle) - { -+ struct pp_instance *pp_handle; -+ struct pp_eventmgr *eventmgr; -+ struct pem_event_data event_data = { {0} }; -+ -+ if (handle == NULL) -+ return -EINVAL; -+ -+ pp_handle = (struct pp_instance *)handle; -+ eventmgr = pp_handle->eventmgr; -+ pem_handle_event(eventmgr, AMD_PP_EVENT_RESUME, &event_data); - return 0; - } - -@@ -215,45 +237,198 @@ static int pp_dpm_fw_loading_complete(void *handle) - static int pp_dpm_force_performance_level(void *handle, - enum amd_dpm_forced_level level) - { -+ struct pp_instance *pp_handle; -+ struct pp_hwmgr *hwmgr; -+ -+ if (handle == NULL) -+ return -EINVAL; -+ -+ pp_handle = (struct pp_instance *)handle; -+ -+ hwmgr = pp_handle->hwmgr; -+ -+ if (hwmgr == NULL || hwmgr->hwmgr_func == NULL || -+ hwmgr->hwmgr_func->force_dpm_level == NULL) -+ return -EINVAL; -+ -+ hwmgr->hwmgr_func->force_dpm_level(hwmgr, level); -+ - return 0; - } -+ - static enum amd_dpm_forced_level pp_dpm_get_performance_level( - void *handle) - { -- return 0; -+ struct pp_hwmgr *hwmgr; -+ -+ if (handle == NULL) -+ return -EINVAL; -+ -+ hwmgr = ((struct pp_instance *)handle)->hwmgr; -+ -+ if (hwmgr == NULL) -+ return -EINVAL; -+ -+ return (((struct pp_instance *)handle)->hwmgr->dpm_level); - } -+ - static int pp_dpm_get_sclk(void *handle, bool low) - { -- return 0; -+ struct pp_hwmgr *hwmgr; -+ -+ if (handle == NULL) -+ return -EINVAL; -+ -+ hwmgr = ((struct pp_instance *)handle)->hwmgr; -+ -+ if (hwmgr == NULL || hwmgr->hwmgr_func == NULL || -+ hwmgr->hwmgr_func->get_sclk == NULL) -+ return -EINVAL; -+ -+ return hwmgr->hwmgr_func->get_sclk(hwmgr, low); - } -+ - static int pp_dpm_get_mclk(void *handle, bool low) - { -- return 0; -+ struct pp_hwmgr *hwmgr; -+ -+ if (handle == NULL) -+ return -EINVAL; -+ -+ hwmgr = ((struct pp_instance *)handle)->hwmgr; -+ -+ if (hwmgr == NULL || hwmgr->hwmgr_func == NULL || -+ hwmgr->hwmgr_func->get_mclk == NULL) -+ return -EINVAL; -+ -+ return hwmgr->hwmgr_func->get_mclk(hwmgr, low); - } -+ - static int pp_dpm_powergate_vce(void *handle, bool gate) - { -- return 0; -+ struct pp_hwmgr *hwmgr; -+ -+ if (handle == NULL) -+ return -EINVAL; -+ -+ hwmgr = ((struct pp_instance *)handle)->hwmgr; -+ -+ if (hwmgr == NULL || hwmgr->hwmgr_func == NULL || -+ hwmgr->hwmgr_func->powergate_vce == NULL) -+ return -EINVAL; -+ -+ return hwmgr->hwmgr_func->powergate_vce(hwmgr, gate); - } -+ - static int pp_dpm_powergate_uvd(void *handle, bool gate) - { -- return 0; -+ struct pp_hwmgr *hwmgr; -+ -+ if (handle == NULL) -+ return -EINVAL; -+ -+ hwmgr = ((struct pp_instance *)handle)->hwmgr; -+ -+ if (hwmgr == NULL || hwmgr->hwmgr_func == NULL || -+ hwmgr->hwmgr_func->powergate_uvd == NULL) -+ return -EINVAL; -+ -+ return hwmgr->hwmgr_func->powergate_uvd(hwmgr, gate); -+} -+ -+static enum PP_StateUILabel power_state_convert(enum amd_pm_state_type state) -+{ -+ switch (state) { -+ case POWER_STATE_TYPE_BATTERY: -+ return PP_StateUILabel_Battery; -+ case POWER_STATE_TYPE_BALANCED: -+ return PP_StateUILabel_Balanced; -+ case POWER_STATE_TYPE_PERFORMANCE: -+ return PP_StateUILabel_Performance; -+ default: -+ return PP_StateUILabel_None; -+ } - } - - int pp_dpm_dispatch_tasks(void *handle, enum amd_pp_event event_id, void *input, void *output) - { -- return 0; -+ int ret = 0; -+ struct pp_instance *pp_handle; -+ struct pem_event_data data = { {0} }; -+ -+ pp_handle = (struct pp_instance *)handle; -+ -+ if (pp_handle == NULL) -+ return -EINVAL; -+ -+ switch (event_id) { -+ case AMD_PP_EVENT_DISPLAY_CONFIG_CHANGE: -+ ret = pem_handle_event(pp_handle->eventmgr, event_id, &data); -+ break; -+ case AMD_PP_EVENT_ENABLE_USER_STATE: -+ { -+ enum amd_pm_state_type ps; -+ -+ if (input == NULL) -+ return -EINVAL; -+ ps = *(unsigned long *)input; -+ -+ data.requested_ui_label = power_state_convert(ps); -+ ret = pem_handle_event(pp_handle->eventmgr, event_id, &data); -+ } -+ break; -+ default: -+ break; -+ } -+ return ret; - } -+ - enum amd_pm_state_type pp_dpm_get_current_power_state(void *handle) - { -- return 0; -+ struct pp_hwmgr *hwmgr; -+ struct pp_power_state *state; -+ -+ if (handle == NULL) -+ return -EINVAL; -+ -+ hwmgr = ((struct pp_instance *)handle)->hwmgr; -+ -+ if (hwmgr == NULL || hwmgr->current_ps == NULL) -+ return -EINVAL; -+ -+ state = hwmgr->current_ps; -+ -+ switch (state->classification.ui_label) { -+ case PP_StateUILabel_Battery: -+ return POWER_STATE_TYPE_BATTERY; -+ case PP_StateUILabel_Balanced: -+ return POWER_STATE_TYPE_BALANCED; -+ case PP_StateUILabel_Performance: -+ return POWER_STATE_TYPE_PERFORMANCE; -+ default: -+ return POWER_STATE_TYPE_DEFAULT; -+ } - } -+ - static void - pp_debugfs_print_current_performance_level(void *handle, - struct seq_file *m) - { -- return; -+ struct pp_hwmgr *hwmgr; -+ -+ if (handle == NULL) -+ return; -+ -+ hwmgr = ((struct pp_instance *)handle)->hwmgr; -+ -+ if (hwmgr == NULL || hwmgr->hwmgr_func == NULL || -+ hwmgr->hwmgr_func->print_current_perforce_level == NULL) -+ return; -+ -+ hwmgr->hwmgr_func->print_current_perforce_level(hwmgr, m); - } - -+ - const struct amd_powerplay_funcs pp_dpm_funcs = { - .get_temperature = NULL, - .load_firmware = pp_dpm_load_fw, --- -2.7.4 - |