BUG: drm_crtc_helper_set_config does not work
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