From: Imre Deak <imre.deak@intel.com>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Jani Nikula <jani.nikula@intel.com>,
Intel Graphics Development <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH] drm/i915: clean up vlv ->pre_pll_enable and pll enable sequence
Date: Thu, 11 Jul 2013 17:11:41 +0300 [thread overview]
Message-ID: <1373551901.12949.14.camel@intelbox> (raw)
In-Reply-To: <1370506973-11989-1-git-send-email-daniel.vetter@ffwll.ch>
[-- Attachment #1.1: Type: text/plain, Size: 4201 bytes --]
On Thu, 2013-06-06 at 10:22 +0200, Daniel Vetter wrote:
> No need to call the ->pre_pll_enable hook twice if we don't enable the
> dpll too early. This should make Jani a bit less grumpy.
>
> v2: Rebase on top of the newly-colored BUG_ONs.
>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/gpu/drm/i915/intel_display.c | 45 +++++++++++++++---------------------
> 1 file changed, 18 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 5e43b9a..6e4d666 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -1268,32 +1268,38 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv,
> assert_pch_hdmi_disabled(dev_priv, pipe, PCH_HDMID);
> }
>
> -static void vlv_enable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
> +static void vlv_enable_pll(struct intel_crtc *crtc)
> {
> - int reg;
> - u32 val;
> + struct drm_device *dev = crtc->base.dev;
> + struct drm_i915_private *dev_priv = dev->dev_private;
> + int reg = DPLL(crtc->pipe);
> + u32 dpll = crtc->config.dpll_hw_state.dpll;
>
> - assert_pipe_disabled(dev_priv, pipe);
> + assert_pipe_disabled(dev_priv, crtc->pipe);
>
> /* No really, not for ILK+ */
> BUG_ON(!IS_VALLEYVIEW(dev_priv->dev));
>
> /* PLL is protected by panel, make sure we can write it */
> if (IS_MOBILE(dev_priv->dev) && !IS_I830(dev_priv->dev))
> - assert_panel_unlocked(dev_priv, pipe);
> + assert_panel_unlocked(dev_priv, crtc->pipe);
> +
> + I915_WRITE(reg, dpll);
> + POSTING_READ(reg);
> + udelay(150);
> +
> + if (wait_for(((I915_READ(reg) & DPLL_LOCK_VLV) == DPLL_LOCK_VLV), 1))
> + DRM_ERROR("DPLL %d failed to lock\n", crtc->pipe);
>
> - reg = DPLL(pipe);
> - val = I915_READ(reg);
> - val |= DPLL_VCO_ENABLE;
>
> /* We do this three times for luck */
> - I915_WRITE(reg, val);
> + I915_WRITE(reg, dpll);
> POSTING_READ(reg);
> udelay(150); /* wait for warmup */
> - I915_WRITE(reg, val);
> + I915_WRITE(reg, dpll);
> POSTING_READ(reg);
> udelay(150); /* wait for warmup */
> - I915_WRITE(reg, val);
> + I915_WRITE(reg, dpll);
> POSTING_READ(reg);
> udelay(150); /* wait for warmup */
> }
> @@ -3561,7 +3567,7 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
> if (encoder->pre_pll_enable)
> encoder->pre_pll_enable(encoder);
>
> - vlv_enable_pll(dev_priv, pipe);
> + vlv_enable_pll(intel_crtc);
>
> for_each_encoder_on_crtc(dev, crtc, encoder)
> if (encoder->pre_enable)
> @@ -4315,7 +4321,6 @@ static void vlv_update_pll(struct intel_crtc *crtc)
> {
> struct drm_device *dev = crtc->base.dev;
> struct drm_i915_private *dev_priv = dev->dev_private;
> - struct intel_encoder *encoder;
> int pipe = crtc->pipe;
> u32 dpll, mdiv;
> u32 bestn, bestm1, bestm2, bestp1, bestp2;
> @@ -4403,10 +4408,6 @@ static void vlv_update_pll(struct intel_crtc *crtc)
>
> vlv_dpio_write(dev_priv, DPIO_PLL_CML(pipe), 0x87871000);
>
> - for_each_encoder_on_crtc(dev, &crtc->base, encoder)
> - if (encoder->pre_pll_enable)
> - encoder->pre_pll_enable(encoder);
> -
> /* Enable DPIO clock input */
> dpll = DPLL_EXT_BUFFER_ENABLE_VLV | DPLL_REFA_CLK_ENABLE_VLV |
> DPLL_VGA_MODE_DIS | DPLL_INTEGRATED_CLOCK_VLV;
> @@ -4416,20 +4417,10 @@ static void vlv_update_pll(struct intel_crtc *crtc)
> dpll |= DPLL_VCO_ENABLE;
> crtc->config.dpll_hw_state.dpll = dpll;
>
> - I915_WRITE(DPLL(pipe), dpll);
> - POSTING_READ(DPLL(pipe));
> - udelay(150);
> -
> - if (wait_for(((I915_READ(DPLL(pipe)) & DPLL_LOCK_VLV) == DPLL_LOCK_VLV), 1))
> - DRM_ERROR("DPLL %d failed to lock\n", pipe);
> -
> dpll_md = (crtc->config.pixel_multiplier - 1)
> << DPLL_MD_UDI_MULTIPLIER_SHIFT;
> crtc->config.dpll_hw_state.dpll_md = dpll_md;
>
> - I915_WRITE(DPLL_MD(pipe), dpll_md);
> - POSTING_READ(DPLL_MD(pipe));
This piece was not added to vlv_enable_pll. Other than this patches
29-31 look ok, so on those:
Reviewed-by: Imre Deak <imre.deak@intel.com>
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2013-07-11 14:12 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-05 11:34 [PATCH 00/31] shared pch display pll rework Daniel Vetter
2013-06-05 11:34 ` [PATCH 01/31] drm/i915: fix up pch pll handling in ->mode_set Daniel Vetter
2013-06-05 11:34 ` [PATCH 02/31] drm/i915: conditionally disable pch resources in ilk_crtc_disable Daniel Vetter
2013-06-05 11:34 ` [PATCH 03/31] drm/i915: lock down pch pll accouting some more Daniel Vetter
2013-06-07 16:32 ` Ville Syrjälä
2013-06-07 20:03 ` Daniel Vetter
2013-06-07 20:46 ` Ville Syrjälä
2013-06-07 21:13 ` Daniel Vetter
2013-06-10 10:11 ` Ville Syrjälä
2013-06-10 14:34 ` Daniel Vetter
2013-06-10 14:47 ` Ville Syrjälä
2013-06-10 15:28 ` [PATCH] " Daniel Vetter
2013-06-07 21:09 ` Daniel Vetter
2013-06-05 11:34 ` [PATCH 04/31] drm/i915: s/pch_pll/shared_dpll/ Daniel Vetter
2013-06-05 11:34 ` [PATCH 05/31] drm/i915: switch crtc->shared_dpll from a pointer to an enum Daniel Vetter
2013-06-07 16:48 ` Ville Syrjälä
2013-06-07 21:10 ` [PATCH] " Daniel Vetter
2013-06-05 11:34 ` [PATCH 06/31] drm/i915: move shared_dpll into the pipe config Daniel Vetter
2013-06-07 17:03 ` Ville Syrjälä
2013-06-07 21:10 ` [PATCH] " Daniel Vetter
2013-06-05 11:34 ` [PATCH 07/31] drm/i915: refactor PCH_DPLL_SEL #defines Daniel Vetter
2013-06-05 11:34 ` [PATCH 08/31] drm/i915: hw state readout for shared pch plls Daniel Vetter
2013-06-07 17:23 ` Ville Syrjälä
2013-06-07 20:11 ` Daniel Vetter
2013-06-07 21:11 ` [PATCH] " Daniel Vetter
2013-06-05 11:34 ` [PATCH 09/31] drm/i915: consolidate ->num_shared_dplls assignement Daniel Vetter
2013-06-05 11:34 ` [PATCH 10/31] drm/i915: metadata for shared dplls Daniel Vetter
2013-06-05 11:34 ` [PATCH 11/31] drm/i915: scrap register address storage Daniel Vetter
2013-06-05 11:34 ` [PATCH 12/31] drm/i915: enable/disable hooks for shared dplls Daniel Vetter
2013-06-05 11:34 ` [PATCH 13/31] drm/i915: drop crtc checking from assert_shared_dpll Daniel Vetter
2013-06-05 11:34 ` [PATCH 14/31] drm/i915: display pll hw state readout and checking Daniel Vetter
2013-06-12 13:31 ` Damien Lespiau
2013-06-12 13:39 ` Ville Syrjälä
2013-06-12 13:49 ` Damien Lespiau
2013-06-05 11:34 ` [PATCH 15/31] drm/i915: extract readout_hw_state from setup_hw_state Daniel Vetter
2013-06-12 13:32 ` Damien Lespiau
2013-06-12 14:26 ` Daniel Vetter
2013-06-05 11:34 ` [PATCH 16/31] drm/i915: split up intel_modeset_check_state Daniel Vetter
2013-06-12 13:33 ` Damien Lespiau
2013-06-05 11:34 ` [PATCH 17/31] drm/i915: WARN on lack of shared dpll Daniel Vetter
2013-06-12 13:38 ` Damien Lespiau
2013-06-05 11:34 ` [PATCH 18/31] drm/i915: hw state readout and cross-checking for shared dplls Daniel Vetter
2013-06-12 15:04 ` Damien Lespiau
2013-06-05 11:34 ` [PATCH 19/31] drm/i915: fix up pch pll enabling for pixel multipliers Daniel Vetter
2013-06-12 15:12 ` Damien Lespiau
2013-06-12 19:34 ` Daniel Vetter
2013-06-05 11:34 ` [PATCH 20/31] drm/i915: simplify the reduced clock handling for pch plls Daniel Vetter
2013-06-13 11:26 ` Damien Lespiau
2013-06-13 11:35 ` Daniel Vetter
2013-06-13 12:32 ` Damien Lespiau
2013-06-13 14:33 ` Daniel Vetter
2013-06-05 11:34 ` [PATCH 21/31] drm/i915: consolidate pch pll enable sequence Daniel Vetter
2013-06-24 14:30 ` Damien Lespiau
2013-06-05 11:34 ` [PATCH 22/31] drm/i915: use sw tracked state to select shared dplls Daniel Vetter
2013-06-12 15:20 ` Damien Lespiau
2013-06-05 11:34 ` [PATCH 23/31] drm/i915: duplicate intel_enable_pll into i9xx and vlv versions Daniel Vetter
2013-06-05 15:12 ` Jani Nikula
2013-06-05 22:52 ` [PATCH] " Daniel Vetter
2013-06-05 11:34 ` [PATCH 24/31] drm/i915: asserts for lvds pre_enable Daniel Vetter
2013-06-13 20:26 ` Imre Deak
2013-06-13 20:46 ` Daniel Vetter
2013-06-14 10:45 ` Imre Deak
2013-06-16 19:42 ` [PATCH] " Daniel Vetter
2013-06-05 11:34 ` [PATCH 25/31] drm/i915: move encoder pre enable hooks togther on ilk+ Daniel Vetter
2013-06-05 11:34 ` [PATCH 26/31] drm/i915: hw state readout for i9xx dplls Daniel Vetter
2013-06-05 11:34 ` [PATCH 27/31] drm/i915: move i9xx dpll enabling into crtc enable function Daniel Vetter
2013-06-05 15:13 ` Jani Nikula
2013-06-06 8:20 ` [PATCH] " Daniel Vetter
2013-06-14 16:02 ` [PATCH 27/31] " Imre Deak
2013-06-16 19:15 ` Daniel Vetter
2013-06-16 19:24 ` [PATCH] " Daniel Vetter
2013-06-05 11:34 ` [PATCH 28/31] drm/i915: s/pre_pll/pre/ on the lvds port " Daniel Vetter
2013-06-15 8:32 ` Imre Deak
2013-06-26 10:02 ` Daniel Vetter
2013-06-05 11:34 ` [PATCH 29/31] drm/i915: clean up vlv ->pre_pll_enable and pll enable sequence Daniel Vetter
2013-06-06 8:22 ` [PATCH] " Daniel Vetter
2013-07-11 14:11 ` Imre Deak [this message]
2013-07-11 20:13 ` Daniel Vetter
2013-07-12 16:27 ` Daniel Vetter
2013-06-05 11:34 ` [PATCH 30/31] drm/i915: Fix up cpt pixel multiplier " Daniel Vetter
2013-06-05 11:34 ` [PATCH 31/31] drm/i915: clear DPLL reg when disabling i9xx dplls Daniel Vetter
2013-06-07 17:46 ` [PATCH 00/31] shared pch display pll rework Ville Syrjälä
2013-06-10 15:57 ` Ville Syrjälä
2013-06-10 18:16 ` 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=1373551901.12949.14.camel@intelbox \
--to=imre.deak@intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).