From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Imre Deak <imre.deak@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 13/21] drm/i915: Rename skl_vco_freq to cdclk_pll.vco
Date: Thu, 19 May 2016 19:21:27 +0300 [thread overview]
Message-ID: <20160519162127.GK4329@intel.com> (raw)
In-Reply-To: <1463674637.12342.47.camel@intel.com>
On Thu, May 19, 2016 at 07:17:17PM +0300, Imre Deak wrote:
> On pe, 2016-05-13 at 23:41 +0300, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > We'll want to store the cdclk PLL (whatever PLL that is in reality) vco
> > frequency somewhere on other platforms too, so let's rename the
> > skl_vco_freq to cdclk_pll.vco, and let's store it in kHz instead of MHz
> > to match most of the other clocks.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/i915/i915_drv.h | 5 +++-
> > drivers/gpu/drm/i915/intel_display.c | 51 ++++++++++++++++++------------------
> > drivers/gpu/drm/i915/intel_dp.c | 4 +--
> > 3 files changed, 31 insertions(+), 29 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> > index 46a22732088e..8da787cd2227 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.h
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -1820,7 +1820,6 @@ struct drm_i915_private {
> > int num_fence_regs; /* 8 on pre-965, 16 otherwise */
> >
> > unsigned int fsb_freq, mem_freq, is_ddr3;
> > - unsigned int skl_vco_freq;
> > unsigned int skl_preferred_vco_freq;
> > unsigned int cdclk_freq, max_cdclk_freq, atomic_cdclk_freq;
> > unsigned int max_dotclk_freq;
> > @@ -1828,6 +1827,10 @@ struct drm_i915_private {
> > unsigned int hpll_freq;
> > unsigned int czclk_freq;
> >
> > + struct {
> > + unsigned int vco;
> > + } cdclk_pll;
> > +
> > /**
> > * wq - Driver workqueue for GEM.
> > *
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index c0dbff37e2c3..8bde3ae34869 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -5276,7 +5276,7 @@ static void intel_update_max_cdclk(struct drm_device *dev)
> > int max_cdclk, vco;
> >
> > vco = dev_priv->skl_preferred_vco_freq;
> > - WARN_ON(vco != 8100 && vco != 8640);
> > + WARN_ON(vco != 8100000 && vco != 8640000);
> >
> > /*
> > * Use the lower (vco 8640) cdclk values as a
> > @@ -5335,8 +5335,8 @@ static void intel_update_cdclk(struct drm_device *dev)
> > dev_priv->cdclk_freq = dev_priv->display.get_display_clock_speed(dev);
> >
> > if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv))
> > - DRM_DEBUG_DRIVER("Current CD clock rate: %d kHz, VCO: %d MHz\n",
> > - dev_priv->cdclk_freq, dev_priv->skl_vco_freq);
> > + DRM_DEBUG_DRIVER("Current CD clock rate: %d kHz, VCO: %d kHz\n",
> > + dev_priv->cdclk_freq, dev_priv->cdclk_pll.vco);
> > else
> > DRM_DEBUG_DRIVER("Current CD clock rate: %d kHz\n",
> > dev_priv->cdclk_freq);
> > @@ -5516,7 +5516,7 @@ void broxton_uninit_cdclk(struct drm_i915_private *dev_priv)
> >
> > static int skl_calc_cdclk(int max_pixclk, int vco)
> > {
> > - if (vco == 8640) {
> > + if (vco == 8640000) {
> > if (max_pixclk > 540000)
> > return 617143;
> > else if (max_pixclk > 432000)
> > @@ -5526,7 +5526,6 @@ static int skl_calc_cdclk(int max_pixclk, int vco)
> > else
> > return 308571;
> > } else {
> > - /* VCO 8100 */
> > if (max_pixclk > 540000)
> > return 675000;
> > else if (max_pixclk > 450000)
> > @@ -5545,7 +5544,7 @@ skl_dpll0_update(struct drm_i915_private *dev_priv)
> >
> > val = I915_READ(LCPLL1_CTL);
> > if ((val & LCPLL_PLL_ENABLE) == 0) {
> > - dev_priv->skl_vco_freq = 0;
> > + dev_priv->cdclk_pll.vco = 0;
> > return;
> > }
> >
> > @@ -5563,15 +5562,15 @@ skl_dpll0_update(struct drm_i915_private *dev_priv)
> > case DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_1350, SKL_DPLL0):
> > case DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_1620, SKL_DPLL0):
> > case DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_2700, SKL_DPLL0):
> > - dev_priv->skl_vco_freq = 8100;
> > + dev_priv->cdclk_pll.vco = 8100000;
> > break;
> > case DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_1080, SKL_DPLL0):
> > case DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_2160, SKL_DPLL0):
> > - dev_priv->skl_vco_freq = 8640;
> > + dev_priv->cdclk_pll.vco = 8640000;
> > break;
> > default:
> > MISSING_CASE(val & DPLL_CTRL1_LINK_RATE_MASK(SKL_DPLL0));
> > - dev_priv->skl_vco_freq = 0;
> > + dev_priv->cdclk_pll.vco = 0;
> > break;
> > }
> > }
> > @@ -5592,7 +5591,7 @@ skl_dpll0_enable(struct drm_i915_private *dev_priv, int vco)
> > int min_cdclk = skl_calc_cdclk(0, vco);
> > u32 val;
> >
> > - WARN_ON(vco != 8100 && vco != 8640);
> > + WARN_ON(vco != 8100000 && vco != 8640000);
> >
> > /* select the minimum CDCLK before enabling DPLL 0 */
> > val = CDCLK_FREQ_337_308 | skl_cdclk_decimal(min_cdclk);
> > @@ -5613,7 +5612,7 @@ skl_dpll0_enable(struct drm_i915_private *dev_priv, int vco)
> > val &= ~(DPLL_CTRL1_HDMI_MODE(SKL_DPLL0) | DPLL_CTRL1_SSC(SKL_DPLL0) |
> > DPLL_CTRL1_LINK_RATE_MASK(SKL_DPLL0));
> > val |= DPLL_CTRL1_OVERRIDE(SKL_DPLL0);
> > - if (vco == 8640)
> > + if (vco == 8640000)
> > val |= DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_1080,
> > SKL_DPLL0);
> > else
> > @@ -5628,7 +5627,7 @@ skl_dpll0_enable(struct drm_i915_private *dev_priv, int vco)
> > if (wait_for(I915_READ(LCPLL1_CTL) & LCPLL_PLL_LOCK, 5))
> > DRM_ERROR("DPLL0 not locked\n");
> >
> > - dev_priv->skl_vco_freq = vco;
> > + dev_priv->cdclk_pll.vco = vco;
> >
> > /* We'll want to keep using the current vco from now on. */
> > skl_set_preferred_cdclk_vco(dev_priv, vco);
> > @@ -5641,7 +5640,7 @@ skl_dpll0_disable(struct drm_i915_private *dev_priv)
> > if (wait_for(!(I915_READ(LCPLL1_CTL) & LCPLL_PLL_LOCK), 1))
> > DRM_ERROR("Couldn't disable DPLL0\n");
> >
> > - dev_priv->skl_vco_freq = 0;
> > + dev_priv->cdclk_pll.vco = 0;
> > }
> >
> > static bool skl_cdclk_pcu_ready(struct drm_i915_private *dev_priv)
> > @@ -5678,7 +5677,7 @@ static void skl_set_cdclk(struct drm_i915_private *dev_priv, int cdclk, int vco)
> >
> > WARN_ON((cdclk == 24000) != (vco == 0));
> >
> > - DRM_DEBUG_DRIVER("Changing CDCLK to %d kHz (VCO %d MHz)\n", cdclk, vco);
> > + DRM_DEBUG_DRIVER("Changing CDCLK to %d kHz (VCO %d kHz)\n", cdclk, vco);
> >
> > if (!skl_cdclk_wait_for_pcu_ready(dev_priv)) {
> > DRM_ERROR("failed to inform PCU about cdclk change\n");
> > @@ -5709,11 +5708,11 @@ static void skl_set_cdclk(struct drm_i915_private *dev_priv, int cdclk, int vco)
> > break;
> > }
> >
> > - if (dev_priv->skl_vco_freq != 0 &&
> > - dev_priv->skl_vco_freq != vco)
> > + if (dev_priv->cdclk_pll.vco != 0 &&
> > + dev_priv->cdclk_pll.vco != vco)
> > skl_dpll0_disable(dev_priv);
> >
> > - if (dev_priv->skl_vco_freq != vco)
> > + if (dev_priv->cdclk_pll.vco != vco)
> > skl_dpll0_enable(dev_priv, vco);
> >
> > I915_WRITE(CDCLK_CTL, freq_select | skl_cdclk_decimal(cdclk));
> > @@ -5740,20 +5739,20 @@ void skl_init_cdclk(struct drm_i915_private *dev_priv)
> >
> > skl_sanitize_cdclk(dev_priv);
> >
> > - if (dev_priv->cdclk_freq != 0 && dev_priv->skl_vco_freq != 0) {
> > + if (dev_priv->cdclk_freq > 0 && dev_priv->cdclk_pll.vco > 0) {
>
> Looks unrelated, could've been part of patch 10/21. In any case:
I think I had some notion of making these signed, but in the end I
didn't, as far as I remember :) So this change can be just dropped.
> Reviewed-by: Imre Deak <imre.deak@intel.com>
>
> > /*
> > * Use the current vco as out initial
> > * guess as to what the preferred vco is.
> > */
> > if (dev_priv->skl_preferred_vco_freq == 0)
> > skl_set_preferred_cdclk_vco(dev_priv,
> > - dev_priv->skl_vco_freq);
> > + dev_priv->cdclk_pll.vco);
> > return;
> > }
> >
> > vco = dev_priv->skl_preferred_vco_freq;
> > if (vco == 0)
> > - vco = 8100;
> > + vco = 8100000;
> > cdclk = skl_calc_cdclk(0, vco);
> >
> > skl_set_cdclk(dev_priv, cdclk, vco);
> > @@ -5803,7 +5802,7 @@ sanitize:
> > /* force cdclk programming */
> > dev_priv->cdclk_freq = 0;
> > /* force full PLL disable + enable */
> > - dev_priv->skl_vco_freq = -1;
> > + dev_priv->cdclk_pll.vco = -1;
> > }
> >
> > /* Adjust CDclk dividers to allow high res or save power if possible */
> > @@ -6646,12 +6645,12 @@ static int skylake_get_display_clock_speed(struct drm_device *dev)
> >
> > skl_dpll0_update(dev_priv);
> >
> > - if (dev_priv->skl_vco_freq == 0)
> > + if (dev_priv->cdclk_pll.vco == 0)
> > return 24000; /* 24MHz is the cd freq with NSSC ref */
> >
> > cdctl = I915_READ(CDCLK_CTL);
> >
> > - if (dev_priv->skl_vco_freq == 8640) {
> > + if (dev_priv->cdclk_pll.vco == 8640000) {
> > switch (cdctl & CDCLK_FREQ_SEL_MASK) {
> > case CDCLK_FREQ_450_432:
> > return 432000;
> > @@ -13369,7 +13368,7 @@ static int intel_modeset_checks(struct drm_atomic_state *state)
> > */
> > if (dev_priv->display.modeset_calc_cdclk) {
> > if (!intel_state->cdclk_pll_vco)
> > - intel_state->cdclk_pll_vco = dev_priv->skl_vco_freq;
> > + intel_state->cdclk_pll_vco = dev_priv->cdclk_pll.vco;
> > if (!intel_state->cdclk_pll_vco)
> > intel_state->cdclk_pll_vco = dev_priv->skl_preferred_vco_freq;
> >
> > @@ -13378,7 +13377,7 @@ static int intel_modeset_checks(struct drm_atomic_state *state)
> > return ret;
> >
> > if (intel_state->dev_cdclk != dev_priv->cdclk_freq ||
> > - intel_state->cdclk_pll_vco != dev_priv->skl_vco_freq)
> > + intel_state->cdclk_pll_vco != dev_priv->cdclk_pll.vco)
> > ret = intel_modeset_all_pipes(state);
> >
> > if (ret < 0)
> > @@ -13720,7 +13719,7 @@ static int intel_atomic_commit(struct drm_device *dev,
> >
> > if (dev_priv->display.modeset_commit_cdclk &&
> > (intel_state->dev_cdclk != dev_priv->cdclk_freq ||
> > - intel_state->cdclk_pll_vco != dev_priv->skl_vco_freq))
> > + intel_state->cdclk_pll_vco != dev_priv->cdclk_pll.vco))
> > dev_priv->display.modeset_commit_cdclk(state);
> >
> > intel_modeset_verify_disabled(dev);
> > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> > index 908c6f0f7feb..5f9a03651649 100644
> > --- a/drivers/gpu/drm/i915/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > @@ -1588,10 +1588,10 @@ found:
> > switch (pipe_config->port_clock / 2) {
> > case 108000:
> > case 216000:
> > - vco = 8640;
> > + vco = 8640000;
> > break;
> > default:
> > - vco = 8100;
> > + vco = 8100000;
> > break;
> > }
> >
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-05-19 16:21 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-13 20:41 [PATCH 00/21] drm/i915: SKL/KBL/BXT cdclk stuff ville.syrjala
2016-05-13 20:41 ` [PATCH 01/21] drm/i915: Fix BXT min_pixclk after state readout ville.syrjala
2016-05-17 18:09 ` Imre Deak
2016-05-17 18:21 ` Ville Syrjälä
2016-05-17 18:24 ` Imre Deak
2016-05-13 20:41 ` [PATCH 02/21] drm/i915/skl: SKL CDCLK change on modeset tracking VCO ville.syrjala
2016-05-19 9:08 ` Imre Deak
2016-05-19 9:18 ` Ville Syrjälä
2016-05-13 20:41 ` [PATCH 03/21] drm/i915: Move the SKL DPLL0 VCO computation into intel_dp_compute_config() ville.syrjala
2016-05-19 11:57 ` Imre Deak
2016-05-13 20:41 ` [PATCH 04/21] drm/i915: Extract skl_calc_cdclk() ville.syrjala
2016-05-19 12:02 ` Imre Deak
2016-05-13 20:41 ` [PATCH 05/21] drm/i915: Actually read out DPLL0 vco on skl from hardware ville.syrjala
2016-05-19 12:38 ` Imre Deak
2016-05-13 20:41 ` [PATCH 06/21] drm/i915: Report the current DPLL0 vco on SKL/KBL ville.syrjala
2016-05-19 12:40 ` Imre Deak
2016-05-13 20:41 ` [PATCH 07/21] drm/i915: Allow enable/disable of DPLL0 around cdclk changes on SKL ville.syrjala
2016-05-19 13:04 ` Imre Deak
2016-05-19 13:18 ` Ville Syrjälä
2016-05-19 13:39 ` Imre Deak
2016-05-13 20:41 ` [PATCH 08/21] drm/i915: Keep track of preferred cdclk vco frequency " ville.syrjala
2016-05-19 14:25 ` Imre Deak
2016-05-13 20:41 ` [PATCH 09/21] drm/i915: Beef up skl_sanitize_cdclk() a bit ville.syrjala
2016-05-19 14:30 ` Imre Deak
2016-05-13 20:41 ` [PATCH 10/21] drm/i915: Unify SKL cdclk init paths ville.syrjala
2016-05-19 15:43 ` Imre Deak
2016-05-23 18:20 ` Ville Syrjälä
2016-05-13 20:41 ` [PATCH 11/21] drm/i915: Move SKL+ DBUF enable/disable to display core init/uninit ville.syrjala
2016-05-19 15:48 ` Imre Deak
2016-05-23 18:20 ` Ville Syrjälä
2016-05-13 20:41 ` [PATCH 12/21] drm/i915: Make 308 and 671 MHz cdclks more accurate on SKL ville.syrjala
2016-05-19 16:03 ` Imre Deak
2016-05-13 20:41 ` [PATCH 13/21] drm/i915: Rename skl_vco_freq to cdclk_pll.vco ville.syrjala
2016-05-19 16:17 ` Imre Deak
2016-05-19 16:21 ` Ville Syrjälä [this message]
2016-05-13 20:41 ` [PATCH 14/21] drm/i915: Store cdclk PLL reference clock under dev_priv ville.syrjala
2016-05-19 17:00 ` Imre Deak
2016-05-13 20:41 ` [PATCH 15/21] drm/i915: Extract bxt DE PLL enable/disable from broxton_set_cdclk() ville.syrjala
2016-05-19 17:04 ` Imre Deak
2016-05-13 20:41 ` [PATCH 16/21] drm/i915: Store BXT DE PLL vco and ref clocks in dev_priv ville.syrjala
2016-05-19 18:43 ` Imre Deak
2016-05-13 20:41 ` [PATCH 17/21] drm/i915: Update cached cdclk state from broxton_init_cdclk() ville.syrjala
2016-05-19 18:46 ` Imre Deak
2016-05-13 20:41 ` [PATCH 18/21] drm/i915: Rewrite broxton_get_display_clock_speed() in terms of the DE PLL vco/refclk ville.syrjala
2016-05-19 19:05 ` Imre Deak
2016-05-13 20:41 ` [PATCH 19/21] drm/i915: Make bxt_set_cdclk() operate in terms of the current vs target DE PLL vco ville.syrjala
2016-05-19 19:40 ` Imre Deak
2016-05-13 20:41 ` [PATCH 20/21] drm/i915: Replace bxt_verify_cdclk_state() with a more generic cdclk check ville.syrjala
2016-05-19 19:41 ` Imre Deak
2016-05-13 20:41 ` [PATCH 21/21] drm/i915: Set BXT cdclk to minimum initially ville.syrjala
2016-05-19 19:45 ` Imre Deak
2016-05-14 5:25 ` ✗ Ro.CI.BAT: failure for drm/i915: SKL/KBL/BXT cdclk stuff Patchwork
2016-05-23 17:25 ` Ville Syrjälä
2016-05-16 13:59 ` [PATCH 22/21] drm/i915: Assert the dbuf is enabled when disabling DC5/6 ville.syrjala
2016-05-19 19:49 ` Imre Deak
2016-05-23 18:21 ` Ville Syrjälä
2016-05-23 18:21 ` [PATCH 00/21] drm/i915: SKL/KBL/BXT cdclk stuff Ville Syrjälä
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=20160519162127.GK4329@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=imre.deak@intel.com \
--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.