|
@@ -3985,6 +3985,7 @@ retry:
|
|
|
DRM_ERROR("failed to get crtc %d state\n",
|
|
|
conn->state->crtc->base.id);
|
|
|
drm_connector_list_iter_end(&conn_iter);
|
|
|
+ ret = -EINVAL;
|
|
|
goto unlock;
|
|
|
}
|
|
|
|
|
@@ -4023,6 +4024,12 @@ unlock:
|
|
|
drm_modeset_backoff(&ctx);
|
|
|
goto retry;
|
|
|
}
|
|
|
+
|
|
|
+ if ((ret || !num_crtcs) && sde_kms->suspend_state) {
|
|
|
+ drm_atomic_state_put(sde_kms->suspend_state);
|
|
|
+ sde_kms->suspend_state = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
drm_modeset_drop_locks(&ctx);
|
|
|
drm_modeset_acquire_fini(&ctx);
|
|
|
|
|
@@ -4061,7 +4068,8 @@ static int sde_kms_pm_resume(struct device *dev)
|
|
|
|
|
|
SDE_EVT32(sde_kms->suspend_state != NULL);
|
|
|
|
|
|
- drm_mode_config_reset(ddev);
|
|
|
+ if (sde_kms->suspend_state)
|
|
|
+ drm_mode_config_reset(ddev);
|
|
|
|
|
|
drm_modeset_acquire_init(&ctx, 0);
|
|
|
retry:
|