From: Muhammad Ahmed <muhammad.ah...@amd.com>

[WHY]
On some 8k display models flickering or black screens may occur at reduced
PHY SSC.

[HOW]
Add an option to set a workaround bit for these displays to keep the old
SSC value.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>
Signed-off-by: Muhammad Ahmed <muhammad.ah...@amd.com>
Signed-off-by: Alex Hung <alex.h...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/bios/command_table2.c | 1 +
 drivers/gpu/drm/amd/display/dc/dc.h                  | 1 +
 drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h      | 3 ++-
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/bios/command_table2.c 
b/drivers/gpu/drm/amd/display/dc/bios/command_table2.c
index 2c645dffec18..f2b1720a6a66 100644
--- a/drivers/gpu/drm/amd/display/dc/bios/command_table2.c
+++ b/drivers/gpu/drm/amd/display/dc/bios/command_table2.c
@@ -396,6 +396,7 @@ static enum bp_result transmitter_control_v1_7(
                                
process_phy_transition_init_params.display_port_link_rate   = 
link->cur_link_settings.link_rate;
                                
process_phy_transition_init_params.transition_bitmask       = 
link->phy_transition_bitmask;
                        }
+                       dig_v1_7.skip_phy_ssc_reduction = 
link->wa_flags.skip_phy_ssc_reduction;
                }
 
                // Handle PRE_OFF_TO_ON: Process ACPI PHY Transition Interlock
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index 33209e056a0b..d57c57cabd4d 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -1609,6 +1609,7 @@ struct dc_scratch_space {
                bool blank_stream_on_ocs_change;
                bool read_dpcd204h_on_irq_hpd;
                bool force_dp_ffe_preset;
+               bool skip_phy_ssc_reduction;
        } wa_flags;
        union dc_dp_ffe_preset forced_dp_ffe_preset;
        struct link_mst_stream_allocation_table mst_stream_alloc_table;
diff --git a/drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h 
b/drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h
index 4cdc75adadb2..75e08efc582d 100644
--- a/drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h
+++ b/drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h
@@ -2494,7 +2494,8 @@ struct dmub_dig_transmitter_control_data_v1_7 {
        uint8_t connobj_id; /**< Connector Object Id defined in ObjectId.h */
        uint8_t HPO_instance; /**< HPO instance (0: inst0, 1: inst1) */
        uint8_t reserved1; /**< For future use */
-       uint8_t reserved2[3]; /**< For future use */
+       uint8_t skip_phy_ssc_reduction;
+       uint8_t reserved2[2]; /**< For future use */
        uint32_t reserved3[11]; /**< For future use */
 };
 
-- 
2.43.0

Reply via email to