diff options
Diffstat (limited to 'drivers/gpu/drm/amd/display/modules')
| -rw-r--r-- | drivers/gpu/drm/amd/display/modules/freesync/freesync.c | 36 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/modules/hdcp/hdcp_log.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c | 2 | 
3 files changed, 31 insertions, 9 deletions
| diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c index 81820f3d6b3b..d988533d4af5 100644 --- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c +++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c @@ -324,22 +324,44 @@ static void apply_below_the_range(struct core_freesync *core_freesync,  		/* Choose number of frames to insert based on how close it  		 * can get to the mid point of the variable range. +		 *  - Delta for CEIL: delta_from_mid_point_in_us_1 +		 *  - Delta for FLOOR: delta_from_mid_point_in_us_2  		 */ -		if ((frame_time_in_us / mid_point_frames_ceil) > in_out_vrr->min_duration_in_us && -				(delta_from_mid_point_in_us_1 < delta_from_mid_point_in_us_2 || -						mid_point_frames_floor < 2)) { +		if ((last_render_time_in_us / mid_point_frames_ceil) < in_out_vrr->min_duration_in_us) { +			/* Check for out of range. +			 * If using CEIL produces a value that is out of range, +			 * then we are forced to use FLOOR. +			 */ +			frames_to_insert = mid_point_frames_floor; +		} else if (mid_point_frames_floor < 2) { +			/* Check if FLOOR would result in non-LFC. In this case +			 * choose to use CEIL +			 */ +			frames_to_insert = mid_point_frames_ceil; +		} else if (delta_from_mid_point_in_us_1 < delta_from_mid_point_in_us_2) { +			/* If choosing CEIL results in a frame duration that is +			 * closer to the mid point of the range. +			 * Choose CEIL +			 */  			frames_to_insert = mid_point_frames_ceil; -			delta_from_mid_point_delta_in_us = delta_from_mid_point_in_us_2 - -					delta_from_mid_point_in_us_1;  		} else { +			/* If choosing FLOOR results in a frame duration that is +			 * closer to the mid point of the range. +			 * Choose FLOOR +			 */  			frames_to_insert = mid_point_frames_floor; -			delta_from_mid_point_delta_in_us = delta_from_mid_point_in_us_1 - -					delta_from_mid_point_in_us_2;  		}  		/* Prefer current frame multiplier when BTR is enabled unless it drifts  		 * too far from the midpoint  		 */ +		if (delta_from_mid_point_in_us_1 < delta_from_mid_point_in_us_2) { +			delta_from_mid_point_delta_in_us = delta_from_mid_point_in_us_2 - +					delta_from_mid_point_in_us_1; +		} else { +			delta_from_mid_point_delta_in_us = delta_from_mid_point_in_us_1 - +					delta_from_mid_point_in_us_2; +		}  		if (in_out_vrr->btr.frames_to_insert != 0 &&  				delta_from_mid_point_delta_in_us < BTR_DRIFT_MARGIN) {  			if (((last_render_time_in_us / in_out_vrr->btr.frames_to_insert) < diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_log.h b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_log.h index d3192b9d0c3d..47f8ee2832ff 100644 --- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_log.h +++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_log.h @@ -27,7 +27,7 @@  #define MOD_HDCP_LOG_H_  #ifdef CONFIG_DRM_AMD_DC_HDCP -#define HDCP_LOG_ERR(hdcp, ...) DRM_WARN(__VA_ARGS__) +#define HDCP_LOG_ERR(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__)  #define HDCP_LOG_VER(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__)  #define HDCP_LOG_FSM(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__)  #define HDCP_LOG_TOP(hdcp, ...) pr_debug("[HDCP_TOP]:"__VA_ARGS__) diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c index fb1161dd7ea8..3a367a5968ae 100644 --- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c +++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c @@ -88,7 +88,7 @@ enum mod_hdcp_status mod_hdcp_add_display_to_topology(struct mod_hdcp *hdcp,  	enum mod_hdcp_status status = MOD_HDCP_STATUS_SUCCESS;  	if (!psp->dtm_context.dtm_initialized) { -		DRM_ERROR("Failed to add display topology, DTM TA is not initialized."); +		DRM_INFO("Failed to add display topology, DTM TA is not initialized.");  		display->state = MOD_HDCP_DISPLAY_INACTIVE;  		return MOD_HDCP_STATUS_FAILURE;  	} |