BUG: drm_crtc_helper_set_config does not work

Yufeng Shen miletus at chromium.org
Thu Mar 8 17:50:15 PST 2012

So a simple case of  disabling a CRTC and then re-enabling it.


CRTC X is originally connected to output Y

1. XRRSetCrtcConfig()    is called to disable CRTC  X

2. drm_helper_connector_dpms()   then gets called on the connector
connected to CRTC X,
    in the function,
    the  connector->encoder  is set to DPMS OFF,   and the
encoder->crtc  set to DPMS OFF
    but the  encoder->crtc   is still CRTC X


3. XRRSetCrtcConfig()    is called to to enable CRTC  X  on output Y

4. drm_crtc_helper_set_config ()  is now called,
suppose   fb is not changed,  mode is not changed, encoder is not changed
and the   encoder->crtc  is not changed,
then we have   mode_changed == false    and  the mode is not reset

So the CRTC X won't be connected to output Y.

What I don't understand the code is that why  XRRSetCrtcConfig()  ends
up only calling  drm_helper_connector_dpms()  ?
I think it should do more than that, at least it should set the
related  encoder->crtc = NULL

any comments ?

More information about the dri-devel mailing list