mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 16:41:39 +00:00
drm/amd/display: Fix unstable HPCP compliance on Chrome Barcelo
[Why] Intermittently, there presents two occurrences of 0 stream commits in a single HPD event. Current HDCP sequence does not consider such scenerio, and will thus disable HDCP. [How] Add condition check to include stream remove and re-enable case for HDCP enable. Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Acked-by: Mikita Lipski <mikita.lipski@amd.com> Signed-off-by: Qingqing Zhuo <qingqing.zhuo@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
90517c9838
commit
4e00a434a0
@ -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)
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user