All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/81] modeset rework
@ 2012-07-11 14:27 Daniel Vetter
  2012-07-11 14:27 ` [PATCH 01/81] drm/i915: add crtc->enable/disable vfuncs insted of dpms Daniel Vetter
                   ` (81 more replies)
  0 siblings, 82 replies; 107+ messages in thread
From: Daniel Vetter @ 2012-07-11 14:27 UTC (permalink / raw)
  To: Intel Graphics Development; +Cc: Daniel Vetter

Or: How to fix cpu edp in 81 simple steps. Admittedly this includes some minor
detours.

Yeah, I've managed to pull it through and finally put the last piece into place
that started this entire endeavour: cpu edp on my ivb works!

I'm too lazy to repeat all the high-level overview stuff from the cover-letter
of the rfc series. But I think it's nice to give a short overview of where in
our code we still rely on crtc helper infrastructure:

- We still use the ->mode_fixup callbacks from the crtc helper. We also still
  use the encoder->mode_set callbacks. Boht can easily be moved to callbacks in
  intel_encoder, but honestly I didn't see the point.
- The fb helper code has a ridiculously incetious relationship with the crtc
  helper code. Read through the commit messages to see which pitfalls I've
  stumbled into. I plan to eventually fix this up, but this series only contains
  the minimal changes to drm_fb_helper.c to move ahead - I need to sharpen my
  broadsword first again.
- We also still rely on the crtc helper for hotplug detection and connector
  status probing.

Also, after this we still have some large opportunities to clean things up:
- I think we should create struct intel_mode and use it as the adjusted mode
  everywhere to store little pieces like needs_tvclock, pipe dithering values or
  dp link parameters.  That would still be a layering violation, but at least we
  wouldn't need to recompute these kinds of things in intel_display.c.
  Especially the port bpc computation needed for selecting the pipe bpc and
  dithering settings in intel_display.c is rather gross.
- In a related rework I think we should implement ->mode_valid in terms of
  ->mode_fixup in a generic way - I've hunted too many bugs where ->mode_valid
  did the right thing, but ->mode_fixup didn't. Or vice versa, resulting in
  funny bugs for user-supplied modes.
- I think we should ditch the idea to rework the hdp handling in the common crtc
  helper code and just move things to i915.ko. Which would rid us of the
  ->detect crtc helper dependencies.
- lvds wire pair and pll enabling is all done. We should be able to move this to
  the crtc_enable callbacks.

I haven't thought about how we could merge this (presuming people don't scream
an tear it apart), but there are definitely patches in here which can be merged
right away. If you see one, review + a nod highly appreciated, I've lost the big
picture a bit recently ;-)

Compared to the first part, I haven't yet tested this on anything but snb/ivb -
but the newly addded consistency checks are _extremely_ good, things essentially
started to work correctly once I've squashed the last WARN. So I'm positive that
further testing of the newly added patches on all my other machines won't turn
up anything troubling.

For reviewing this patch-carpet-bomber I suggest you grab the rfc intro mail at

http://lists.freedesktop.org/archives/intel-gfx/2012-July/018635.html

Then read the last patch, which motivated pretty much everything else and work
backwards from there, at least for the high-level picture.

Comments, flames and test reports highly welcome.

Cheers, Daniel

Daniel Vetter (81):
  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: add missing gen2 pipe A quirk entries
  drm/i915: rip out the overlay pipe A workaround
  drm/i915: prepare load-detect pipe code for dpms changes
  drm/i915/hdmi: convert to encoder->disable/enable
  drm/i915/tv: convert to encoder enable/disable
  drm/i915/lvds: ditch ->prepare special case
  drm/i915/lvds: convert to encoder disable/enable
  drm/i915/dp: convert to encoder disable/enable
  drm/i915: create VLV_DSIPLAY_BASE #define
  drm/i915: group ADPA #defines together
  drm/i915: add inte_crt->adpa_reg
  drm/i915/crt: convert to encoder disable/enable
  drm/i915/sdvo: convert to encoder disable/enable
  drm/i915: simplify dvo dpms interface
  drm/i915/dvo: convert to encoder disable/enable
  drm/i915: simplify possible_clones computation
  drm/i915: add port parameter to intel_hdmi_init
  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/fb helper: don't call drm_crtc_helper_set_config
  drm: remove the list_head from drm_mode_set
  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: kill a few unused things in dev_priv
  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
  drm/i915: extract ironlake_fdi_pll_disable
  drm/i915: rip out intel_disable_pch_ports
  drm/i915: don't disable fdi links harder in ilk_crtc_enable
  drm/i915: don't call dpms funcs after set_mode
  drm/i915: update dpms property in set_mode
  drm/i915: add encoder->pre_enable/post_disable
  drm/i915: clean up the cpu edp pll special case
  drm/i915: robustify edp_pll_on/off
  drm/i915: rip out dp port enabling cludges^Wchecks
  drm/i915: disable the cpu edp port after the cpu pipe

 drivers/gpu/drm/drm_fb_helper.c      |    2 +-
 drivers/gpu/drm/i915/dvo.h           |   15 +-
 drivers/gpu/drm/i915/dvo_ch7017.c    |   21 +-
 drivers/gpu/drm/i915/dvo_ch7xxx.c    |   17 +-
 drivers/gpu/drm/i915/dvo_ivch.c      |   23 +-
 drivers/gpu/drm/i915/dvo_sil164.c    |   20 +-
 drivers/gpu/drm/i915/dvo_tfp410.c    |   18 +-
 drivers/gpu/drm/i915/i915_dma.c      |   22 +-
 drivers/gpu/drm/i915/i915_drv.c      |    6 +-
 drivers/gpu/drm/i915/i915_drv.h      |   17 +-
 drivers/gpu/drm/i915/i915_reg.h      |   52 +-
 drivers/gpu/drm/i915/intel_crt.c     |  157 +++-
 drivers/gpu/drm/i915/intel_ddi.c     |   59 +-
 drivers/gpu/drm/i915/intel_display.c | 1600 +++++++++++++++++++++++++++-------
 drivers/gpu/drm/i915/intel_dp.c      |  218 +++--
 drivers/gpu/drm/i915/intel_drv.h     |   94 ++-
 drivers/gpu/drm/i915/intel_dvo.c     |  105 ++-
 drivers/gpu/drm/i915/intel_hdmi.c    |  203 +++--
 drivers/gpu/drm/i915/intel_lvds.c    |  104 +--
 drivers/gpu/drm/i915/intel_overlay.c |   58 +--
 drivers/gpu/drm/i915/intel_sdvo.c    |  178 +++-
 drivers/gpu/drm/i915/intel_tv.c      |   63 +-
 include/drm/drm_crtc.h               |    2 -
 23 files changed, 2196 insertions(+), 858 deletions(-)

-- 
1.7.7.6

^ permalink raw reply	[flat|nested] 107+ messages in thread

end of thread, other threads:[~2012-07-26 18:06 UTC | newest]

Thread overview: 107+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-11 14:27 [PATCH 00/81] modeset rework Daniel Vetter
2012-07-11 14:27 ` [PATCH 01/81] drm/i915: add crtc->enable/disable vfuncs insted of dpms Daniel Vetter
2012-07-11 14:27 ` [PATCH 02/81] drm/i915: rip out crtc prepare/commit indirection Daniel Vetter
2012-07-12 14:44   ` Daniel Vetter
2012-07-11 14:27 ` [PATCH 03/81] drm/i915: add direct encoder disable/enable infrastructure Daniel Vetter
2012-07-11 14:27 ` [PATCH 04/81] drm/i915: add missing gen2 pipe A quirk entries Daniel Vetter
2012-07-11 14:27 ` [PATCH 05/81] drm/i915: rip out the overlay pipe A workaround Daniel Vetter
2012-07-11 14:27 ` [PATCH 06/81] drm/i915: prepare load-detect pipe code for dpms changes Daniel Vetter
2012-07-11 14:27 ` [PATCH 07/81] drm/i915/hdmi: convert to encoder->disable/enable Daniel Vetter
2012-07-11 14:27 ` [PATCH 08/81] drm/i915/tv: convert to encoder enable/disable Daniel Vetter
2012-07-11 14:27 ` [PATCH 09/81] drm/i915/lvds: ditch ->prepare special case Daniel Vetter
2012-07-22 14:52   ` Daniel Vetter
2012-07-22 16:32     ` Takashi Iwai
2012-07-22 19:20       ` Daniel Vetter
2012-07-11 14:27 ` [PATCH 10/81] drm/i915/lvds: convert to encoder disable/enable Daniel Vetter
2012-07-11 14:27 ` [PATCH 11/81] drm/i915/dp: " Daniel Vetter
2012-07-11 14:27 ` [PATCH 12/81] drm/i915: create VLV_DSIPLAY_BASE #define Daniel Vetter
2012-07-20 12:07   ` Daniel Vetter
2012-07-11 14:27 ` [PATCH 13/81] drm/i915: group ADPA #defines together Daniel Vetter
2012-07-12 13:06   ` Paulo Zanoni
2012-07-11 14:27 ` [PATCH 14/81] drm/i915: add inte_crt->adpa_reg Daniel Vetter
2012-07-20 11:56   ` Chris Wilson
2012-07-20 12:09   ` Daniel Vetter
2012-07-11 14:27 ` [PATCH 15/81] drm/i915/crt: convert to encoder disable/enable Daniel Vetter
2012-07-11 14:27 ` [PATCH 16/81] drm/i915/sdvo: " Daniel Vetter
2012-07-11 14:28 ` [PATCH 17/81] drm/i915: simplify dvo dpms interface Daniel Vetter
2012-07-11 14:28 ` [PATCH 18/81] drm/i915/dvo: convert to encoder disable/enable Daniel Vetter
2012-07-11 14:28 ` [PATCH 19/81] drm/i915: simplify possible_clones computation Daniel Vetter
2012-07-12 18:10   ` Paulo Zanoni
2012-07-12 18:47     ` Daniel Vetter
2012-07-12 18:08       ` [PATCH] " Daniel Vetter
2012-07-12 19:48         ` Paulo Zanoni
2012-07-11 14:28 ` [PATCH 20/81] drm/i915: add port parameter to intel_hdmi_init Daniel Vetter
2012-07-12 18:19   ` [PATCH] " Daniel Vetter
2012-07-12 19:49     ` Paulo Zanoni
2012-07-17  8:43       ` Daniel Vetter
2012-07-11 14:28 ` [PATCH 21/81] drm/i915: convert dpms functions of dvo/sdvo/crt Daniel Vetter
2012-07-11 14:28 ` [PATCH 22/81] drm/i915: rip out encoder->disable/enable checks Daniel Vetter
2012-07-11 14:28 ` [PATCH 23/81] drm/i915: clean up encoder_prepare/commit Daniel Vetter
2012-07-11 14:28 ` [PATCH 24/81] drm/fb helper: don't call drm_crtc_helper_set_config Daniel Vetter
2012-07-18 15:49   ` Daniel Vetter
2012-07-18 15:50     ` Daniel Vetter
2012-07-20  1:17       ` Dave Airlie
2012-07-11 14:28 ` [PATCH 25/81] drm: remove the list_head from drm_mode_set Daniel Vetter
2012-07-20  1:23   ` Dave Airlie
2012-07-11 14:28 ` [PATCH 26/81] drm/i915: copy&paste drm_crtc_helper_set_config Daniel Vetter
2012-07-11 14:28 ` [PATCH 27/81] drm/i915: call set_base directly Daniel Vetter
2012-07-11 14:28 ` [PATCH 28/81] drm/i915: inline intel_best_encoder Daniel Vetter
2012-07-11 14:28 ` [PATCH 29/81] drm/i915: copy&paste drm_crtc_helper_set_mode Daniel Vetter
2012-07-11 14:28 ` [PATCH 30/81] drm/i915: simplify intel_crtc_prepare_encoders Daniel Vetter
2012-07-11 14:28 ` [PATCH 31/81] drm/i915: rip out encoder->prepare/commit Daniel Vetter
2012-07-11 14:28 ` [PATCH 32/81] drm/i915: call crtc functions directly Daniel Vetter
2012-07-11 14:28 ` [PATCH 33/81] drm/i915: WARN when trying to enabled an unused crtc Daniel Vetter
2012-07-11 14:28 ` [PATCH 34/81] drm/i915: Add interfaces to read out encoder/connector hw state Daniel Vetter
2012-07-11 14:28 ` [PATCH 35/81] drm/i915/dp: implement get_hw_state Daniel Vetter
2012-07-11 14:28 ` [PATCH 36/81] drm/i915/hdmi: " Daniel Vetter
2012-07-11 14:28 ` [PATCH 37/81] drm/i915/tv: " Daniel Vetter
2012-07-11 14:28 ` [PATCH 38/81] drm/i915/lvds: " Daniel Vetter
2012-07-11 14:28 ` [PATCH 39/81] drm/i915/crt: " Daniel Vetter
2012-07-11 14:28 ` [PATCH 40/81] drm/i915/sdvo: " Daniel Vetter
2012-07-11 14:28 ` [PATCH 41/81] drm/i915/dvo: " Daniel Vetter
2012-07-11 14:28 ` [PATCH 42/81] drm/i915: read out the modeset hw state at load and resume time Daniel Vetter
2012-07-11 14:28 ` [PATCH 43/81] drm/i915: check connector hw/sw state Daniel Vetter
2012-07-11 14:28 ` [PATCH 44/81] drm/i915: rip out intel_crtc->dpms_mode Daniel Vetter
2012-07-11 14:28 ` [PATCH 45/81] drm/i915: rip out intel_dp->dpms_mode Daniel Vetter
2012-07-26 18:06   ` Paulo Zanoni
2012-07-11 14:28 ` [PATCH 46/81] drm/i915: ensure the force pipe A quirk is actually followed Daniel Vetter
2012-07-11 14:28 ` [PATCH 47/81] drm/i915: introduce struct intel_set_config Daniel Vetter
2012-07-11 14:28 ` [PATCH 48/81] drm/i915: extract modeset config save/restore code Daniel Vetter
2012-07-11 14:28 ` [PATCH 49/81] drm/i915: extract intel_set_config_compute_mode_changes Daniel Vetter
2012-07-11 14:28 ` [PATCH 50/81] drm/i915: extract intel_set_config_update_output_state Daniel Vetter
2012-07-11 14:28 ` [PATCH 51/81] drm/i915: implement crtc helper semantics relied upon by the fb helper Daniel Vetter
2012-07-11 14:28 ` [PATCH 52/81] drm/i915: don't update the fb base if there is no fb Daniel Vetter
2012-07-11 14:28 ` [PATCH 53/81] drm/i915: convert pointless error checks in set_config to BUGs Daniel Vetter
2012-07-11 14:28 ` [PATCH 54/81] drm/i915: don't save all the encoder/crtc state in set_config Daniel Vetter
2012-07-11 14:28 ` [PATCH 55/81] drm/i915: stage modeset output changes Daniel Vetter
2012-07-11 14:28 ` [PATCH 56/81] drm/i915: push crtc->fb update into pipe_set_base Daniel Vetter
2012-07-11 14:28 ` [PATCH 57/81] drm/i915: remove crtc disabling special case Daniel Vetter
2012-07-11 14:28 ` [PATCH 58/81] drm/i915: move output commit and crtc disabling into set_mode Daniel Vetter
2012-07-11 14:28 ` [PATCH 59/81] drm/i915: extract adjusted mode computation Daniel Vetter
2012-07-11 14:28 ` [PATCH 60/81] drm/i915: use staged outuput config in tv->mode_fixup Daniel Vetter
2012-07-11 14:28 ` [PATCH 61/81] drm/i915: use staged outuput config in lvds->mode_fixup Daniel Vetter
2012-07-11 14:28 ` [PATCH 62/81] drm/i915: compute masks of crtcs affected in set_mode Daniel Vetter
2012-07-11 14:28 ` [PATCH 63/81] drm/i915: implement new set_mode code flow Daniel Vetter
2012-07-11 14:28 ` [PATCH 64/81] drm/i915: push commit_output_state past crtc disabling Daniel Vetter
2012-07-11 14:28 ` [PATCH 65/81] drm/i915: s/intel_encoder_disable/intel_encoder_noop Daniel Vetter
2012-07-11 14:28 ` [PATCH 66/81] drm/i915: kill a few unused things in dev_priv Daniel Vetter
2012-07-11 14:28 ` [PATCH 67/81] drm/i915: WARN if the pipe won't turn off Daniel Vetter
2012-07-11 14:28 ` [PATCH 68/81] drm/i915: switch the load detect code to the staged modeset config Daniel Vetter
2012-07-11 14:28 ` [PATCH 69/81] drm/i915: push commit_output_state past the crtc/encoder preparing Daniel Vetter
2012-07-11 16:02   ` [PATCH] " Daniel Vetter
2012-07-11 14:28 ` [PATCH 70/81] drm/i915: disable all crtcs at suspend time Daniel Vetter
2012-07-11 14:28 ` [PATCH 71/81] drm/i915: add tons of modeset state checks Daniel Vetter
2012-07-11 17:46   ` [PATCH] " Daniel Vetter
2012-07-11 14:28 ` [PATCH 72/81] drm/i915: extract ironlake_fdi_pll_disable Daniel Vetter
2012-07-11 14:28 ` [PATCH 73/81] drm/i915: rip out intel_disable_pch_ports Daniel Vetter
2012-07-11 14:28 ` [PATCH 74/81] drm/i915: don't disable fdi links harder in ilk_crtc_enable Daniel Vetter
2012-07-11 14:28 ` [PATCH 75/81] drm/i915: don't call dpms funcs after set_mode Daniel Vetter
2012-07-11 14:28 ` [PATCH 76/81] drm/i915: update dpms property in set_mode Daniel Vetter
2012-07-11 14:29 ` [PATCH 77/81] drm/i915: add encoder->pre_enable/post_disable Daniel Vetter
2012-07-11 14:29 ` [PATCH 78/81] drm/i915: clean up the cpu edp pll special case Daniel Vetter
2012-07-11 14:29 ` [PATCH 79/81] drm/i915: robustify edp_pll_on/off Daniel Vetter
2012-07-11 17:47   ` [PATCH] " Daniel Vetter
2012-07-11 14:29 ` [PATCH 80/81] drm/i915: rip out dp port enabling cludges^Wchecks Daniel Vetter
2012-07-11 14:38 ` [PATCH 81/81] drm/i915: disable the cpu edp port after the cpu pipe Daniel Vetter
2012-07-15 13:13 ` [PATCH 00/81] modeset rework Chris Wilson
2012-07-15 14:57   ` Daniel Vetter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.