enum dc_connection_type new_connection_type = dc_connection_none;
 #ifdef CONFIG_DRM_AMD_DC_HDCP
        struct amdgpu_device *adev = drm_to_adev(dev);
+       struct dm_connector_state *dm_con_state = to_dm_connector_state(connector->state);
 #endif
 
        /*
        mutex_lock(&aconnector->hpd_lock);
 
 #ifdef CONFIG_DRM_AMD_DC_HDCP
-       if (adev->dm.hdcp_workqueue)
+       if (adev->dm.hdcp_workqueue) {
                hdcp_reset_display(adev->dm.hdcp_workqueue, aconnector->dc_link->link_index);
+               dm_con_state->update_hdcp = true;
+       }
 #endif
        if (aconnector->fake_enable)
                aconnector->fake_enable = false;
                                            const struct drm_connector *connector, struct hdcp_workqueue *hdcp_w)
 {
        struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
+       struct dm_connector_state *dm_con_state = to_dm_connector_state(connector->state);
 
        if (old_state->hdcp_content_type != state->hdcp_content_type &&
            state->content_protection != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) {
        /* Check if something is connected/enabled, otherwise we start hdcp but nothing is connected/enabled
         * hot-plug, headless s3, dpms
         */
-       if (state->content_protection == DRM_MODE_CONTENT_PROTECTION_DESIRED && connector->dpms == DRM_MODE_DPMS_ON &&
-           aconnector->dc_sink != NULL)
+       if (dm_con_state->update_hdcp && state->content_protection == DRM_MODE_CONTENT_PROTECTION_DESIRED &&
+           connector->dpms == DRM_MODE_DPMS_ON && aconnector->dc_sink != NULL) {
+               dm_con_state->update_hdcp = false;
                return true;
+       }
 
        if (old_state->content_protection == state->content_protection)
                return false;
 
-       if (state->content_protection == DRM_MODE_CONTENT_PROTECTION_UNDESIRED)
+       if (state->content_protection != DRM_MODE_CONTENT_PROTECTION_ENABLED)
                return true;
 
        return false;
                    connector->state->content_protection == DRM_MODE_CONTENT_PROTECTION_ENABLED) {
                        hdcp_reset_display(adev->dm.hdcp_workqueue, aconnector->dc_link->link_index);
                        new_con_state->content_protection = DRM_MODE_CONTENT_PROTECTION_DESIRED;
+                       dm_new_con_state->update_hdcp = true;
                        continue;
                }