[PATCH] HACK: drm: Allow encoders to be reenabled

Alex Deucher alexdeucher at gmail.com
Thu Nov 8 09:48:18 PST 2012


On Wed, Nov 7, 2012 at 5:06 PM, Thierry Reding
<thierry.reding at avionic-design.de> wrote:
> When running the xf86-video-modesetting driver on top of a KMS driver,
> leaving X causes the active encoder's DPMS mode to be set to off by the
> drm_crtc_helper_disable() function. This doesn't set the connector's
> DPMS mode to off, however, which results in subsequent calls to the
> drm_helper_connector_dpms() function to not enable the encoder because
> the connector's DPMS mode hasn't changed.
>
> This patch works around this by forcing the connector's DPMS mode to off
> if the encoder has changed, which always happens when a new mode is set
> after drm_crtc_helper_disable(). The code that sets the connector DPMS
> mode to on will then also enable the CRTC and encoder because the mode
> actually changed.
>
> Signed-off-by: Thierry Reding <thierry.reding at avionic-design.de>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/drm_crtc_helper.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
> index 1227adf..1b5ebf1 100644
> --- a/drivers/gpu/drm/drm_crtc_helper.c
> +++ b/drivers/gpu/drm/drm_crtc_helper.c
> @@ -649,6 +649,12 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
>                          */
>                         if (connector->encoder)
>                                 connector->encoder->crtc = NULL;
> +                       /*
> +                        * HACK: Force DPMS mode to off so that the encoder
> +                        * has a chance of being reenabled along with the
> +                        * connector later on.
> +                        */
> +                       connector->dpms = DRM_MODE_DPMS_OFF;
>                         connector->encoder = new_encoder;
>                 }
>         }
> --
> 1.8.0
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list