From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: Intel Graphics Development <intel-gfx@lists.freedesktop.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Subject: [PATCH 00/81] modeset rework
Date: Wed, 11 Jul 2012 16:27:43 +0200 [thread overview]
Message-ID: <1342016944-23395-1-git-send-email-daniel.vetter@ffwll.ch> (raw)
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
next reply other threads:[~2012-07-11 15:35 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-11 14:27 Daniel Vetter [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1342016944-23395-1-git-send-email-daniel.vetter@ffwll.ch \
--to=daniel.vetter@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.