On Wed, Nov 7, 2012 at 5:06 PM, Thierry Reding <thierry.reding@xxxxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxx> Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > 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@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel