[PATCH] drm: Call sysfs_notify after changing drm_connector::dpms

Jani Nikula jani.nikula at linux.intel.com
Mon Sep 25 13:48:07 UTC 2017


On Tue, 19 Sep 2017, Karsten Wiese <fzuuzf at googlemail.com> wrote:
> This makes poll work for the
> /sys/class/drm/cardX/connectorY/dpms attributes.

I guess the question is, what are you trying to achieve? What is the
problem that this solves?

We have zero sysfs_notify in all of drm AFAICT.

BR,
Jani.


>
> 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");
>  		}
>  	}

-- 
Jani Nikula, Intel Open Source Technology Center


More information about the dri-devel mailing list