This patch makes this happen by consolidating all modeset paths and getting rid of most transitional state. This happens first by unifying all paths so all code that disables a crtc goes through either intel_crtc_toggle or __intel_set_mode. After that's done crtc_state->active is updated in intel_crtc_toggle, and used to check whether the crtc is active or not. At this point crtc->state is equal to intel_crtc->config and crtc->state->active is equal to crtc->config. This gives us enough information to convert all planes to atomic, this had to be done in a single commit because the transitional helpers don't call crtc_check and some things have to be moved there. This makes the planes fully atomic, next step is getting rid of the transitional intel_crtc->active and intel_crtc->config, and replacing it with crtc->state or old_crtc_state. The last part allows setting multiple crtc's in intel_set_mode, and restore the sw state after suspend by calculating the hw state in a drm_atomic_state, then swapping it with sw state and finally call intel_set_mode with the sw state. Ander Conselvan de Oliveira (6): drm/i915: Set mode_changed for audio in intel_modeset_pipe_config() drm/i915: Make __intel_set_mode() take only atomic state as argument drm/i915: Use global atomic state for staged pll config drm/i915: Support modeset across multiple pipes drm/i915: Move cdclk and pll setup to intel_modeset_compute_config() drm/i915: Read hw state into an atomic state struct Maarten Lankhorst (36): drm/atomic: Allow drivers to subclass drm_atomic_state drm/i915: get rid of intel_crtc_disable and related code, v2 drm/i915: Only update required power domains. drm/i915: use intel_crtc_control everywhere drm/i915: Get rid of new_encoder. drm/i915: get rid of new_crtc drm/i915: Get rid of crtc->new_enabled, v2. drm/i915: Implement intel_crtc_toggle using atomic state drm/i915: Make intel_modeset_fixup_state similar to the atomic helper. drm/i915: make plane helpers fully atomic drm/i915: Update less state during modeset. drm/i915: move swap_state to the right place drm/i915: Use hwmode for vblanks. drm/i915: Remove usage of crtc->config from i915_debugfs.c drm/i915: Remove use of crtc->config from intel_pm.c drm/i915: Remove use of crtc->config from intel_audio.c drm/i915: remove use of crtc->config from intel_fbc.c drm/i915: remove use of crtc->config from intel_atomic.c and intel_sprite.c drm/i915: Remove use of crtc->config from intel_overlay.c drm/i915: Pass old state to crtc_disable and use it. drm/i915: Pass old state to encoder->(post_)disable. drm/i915: Remove use of crtc->config from intel_fbdev.c drm/i915: Remove use of crtc->config from intel_psr.c drm/i915: Remove use of crtc->config from intel_ddi.c drm/i915: Remove use of crtc->config from intel_dp.c drm/i915: Remove use of crtc->config from intel_dp_mst.c drm/i915: Remove use of crtc->config from intel_dsi.c drm/i915: Remove use of crtc->config in intel_hdmi.c drm/i915: Remove use of crtc->config in intel_sdvo.c drm/i915: Calculate haswell plane workaround. drm/i915: remove crtc->active tracking completely drm/i915: get rid of crtc->config in intel_display.c, part 1 drm/i915: get rid of crtc->config in intel_display.c, part 2 drm/i915: get rid of crtc->config drm/i915: swap state correctly in intel_atomic_commit drm/i915: return early in __intel_set_mode_setup_plls without modeset drivers/gpu/drm/drm_atomic.c | 91 +- drivers/gpu/drm/i915/i915_debugfs.c | 50 +- drivers/gpu/drm/i915/i915_drv.h | 5 +- drivers/gpu/drm/i915/i915_irq.c | 13 +- drivers/gpu/drm/i915/intel_atomic.c | 93 +- drivers/gpu/drm/i915/intel_atomic_plane.c | 59 +- drivers/gpu/drm/i915/intel_audio.c | 2 +- drivers/gpu/drm/i915/intel_crt.c | 21 +- drivers/gpu/drm/i915/intel_ddi.c | 93 +- drivers/gpu/drm/i915/intel_display.c | 2639 +++++++++++++++-------------- drivers/gpu/drm/i915/intel_dp.c | 86 +- drivers/gpu/drm/i915/intel_dp_mst.c | 16 +- drivers/gpu/drm/i915/intel_drv.h | 72 +- drivers/gpu/drm/i915/intel_dsi.c | 25 +- drivers/gpu/drm/i915/intel_dvo.c | 15 +- drivers/gpu/drm/i915/intel_fbc.c | 8 +- drivers/gpu/drm/i915/intel_fbdev.c | 19 +- drivers/gpu/drm/i915/intel_hdmi.c | 78 +- drivers/gpu/drm/i915/intel_lvds.c | 13 +- drivers/gpu/drm/i915/intel_overlay.c | 8 +- drivers/gpu/drm/i915/intel_panel.c | 3 +- drivers/gpu/drm/i915/intel_pm.c | 96 +- drivers/gpu/drm/i915/intel_psr.c | 25 +- drivers/gpu/drm/i915/intel_sdvo.c | 22 +- drivers/gpu/drm/i915/intel_sprite.c | 84 +- drivers/gpu/drm/i915/intel_tv.c | 5 +- include/drm/drm_atomic.h | 4 + include/drm/drm_crtc.h | 4 + 28 files changed, 1908 insertions(+), 1741 deletions(-) -- 2.1.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx