During system suspend after connector switch off its dpms field is set to connector previous dpms state. To properly resume dpms field should be set to its actual state (off) before resuming to previous dpms state.
Unified · Split
| @@ -194,8 +194,12 @@ static int exynos_drm_resume(struct drm_device *dev) · 193 unmodified lines | |||
| 194 | 194 | ||
| 195 | drm_modeset_lock_all(dev); | 195 | drm_modeset_lock_all(dev); |
| 196 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { | 196 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { |
| 197 | if (connector->funcs->dpms) | 197 | if (connector->funcs->dpms) { |
| 198 | connector->funcs->dpms(connector, connector->dpms); | 198 | int dpms = connector->dpms; |
| 199 | |||
| 200 | connector->dpms = DRM_MODE_DPMS_OFF; | ||
| 201 | connector->funcs->dpms(connector, dpms); | ||
| 202 | } | ||
| 199 | } | 203 | } |
| 200 | drm_modeset_unlock_all(dev); | 204 | drm_modeset_unlock_all(dev); |
| 201 | 205 | ||