diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4851-drm-amd-pp-Export-notify_smu_enable_pwe-to-display.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/4851-drm-amd-pp-Export-notify_smu_enable_pwe-to-display.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4851-drm-amd-pp-Export-notify_smu_enable_pwe-to-display.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4851-drm-amd-pp-Export-notify_smu_enable_pwe-to-display.patch new file mode 100644 index 00000000..8a814dfb --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4851-drm-amd-pp-Export-notify_smu_enable_pwe-to-display.patch @@ -0,0 +1,82 @@ +From 5e36318bb63ca76462d1446827540e2ddc12d433 Mon Sep 17 00:00:00 2001 +From: Rex Zhu <Rex.Zhu@amd.com> +Date: Fri, 22 Jun 2018 14:12:59 +0800 +Subject: [PATCH 4851/5725] drm/amd/pp: Export notify_smu_enable_pwe to display + +Display can notify smu to enable pwe after gpu suspend. +It is used in case when display resumes from S3 and wants to start +audio driver by enabling pwe + +Acked-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/include/kgd_pp_interface.h | 7 ++++--- + drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 20 ++++++++++++++++++++ + 2 files changed, 24 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h +index 99ee3ed..6a41b81 100644 +--- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h ++++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h +@@ -241,6 +241,9 @@ struct amd_pm_funcs { + int (*set_clockgating_by_smu)(void *handle, uint32_t msg_id); + int (*set_power_limit)(void *handle, uint32_t n); + int (*get_power_limit)(void *handle, uint32_t *limit, bool default_limit); ++ int (*get_power_profile_mode)(void *handle, char *buf); ++ int (*set_power_profile_mode)(void *handle, long *input, uint32_t size); ++ int (*odn_edit_dpm_table)(void *handle, uint32_t type, long *input, uint32_t size); + /* export to DC */ + u32 (*get_sclk)(void *handle, bool low); + u32 (*get_mclk)(void *handle, bool low); +@@ -265,9 +268,7 @@ struct amd_pm_funcs { + struct pp_display_clock_request *clock); + int (*get_display_mode_validation_clocks)(void *handle, + struct amd_pp_simple_clock_info *clocks); +- int (*get_power_profile_mode)(void *handle, char *buf); +- int (*set_power_profile_mode)(void *handle, long *input, uint32_t size); +- int (*odn_edit_dpm_table)(void *handle, uint32_t type, long *input, uint32_t size); ++ int (*notify_smu_enable_pwe)(void *handle); + }; + + #endif +diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +index 68c19d4..63db1ea 100644 +--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c ++++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +@@ -1212,6 +1212,25 @@ static int pp_set_powergating_by_smu(void *handle, + return ret; + } + ++static int pp_notify_smu_enable_pwe(void *handle) ++{ ++ struct pp_hwmgr *hwmgr = handle; ++ ++ if (!hwmgr || !hwmgr->pm_en) ++ return -EINVAL;; ++ ++ if (hwmgr->hwmgr_func->smus_notify_pwe == NULL) { ++ pr_info("%s was not implemented.\n", __func__); ++ return -EINVAL;; ++ } ++ ++ mutex_lock(&hwmgr->smu_lock); ++ hwmgr->hwmgr_func->smus_notify_pwe(hwmgr); ++ mutex_unlock(&hwmgr->smu_lock); ++ ++ return 0; ++} ++ + static const struct amd_pm_funcs pp_dpm_funcs = { + .load_firmware = pp_dpm_load_fw, + .wait_for_fw_loading_complete = pp_dpm_fw_loading_complete, +@@ -1255,5 +1274,6 @@ static const struct amd_pm_funcs pp_dpm_funcs = { + .set_watermarks_for_clocks_ranges = pp_set_watermarks_for_clocks_ranges, + .display_clock_voltage_request = pp_display_clock_voltage_request, + .get_display_mode_validation_clocks = pp_get_display_mode_validation_clocks, ++ .notify_smu_enable_pwe = pp_notify_smu_enable_pwe, + }; + +-- +2.7.4 + |