Hi all, Changes since last time around: - The prep patches are all merged now. - I've left out the actual DP fixes/cleanups, I think we should merge those in a separte step. - A few bugfixes (thanks to Paulo, Jani and Chris). - I've also applied a few bikesheds for naming that Paulo suggested (but I'm not sure whether I've sent those out already in a previous patchbomb). Essentially this is just the core rework, which addes the new get_hw_state code, refactors all the encoders to use the new functions and finally reworks the modeset logic to disable/enable entire pipes, always (and with a deterministic order). For merging to -next, I plan to pull in everything with a real merge commit. For that reason I've put up a modeset-rework-base branch onto my private fdo repo[1]. That way I can put a short documentation for the new modeset design into the merge commit (stichted together from the previous patchbomb cover letters), documenting my folly assumptions for eternity. I'll also plan to put tags for the entire series in the merge commit, so if you have tested this on a few machines, read through and agree with the new designs, please reply with your tested-by/acked-by/reviewed-by tags. Flames, comments and test reports highly welcome. Cheers, Daniel [1] http://cgit.freedesktop.org/~danvet/drm/log/?h=modeset-rework-base Daniel Vetter (58): drm/i915: add crtc->enable/disable vfuncs insted of dpms drm/i915: rip out crtc prepare/commit indirection drm/i915: add direct encoder disable/enable infrastructure drm/i915/hdmi: convert to encoder->disable/enable drm/i915/tv: convert to encoder enable/disable drm/i915/lvds: convert to encoder disable/enable drm/i915/dp: convert to encoder disable/enable drm/i915/crt: convert to encoder disable/enable drm/i915/sdvo: convert to encoder disable/enable drm/i915/dvo: convert to encoder disable/enable drm/i915: convert dpms functions of dvo/sdvo/crt drm/i915: rip out encoder->disable/enable checks drm/i915: clean up encoder_prepare/commit drm/i915: copy&paste drm_crtc_helper_set_config drm/i915: call set_base directly drm/i915: inline intel_best_encoder drm/i915: copy&paste drm_crtc_helper_set_mode drm/i915: simplify intel_crtc_prepare_encoders drm/i915: rip out encoder->prepare/commit drm/i915: call crtc functions directly drm/i915: WARN when trying to enabled an unused crtc drm/i915: Add interfaces to read out encoder/connector hw state drm/i915/dp: implement get_hw_state drm/i915/hdmi: implement get_hw_state drm/i915/tv: implement get_hw_state drm/i915/lvds: implement get_hw_state drm/i915/crt: implement get_hw_state drm/i915/sdvo: implement get_hw_state drm/i915/dvo: implement get_hw_state drm/i915: read out the modeset hw state at load and resume time drm/i915: check connector hw/sw state drm/i915: rip out intel_crtc->dpms_mode drm/i915: rip out intel_dp->dpms_mode drm/i915: ensure the force pipe A quirk is actually followed drm/i915: introduce struct intel_set_config drm/i915: extract modeset config save/restore code drm/i915: extract intel_set_config_compute_mode_changes drm/i915: extract intel_set_config_update_output_state drm/i915: implement crtc helper semantics relied upon by the fb helper drm/i915: don't update the fb base if there is no fb drm/i915: convert pointless error checks in set_config to BUGs drm/i915: don't save all the encoder/crtc state in set_config drm/i915: stage modeset output changes drm/i915: push crtc->fb update into pipe_set_base drm/i915: remove crtc disabling special case drm/i915: move output commit and crtc disabling into set_mode drm/i915: extract adjusted mode computation drm/i915: use staged outuput config in tv->mode_fixup drm/i915: use staged outuput config in lvds->mode_fixup drm/i915: compute masks of crtcs affected in set_mode drm/i915: implement new set_mode code flow drm/i915: push commit_output_state past crtc disabling drm/i915: s/intel_encoder_disable/intel_encoder_noop drm/i915: WARN if the pipe won't turn off drm/i915: switch the load detect code to the staged modeset config drm/i915: push commit_output_state past the crtc/encoder preparing drm/i915: disable all crtcs at suspend time drm/i915: add tons of modeset state checks drivers/gpu/drm/i915/dvo.h | 6 + drivers/gpu/drm/i915/dvo_ch7017.c | 13 + drivers/gpu/drm/i915/dvo_ch7xxx.c | 13 + drivers/gpu/drm/i915/dvo_ivch.c | 15 + drivers/gpu/drm/i915/dvo_ns2501.c | 15 + drivers/gpu/drm/i915/dvo_sil164.c | 16 + drivers/gpu/drm/i915/dvo_tfp410.c | 14 + drivers/gpu/drm/i915/i915_drv.c | 4 + drivers/gpu/drm/i915/i915_drv.h | 4 +- drivers/gpu/drm/i915/i915_reg.h | 2 + drivers/gpu/drm/i915/intel_crt.c | 136 ++- drivers/gpu/drm/i915/intel_ddi.c | 59 +- drivers/gpu/drm/i915/intel_display.c | 1499 ++++++++++++++++++++++++++++------ drivers/gpu/drm/i915/intel_dp.c | 144 ++-- drivers/gpu/drm/i915/intel_drv.h | 64 +- drivers/gpu/drm/i915/intel_dvo.c | 94 ++- drivers/gpu/drm/i915/intel_hdmi.c | 151 +++- drivers/gpu/drm/i915/intel_lvds.c | 95 +-- drivers/gpu/drm/i915/intel_sdvo.c | 164 +++- drivers/gpu/drm/i915/intel_tv.c | 61 +- 20 files changed, 2044 insertions(+), 525 deletions(-) -- 1.7.11.2