diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c index df196db2b697..4fd6b914d707 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c @@ -3057,12 +3057,13 @@ static void set_dw_hdmi_hdcp_enable(struct dw_hdmi_qp *hdmi, old_cp = old_state->content_protection; new_cp = new_state->content_protection; + DRM_DEV_DEBUG_DRIVER(hdmi->dev, "old cp:%llu new cp:%llu\n", old_cp, new_cp); if (old_cp != new_cp) { if (new_cp == DRM_MODE_CONTENT_PROTECTION_DESIRED && old_cp == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) dw_hdmi_qp_hdcp_enable(hdmi, new_state); else if (new_cp == DRM_MODE_CONTENT_PROTECTION_UNDESIRED && - old_cp == DRM_MODE_CONTENT_PROTECTION_DESIRED) + old_cp != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) dw_hdmi_qp_hdcp_disable(hdmi, new_state); } } @@ -3227,7 +3228,8 @@ static void dw_hdmi_connector_atomic_commit(struct drm_connector *connector, hdmi->update = false; } - set_dw_hdmi_hdcp_enable(hdmi, connector, state); + if (!hdmi->disabled) + set_dw_hdmi_hdcp_enable(hdmi, connector, state); } void dw_hdmi_qp_set_output_type(struct dw_hdmi_qp *hdmi, u64 val)