drm/amd/display: Disable Timing sync check in Full-Screen Video Case
authorDennis Chan <dennis.chan@amd.com>
Tue, 31 Oct 2023 02:09:02 +0000 (10:09 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 29 Nov 2023 21:49:00 +0000 (16:49 -0500)
[why]
If Panel max link off frame count is low, it will cause low residency
for Replay, then Disabled timing sync check in Full screen Video Case.

Reviewed-by: Robin Chen <robin.chen@amd.com>
Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Dennis Chan <dennis.chan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dc_types.h
drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h

index a2f6c994a2a9ced8143ac340d2839e2c6063946b..7313cfe69498c0086b2f5c25f36e0540250d904e 100644 (file)
@@ -1018,6 +1018,12 @@ enum replay_coasting_vtotal_type {
        PR_COASTING_TYPE_NUM,
 };
 
+enum replay_link_off_frame_count_level {
+       PR_LINK_OFF_FRAME_COUNT_FAIL = 0x0,
+       PR_LINK_OFF_FRAME_COUNT_GOOD = 0x2,
+       PR_LINK_OFF_FRAME_COUNT_BEST = 0x6,
+};
+
 /*
  * This is general Interface for Replay to
  * set an 32 bit variable to dmub
@@ -1041,26 +1047,48 @@ union replay_error_status {
 };
 
 struct replay_config {
-       bool replay_supported;                          // Replay feature is supported
-       unsigned int replay_power_opt_supported;        // Power opt flags that are supported
-       bool replay_smu_opt_supported;                  // SMU optimization is supported
-       unsigned int replay_enable_option;              // Replay enablement option
-       uint32_t debug_flags;                           // Replay debug flags
-       bool replay_timing_sync_supported; // Replay desync is supported
-       bool force_disable_desync_error_check;             // Replay desync is supported
-       bool received_desync_error_hpd; //Replay Received Desync Error HPD.
-       union replay_error_status replay_error_status; // Replay error status
-};
-
-/* Replay feature flags */
+       /* Replay feature is supported */
+       bool replay_supported;
+       /* Power opt flags that are supported */
+       unsigned int replay_power_opt_supported;
+       /* SMU optimization is supported */
+       bool replay_smu_opt_supported;
+       /* Replay enablement option */
+       unsigned int replay_enable_option;
+       /* Replay debug flags */
+       uint32_t debug_flags;
+       /* Replay sync is supported */
+       bool replay_timing_sync_supported;
+       /* Replay Disable desync error check. */
+       bool force_disable_desync_error_check;
+       /* Replay Received Desync Error HPD. */
+       bool received_desync_error_hpd;
+       /* Replay feature is supported long vblank */
+       bool replay_support_fast_resync_in_ultra_sleep_mode;
+       /* Replay error status */
+       union replay_error_status replay_error_status;
+};
+
+/* Replay feature flags*/
 struct replay_settings {
-       struct replay_config config;            // Replay configuration
-       bool replay_feature_enabled;            // Replay feature is ready for activating
-       bool replay_allow_active;               // Replay is currently active
-       unsigned int replay_power_opt_active;   // Power opt flags that are activated currently
-       bool replay_smu_opt_enable;             // SMU optimization is enabled
-       uint16_t coasting_vtotal;               // Current Coasting vtotal
-       uint16_t coasting_vtotal_table[PR_COASTING_TYPE_NUM]; // Coasting vtotal table
+       /* Replay configuration */
+       struct replay_config config;
+       /* Replay feature is ready for activating */
+       bool replay_feature_enabled;
+       /* Replay is currently active */
+       bool replay_allow_active;
+       /* Replay is currently active */
+       bool replay_allow_long_vblank;
+       /* Power opt flags that are activated currently */
+       unsigned int replay_power_opt_active;
+       /* SMU optimization is enabled */
+       bool replay_smu_opt_enable;
+       /* Current Coasting vtotal */
+       uint16_t coasting_vtotal;
+       /* Coasting vtotal table */
+       uint16_t coasting_vtotal_table[PR_COASTING_TYPE_NUM];
+       /* Maximum link off frame count */
+       enum replay_link_off_frame_count_level link_off_frame_count_level;
 };
 
 /* To split out "global" and "per-panel" config settings.
index d1becbb5aa2927bc191dcb5eb43a6370fb3a3591..a08073fc92aeb9a013073d271d759d310fa2ce82 100644 (file)
@@ -3056,15 +3056,14 @@ struct dmub_cmd_replay_set_timing_sync_data {
         * Currently the support is only for 0 or 1
         */
        uint8_t panel_inst;
-
        /**
-        * Explicit padding to 4 byte boundary.
+        * REPLAY set_timing_sync
         */
-       uint8_t pad[3];
+       uint8_t timing_sync_supported;
        /**
-        * REPLAY set_timing_sync
+        * Explicit padding to 4 byte boundary.
         */
-       bool timing_sync_supported;
+       uint8_t pad[2];
 };
 
 /**