diff options
Diffstat (limited to 'drivers/gpu/drm/amd/display/amdgpu_dm')
| -rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 22 | 
1 files changed, 20 insertions, 2 deletions
| diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index deb8010efc69..5975233dfa77 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -8067,8 +8067,26 @@ static bool is_content_protection_different(struct drm_connector_state *state,  	    state->content_protection == DRM_MODE_CONTENT_PROTECTION_ENABLED)  		state->content_protection = DRM_MODE_CONTENT_PROTECTION_DESIRED; -	/* Check if something is connected/enabled, otherwise we start hdcp but nothing is connected/enabled -	 * hot-plug, headless s3, dpms +	/* Stream removed and re-enabled +	 * +	 * Can sometimes overlap with the HPD case, +	 * thus set update_hdcp to false to avoid +	 * setting HDCP multiple times. +	 * +	 * Handles:	DESIRED -> DESIRED (Special case) +	 */ +	if (!(old_state->crtc && old_state->crtc->enabled) && +		state->crtc && state->crtc->enabled && +		connector->state->content_protection == DRM_MODE_CONTENT_PROTECTION_DESIRED) { +		dm_con_state->update_hdcp = false; +		return true; +	} + +	/* Hot-plug, headless s3, dpms +	 * +	 * Only start HDCP if the display is connected/enabled. +	 * update_hdcp flag will be set to false until the next +	 * HPD comes in.  	 *  	 * Handles:	DESIRED -> DESIRED (Special case)  	 */ | 
