drm/i915: Prepare the connector/encoder mask readout for hw vs. uapi state split
Prepare the connector/encoder mask readout for the uapi vs. hw state split. We'll want to do all readout into the hw state. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190927131432.15978-2-ville.syrjala@linux.intel.com
This commit is contained in:
parent
4078c983fe
commit
de3b67afc0
@ -16757,24 +16757,28 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev)
|
||||
drm_connector_list_iter_begin(dev, &conn_iter);
|
||||
for_each_intel_connector_iter(connector, &conn_iter) {
|
||||
if (connector->get_hw_state(connector)) {
|
||||
struct intel_crtc_state *crtc_state;
|
||||
struct intel_crtc *crtc;
|
||||
|
||||
connector->base.dpms = DRM_MODE_DPMS_ON;
|
||||
|
||||
encoder = connector->encoder;
|
||||
connector->base.encoder = &encoder->base;
|
||||
|
||||
if (encoder->base.crtc &&
|
||||
encoder->base.crtc->state->active) {
|
||||
crtc = to_intel_crtc(encoder->base.crtc);
|
||||
crtc_state = crtc ? to_intel_crtc_state(crtc->base.state) : NULL;
|
||||
|
||||
if (crtc_state && crtc_state->base.active) {
|
||||
/*
|
||||
* This has to be done during hardware readout
|
||||
* because anything calling .crtc_disable may
|
||||
* rely on the connector_mask being accurate.
|
||||
*/
|
||||
encoder->base.crtc->state->connector_mask |=
|
||||
crtc_state->base.connector_mask |=
|
||||
drm_connector_mask(&connector->base);
|
||||
encoder->base.crtc->state->encoder_mask |=
|
||||
crtc_state->base.encoder_mask |=
|
||||
drm_encoder_mask(&encoder->base);
|
||||
}
|
||||
|
||||
} else {
|
||||
connector->base.dpms = DRM_MODE_DPMS_OFF;
|
||||
connector->base.encoder = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user