[PATCH] drm: Call sysfs_notify after changing drm_connector::dpms
Karsten Wiese
fzuuzf at googlemail.com
Tue Sep 19 09:53:50 UTC 2017
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 at googlemail.com>
---
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
More information about the dri-devel
mailing list