From: Charlene Liu <[email protected]>

[Why & How]
Disable SR feature on eDP1 by default.

Reviewed-by: Wenjing Liu <[email protected]>
Signed-off-by: Charlene Liu <[email protected]>
Signed-off-by: Ray Wu <[email protected]>
---
 .../drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c    | 12 ++++++++++--
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c    |  8 ++++++++
 drivers/gpu/drm/amd/display/dc/dc.h                  |  1 -
 drivers/gpu/drm/amd/display/dc/dm_helpers.h          |  2 +-
 drivers/gpu/drm/amd/display/dc/link/link_detection.c |  2 +-
 5 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
index 1f41d6540b83..bf2a356b3475 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
@@ -1153,11 +1153,19 @@ void dm_helpers_init_panel_settings(
 
 void dm_helpers_override_panel_settings(
        struct dc_context *ctx,
-       struct dc_panel_config *panel_config)
+       struct dc_link *link)
 {
+       unsigned int panel_inst = 0;
+
        // Feature DSC
        if (amdgpu_dc_debug_mask & DC_DISABLE_DSC)
-               panel_config->dsc.disable_dsc_edp = true;
+               link->panel_config.dsc.disable_dsc_edp = true;
+
+       if (dc_get_edp_link_panel_inst(ctx->dc, link, &panel_inst) && 
panel_inst == 1) {
+                       link->panel_config.psr.disable_psr = true;
+                       link->panel_config.psr.disallow_psrsu = true;;
+                       link->panel_config.psr.disallow_replay = true;
+       }
 }
 
 void *dm_helpers_allocate_gpu_mem(
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c
index fd491b7a3cd7..99d6d6c93561 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c
@@ -80,12 +80,20 @@ void amdgpu_dm_set_psr_caps(struct dc_link *link)
                link->psr_settings.psr_feature_enabled = false;
 
        } else {
+               unsigned int panel_inst = 0;
+
                if (link_supports_psrsu(link))
                        link->psr_settings.psr_version = DC_PSR_VERSION_SU_1;
                else
                        link->psr_settings.psr_version = DC_PSR_VERSION_1;
 
                link->psr_settings.psr_feature_enabled = true;
+
+               /*disable allow psr/psrsu/replay on eDP1*/
+               if (dc_get_edp_link_panel_inst(link->ctx->dc, link, 
&panel_inst) && panel_inst == 1) {
+                       link->psr_settings.psr_version = 
DC_PSR_VERSION_UNSUPPORTED;
+                       link->psr_settings.psr_feature_enabled = false;
+               }
        }
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index ce08477d1ccd..4c4239cac863 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -505,7 +505,6 @@ union allow_lttpr_non_transparent_mode {
        } bits;
        unsigned char raw;
 };
-
 /* Structure to hold configuration flags set by dm at dc creation. */
 struct dc_config {
        bool gpu_vm_support;
diff --git a/drivers/gpu/drm/amd/display/dc/dm_helpers.h 
b/drivers/gpu/drm/amd/display/dc/dm_helpers.h
index 7014b8c2c956..2818df555e62 100644
--- a/drivers/gpu/drm/amd/display/dc/dm_helpers.h
+++ b/drivers/gpu/drm/amd/display/dc/dm_helpers.h
@@ -209,7 +209,7 @@ void dm_helpers_init_panel_settings(
        struct dc_sink *sink);
 void dm_helpers_override_panel_settings(
        struct dc_context *ctx,
-       struct dc_panel_config *config);
+       struct dc_link *link);
 int dm_helper_dmub_aux_transfer_sync(
                struct dc_context *ctx,
                const struct dc_link *link,
diff --git a/drivers/gpu/drm/amd/display/dc/link/link_detection.c 
b/drivers/gpu/drm/amd/display/dc/link/link_detection.c
index 578509e8d0e2..b2c020071cbf 100644
--- a/drivers/gpu/drm/amd/display/dc/link/link_detection.c
+++ b/drivers/gpu/drm/amd/display/dc/link/link_detection.c
@@ -1333,7 +1333,7 @@ static bool detect_link_and_local_sink(struct dc_link 
*link,
                        // Pickup base DM settings
                        dm_helpers_init_panel_settings(dc_ctx, 
&link->panel_config, sink);
                        // Override dc_panel_config if system has specific 
settings
-                       dm_helpers_override_panel_settings(dc_ctx, 
&link->panel_config);
+                       dm_helpers_override_panel_settings(dc_ctx, link);
 
                        //sink only can use supported link rate table, we are 
foreced to enable it
                        if (link->reported_link_cap.link_rate == 
LINK_RATE_UNKNOWN)
-- 
2.43.0

Reply via email to