This makes poll work for the /sys/class/drm/cardX/connectorY/dpms attributes. Tested with i915 suspended by XScreenServer and suspend to RAM. Signed-off-by: Karsten Wiese <fzuuzf@xxxxxxxxxxxxxx> --- drivers/gpu/drm/drm_atomic.c | 4 ++++ drivers/gpu/drm/drm_atomic_helper.c | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c index 2fd383d..b6fa87b 100644 --- a/drivers/gpu/drm/drm_atomic.c +++ b/drivers/gpu/drm/drm_atomic.c @@ -1880,6 +1880,10 @@ int drm_atomic_connector_commit_dpms(struct drm_atomic_state *state, out: if (ret != 0) connector->dpms = old_mode; + else + if (connector->dpms != old_mode) + sysfs_notify(&connector->kdev->kobj, NULL, "dpms"); + return ret; } diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 4e53aae..6198772 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -921,12 +921,16 @@ drm_atomic_helper_update_legacy_modeset_state(struct drm_device *dev, crtc = new_conn_state->crtc; if ((!crtc && old_conn_state->crtc) || (crtc && drm_atomic_crtc_needs_modeset(crtc->state))) { - int mode = DRM_MODE_DPMS_OFF; + int old_mode, mode = DRM_MODE_DPMS_OFF; if (crtc && crtc->state->active) mode = DRM_MODE_DPMS_ON; + old_mode = connector->dpms; connector->dpms = mode; + if (old_mode != mode) + sysfs_notify(&connector->kdev->kobj, + NULL, "dpms"); } } -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel