From: Jack Chang <jack.ch...@amd.com>

[Why & How]
Build-up get/reset desync error count interface and implement the functions.

Reviewed-by: ChunTao Tso <chuntao....@amd.com>
Reviewed-by: Robin Chen <robin.c...@amd.com>
Signed-off-by: Jack Chang <jack.ch...@amd.com>
Signed-off-by: Tom Chung <chiahsuan.ch...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/dc_types.h                    | 2 ++
 .../drm/amd/display/dc/link/protocols/link_dp_irq_handler.c  | 3 +++
 drivers/gpu/drm/amd/display/modules/power/power_helpers.c    | 5 +++++
 drivers/gpu/drm/amd/display/modules/power/power_helpers.h    | 1 +
 4 files changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/dc_types.h 
b/drivers/gpu/drm/amd/display/dc/dc_types.h
index ff5b162f3916..0aef2d84c3a4 100644
--- a/drivers/gpu/drm/amd/display/dc/dc_types.h
+++ b/drivers/gpu/drm/amd/display/dc/dc_types.h
@@ -1147,6 +1147,8 @@ struct replay_settings {
        uint16_t abm_with_ips_on_full_screen_video_pseudo_vtotal;
        /* Replay last pseudo vtotal set to DMUB */
        uint16_t last_pseudo_vtotal;
+       /* Replay desync error */
+       uint32_t replay_desync_error_fail_count;
 };
 
 /* To split out "global" and "per-panel" config settings.
diff --git 
a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_irq_handler.c 
b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_irq_handler.c
index ae47bb5975af..a08403c022ea 100644
--- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_irq_handler.c
+++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_irq_handler.c
@@ -239,6 +239,9 @@ static void handle_hpd_irq_replay_sink(struct dc_link *link)
                        &replay_configuration.raw,
                        sizeof(replay_configuration.raw));
 
+               /* Update desync error counter */
+               link->replay_settings.replay_desync_error_fail_count++;
+
                /* Acknowledge and clear error bits */
                dm_helpers_dp_write_dpcd(
                        link->ctx,
diff --git a/drivers/gpu/drm/amd/display/modules/power/power_helpers.c 
b/drivers/gpu/drm/amd/display/modules/power/power_helpers.c
index 95838c7ab054..f4b86a63f25d 100644
--- a/drivers/gpu/drm/amd/display/modules/power/power_helpers.c
+++ b/drivers/gpu/drm/amd/display/modules/power/power_helpers.c
@@ -1039,3 +1039,8 @@ bool fill_custom_backlight_caps(unsigned int config_no, 
struct dm_acpi_atif_back
        memcpy(caps->data_points, 
custom_backlight_profiles[config_no].data_points, data_points_size);
        return true;
 }
+
+void reset_replay_dsync_error_count(struct dc_link *link)
+{
+       link->replay_settings.replay_desync_error_fail_count = 0;
+}
diff --git a/drivers/gpu/drm/amd/display/modules/power/power_helpers.h 
b/drivers/gpu/drm/amd/display/modules/power/power_helpers.h
index cac302e8fa10..94ade0ef18a3 100644
--- a/drivers/gpu/drm/amd/display/modules/power/power_helpers.h
+++ b/drivers/gpu/drm/amd/display/modules/power/power_helpers.h
@@ -78,4 +78,5 @@ bool psr_su_set_dsc_slice_height(struct dc *dc, struct 
dc_link *link,
 
 bool fill_custom_backlight_caps(unsigned int config_no,
                struct dm_acpi_atif_backlight_caps *caps);
+void reset_replay_dsync_error_count(struct dc_link *link);
 #endif /* MODULES_POWER_POWER_HELPERS_H_ */
-- 
2.34.1

Reply via email to