}
 
 #ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
-static void amdgpu_dm_set_crc_window_default(struct drm_crtc *crtc)
+static void amdgpu_dm_set_crc_window_default(struct drm_crtc *crtc, struct dc_stream_state *stream)
 {
        struct drm_device *drm_dev = crtc->dev;
+       struct amdgpu_display_manager *dm = &drm_to_adev(drm_dev)->dm;
        struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
+       bool was_activated;
 
        spin_lock_irq(&drm_dev->event_lock);
+       was_activated = acrtc->dm_irq_params.window_param.activated;
        acrtc->dm_irq_params.window_param.x_start = 0;
        acrtc->dm_irq_params.window_param.y_start = 0;
        acrtc->dm_irq_params.window_param.x_end = 0;
        acrtc->dm_irq_params.window_param.update_win = false;
        acrtc->dm_irq_params.window_param.skip_frame_cnt = 0;
        spin_unlock_irq(&drm_dev->event_lock);
+
+       /* Disable secure_display if it was enabled */
+       if (was_activated) {
+               /* stop ROI update on this crtc */
+               flush_work(&dm->secure_display_ctxs[crtc->index].notify_ta_work);
+               flush_work(&dm->secure_display_ctxs[crtc->index].forward_roi_work);
+               dc_stream_forward_crc_window(stream, NULL, true);
+       }
 }
 
 static void amdgpu_dm_crtc_notify_ta_to_read(struct work_struct *work)
                                        struct dm_crtc_state *dm_crtc_state,
                                        enum amdgpu_dm_pipe_crc_source source)
 {
-#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
-       int i;
-#endif
        struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        struct dc_stream_state *stream_state = dm_crtc_state->stream;
        bool enable = amdgpu_dm_is_valid_crc_source(source);
 
        /* Enable or disable CRTC CRC generation */
        if (dm_is_crc_source_crtc(source) || source == AMDGPU_DM_PIPE_CRC_SOURCE_NONE) {
-#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
-               /* Disable secure_display if it was enabled */
-               if (!enable) {
-                       for (i = 0; i < adev->mode_info.num_crtc; i++) {
-                               if (adev->dm.secure_display_ctxs[i].crtc == crtc) {
-                                       /* stop ROI update on this crtc */
-                                       flush_work(&adev->dm.secure_display_ctxs[i].notify_ta_work);
-                                       flush_work(&adev->dm.secure_display_ctxs[i].forward_roi_work);
-                                       dc_stream_forward_crc_window(stream_state, NULL, true);
-                               }
-                       }
-               }
-#endif
                if (!dc_stream_configure_crc(stream_state->ctx->dc,
                                             stream_state, NULL, enable, enable)) {
                        ret = -EINVAL;
 
 #if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
        /* Reset secure_display when we change crc source from debugfs */
-       amdgpu_dm_set_crc_window_default(crtc);
+       amdgpu_dm_set_crc_window_default(crtc, crtc_state->stream);
 #endif
 
        if (amdgpu_dm_crtc_configure_crc_source(crtc, crtc_state, source)) {