aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1078-drm-amd-display-dal-pplib-interface-refactor-dal-par.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1078-drm-amd-display-dal-pplib-interface-refactor-dal-par.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1078-drm-amd-display-dal-pplib-interface-refactor-dal-par.patch113
1 files changed, 113 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1078-drm-amd-display-dal-pplib-interface-refactor-dal-par.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1078-drm-amd-display-dal-pplib-interface-refactor-dal-par.patch
new file mode 100644
index 00000000..dbf05b06
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1078-drm-amd-display-dal-pplib-interface-refactor-dal-par.patch
@@ -0,0 +1,113 @@
+From c083d4c085c9dd9cd4ecbbcc3c47b8189fc090dc Mon Sep 17 00:00:00 2001
+From: hersen wu <hersenxs.wu@amd.com>
+Date: Wed, 28 Nov 2018 16:57:56 -0500
+Subject: [PATCH 1078/2940] drm/amd/display: dal-pplib interface refactor dal
+ part
+
+[WHY] clarify dal input parameters to pplib interface, remove
+un-used parameters. dal knows exactly which parameters needed
+and their effects at pplib and smu sides.
+
+current dal sequence for dcn1_update_clock to pplib:
+
+1.smu10_display_clock_voltage_request for dcefclk
+2.smu10_display_clock_voltage_request for fclk
+3.phm_store_dal_configuration_data {
+ set_min_deep_sleep_dcfclk
+ set_active_display_count
+ store_cc6_data --- this data never be referenced
+
+new sequence will be:
+
+1. set_display_count --- need add new pplib interface
+2. set_min_deep_sleep_dcfclk -- new pplib interface
+3. set_hard_min_dcfclk_by_freq
+4. set_hard_min_fclk_by_freq
+
+after this code refactor, smu10_display_clock_voltage_request,
+phm_store_dal_configuration_data will not be needed for rv.
+
+Signed-off-by: hersen wu <hersenxs.wu@amd.com>
+Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ .../amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c | 57 +++++++++++++++++++
+ 1 file changed, 57 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c
+index 1afdff967f32..9094288581dc 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c
+@@ -559,6 +559,58 @@ void pp_rv_set_pme_wa_enable(struct pp_smu *pp)
+ pp_funcs->notify_smu_enable_pwe(pp_handle);
+ }
+
++void pp_rv_set_active_display_count(struct pp_smu *pp, int count)
++{
++ const struct dc_context *ctx = pp->dm;
++ struct amdgpu_device *adev = ctx->driver_context;
++ void *pp_handle = adev->powerplay.pp_handle;
++ const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
++
++ if (!pp_funcs || !pp_funcs->set_active_display_count)
++ return;
++
++ pp_funcs->set_active_display_count(pp_handle, count);
++}
++
++void pp_rv_set_min_deep_sleep_dcfclk(struct pp_smu *pp, int clock)
++{
++ const struct dc_context *ctx = pp->dm;
++ struct amdgpu_device *adev = ctx->driver_context;
++ void *pp_handle = adev->powerplay.pp_handle;
++ const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
++
++ if (!pp_funcs || !pp_funcs->set_min_deep_sleep_dcefclk)
++ return;
++
++ pp_funcs->set_min_deep_sleep_dcefclk(pp_handle, clock);
++}
++
++void pp_rv_set_hard_min_dcefclk_by_freq(struct pp_smu *pp, int clock)
++{
++ const struct dc_context *ctx = pp->dm;
++ struct amdgpu_device *adev = ctx->driver_context;
++ void *pp_handle = adev->powerplay.pp_handle;
++ const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
++
++ if (!pp_funcs || !pp_funcs->set_hard_min_dcefclk_by_freq)
++ return;
++
++ pp_funcs->set_hard_min_dcefclk_by_freq(pp_handle, clock);
++}
++
++void pp_rv_set_hard_min_fclk_by_freq(struct pp_smu *pp, int mhz)
++{
++ const struct dc_context *ctx = pp->dm;
++ struct amdgpu_device *adev = ctx->driver_context;
++ void *pp_handle = adev->powerplay.pp_handle;
++ const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
++
++ if (!pp_funcs || !pp_funcs->set_hard_min_fclk_by_freq)
++ return;
++
++ pp_funcs->set_hard_min_fclk_by_freq(pp_handle, mhz);
++}
++
+ void dm_pp_get_funcs_rv(
+ struct dc_context *ctx,
+ struct pp_smu_funcs_rv *funcs)
+@@ -567,4 +619,9 @@ void dm_pp_get_funcs_rv(
+ funcs->set_display_requirement = pp_rv_set_display_requirement;
+ funcs->set_wm_ranges = pp_rv_set_wm_ranges;
+ funcs->set_pme_wa_enable = pp_rv_set_pme_wa_enable;
++ funcs->set_display_count = pp_rv_set_active_display_count;
++ funcs->set_min_deep_sleep_dcfclk = pp_rv_set_min_deep_sleep_dcfclk;
++ funcs->set_hard_min_dcfclk_by_freq = pp_rv_set_hard_min_dcefclk_by_freq;
++ funcs->set_hard_min_fclk_by_freq = pp_rv_set_hard_min_fclk_by_freq;
+ }
++
+--
+2.17.1
+