From: Jesse Barnes <jbarnes@virtuousgeek.org>
To: Imre Deak <imre.deak@intel.com>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 40/49] drm/i915/bxt: add bxt_find_best_dpll
Date: Thu, 19 Mar 2015 13:39:11 -0700 [thread overview]
Message-ID: <550B33EF.5040505@virtuousgeek.org> (raw)
In-Reply-To: <1426585215-8788-41-git-send-email-imre.deak@intel.com>
On 03/17/2015 02:40 AM, Imre Deak wrote:
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> ---
> drivers/gpu/drm/i915/intel_display.c | 32 ++++++++++++++++++++++++++++----
> drivers/gpu/drm/i915/intel_drv.h | 2 ++
> 2 files changed, 30 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 9ca84a2..3606366 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -102,6 +102,7 @@ static void chv_prepare_pll(struct intel_crtc *crtc,
> const struct intel_crtc_state *pipe_config);
> static void intel_begin_crtc_commit(struct drm_crtc *crtc);
> static void intel_finish_crtc_commit(struct drm_crtc *crtc);
> +static int i9xx_get_refclk(struct intel_crtc *crtc, int num_connectors);
>
> static struct intel_encoder *intel_find_encoder(struct intel_connector *connector, int pipe)
> {
> @@ -399,6 +400,18 @@ static const intel_limit_t intel_limits_chv = {
> .p2 = { .p2_slow = 1, .p2_fast = 14 },
> };
>
> +static const intel_limit_t intel_limits_bxt = {
> + /* FIXME: find real dot limits */
> + .dot = { .min = 0, .max = INT_MAX },
> + .vco = { .min = 4800000, .max = 6480000 },
> + .n = { .min = 1, .max = 1 },
> + .m1 = { .min = 2, .max = 2 },
> + /* FIXME: find real m2 limits */
> + .m2 = { .min = 2 << 22, .max = 255 << 22 },
> + .p1 = { .min = 2, .max = 4 },
> + .p2 = { .p2_slow = 1, .p2_fast = 20 },
> +};
> +
> static void vlv_clock(int refclk, intel_clock_t *clock)
> {
> clock->m = clock->m1 * clock->m2;
> @@ -492,7 +505,9 @@ static const intel_limit_t *intel_limit(struct intel_crtc *crtc, int refclk)
> struct drm_device *dev = crtc->base.dev;
> const intel_limit_t *limit;
>
> - if (HAS_PCH_SPLIT(dev))
> + if (IS_BROXTON(dev))
> + limit = &intel_limits_bxt;
> + else if (HAS_PCH_SPLIT(dev))
> limit = intel_ironlake_limit(crtc, refclk);
> else if (IS_G4X(dev)) {
> limit = intel_g4x_limit(crtc);
> @@ -577,11 +592,11 @@ static bool intel_PLL_is_valid(struct drm_device *dev,
> if (clock->m1 < limit->m1.min || limit->m1.max < clock->m1)
> INTELPllInvalid("m1 out of range\n");
>
> - if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev))
> + if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev) && !IS_BROXTON(dev))
> if (clock->m1 <= clock->m2)
> INTELPllInvalid("m1 <= m2\n");
>
> - if (!IS_VALLEYVIEW(dev)) {
> + if (!IS_VALLEYVIEW(dev) && !IS_BROXTON(dev)) {
> if (clock->p < limit->p.min || limit->p.max < clock->p)
> INTELPllInvalid("p out of range\n");
> if (clock->m < limit->m.min || limit->m.max < clock->m)
> @@ -924,6 +939,15 @@ chv_find_best_dpll(const intel_limit_t *limit, struct intel_crtc *crtc,
> return found;
> }
>
> +bool bxt_find_best_dpll(struct intel_crtc *crtc, int target_clock,
> + intel_clock_t *best_clock)
> +{
> + int refclk = i9xx_get_refclk(crtc, 0);
> +
> + return chv_find_best_dpll(intel_limit(crtc, refclk), crtc, target_clock,
> + refclk, NULL, best_clock);
> +}
> +
> bool intel_crtc_active(struct drm_crtc *crtc)
> {
> struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> @@ -5913,7 +5937,7 @@ static int i9xx_get_refclk(struct intel_crtc *crtc, int num_connectors)
> struct drm_i915_private *dev_priv = dev->dev_private;
> int refclk;
>
> - if (IS_VALLEYVIEW(dev)) {
> + if (IS_VALLEYVIEW(dev) || IS_BROXTON(dev)) {
> refclk = 100000;
> } else if (intel_pipe_will_have_type(crtc, INTEL_OUTPUT_LVDS) &&
> intel_panel_use_ssc(dev_priv) && num_connectors < 2) {
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 262314b..56a5cc9 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1033,6 +1033,8 @@ int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n);
> void
> ironlake_check_encoder_dotclock(const struct intel_crtc_state *pipe_config,
> int dotclock);
> +bool bxt_find_best_dpll(struct intel_crtc *crtc, int target_clock,
> + intel_clock_t *best_clock);
> bool intel_crtc_active(struct drm_crtc *crtc);
> void hsw_enable_ips(struct intel_crtc *crtc);
> void hsw_disable_ips(struct intel_crtc *crtc);
>
Do we have a JIRA on getting the final pixel clock and M2 params? If
not, can you create one so we don't forget to add the real limits?
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-03-19 20:39 UTC|newest]
Thread overview: 191+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-17 9:39 [PATCH 00/49] Basic Broxton enabling Imre Deak
2015-03-17 9:39 ` [PATCH 01/49] drm/i915/bxt: Add BXT PCI ids Imre Deak
2015-03-23 9:56 ` Antti Koskipää
2015-03-17 9:39 ` [PATCH 02/49] drm/i915/bxt: BXT FBC enablement Imre Deak
2015-03-17 17:49 ` Rodrigo Vivi
2015-03-25 20:46 ` Imre Deak
2015-03-26 15:35 ` [PATCH 02.1/49] drm/i915: use proper FBC base register on all new platforms Imre Deak
2015-03-30 10:05 ` Antti Koskipää
2015-03-30 10:04 ` [PATCH 02/49] drm/i915/bxt: BXT FBC enablement Antti Koskipää
2015-03-30 10:04 ` Antti Koskipää
2015-03-17 9:39 ` [PATCH 03/49] drm/i915/bxt: Add IS_BROXTON macro Imre Deak
2015-03-23 9:49 ` Sivakumar Thulasimani
2015-03-17 9:39 ` [PATCH 04/49] drm/i915/bxt: Broxton uses the same GMS values as Skylake Imre Deak
2015-03-23 10:23 ` Antti Koskipää
2015-03-17 9:39 ` [PATCH 05/49] drm/i915/bxt: Enable PTE encoding Imre Deak
2015-03-23 10:23 ` Antti Koskipää
2015-03-17 9:39 ` [PATCH 06/49] drm/i915/bxt: Broxton has 3 sprite planes on pipe A/B, 2 on pipe C Imre Deak
2015-03-23 10:29 ` Antti Koskipää
2015-03-31 11:18 ` Daniel Vetter
2015-03-17 9:39 ` [PATCH 07/49] drm/i915/bxt: Add the plane4 related interrupt definitions Imre Deak
2015-03-23 10:28 ` Antti Koskipää
2015-03-17 9:39 ` [PATCH 08/49] drm/i915/bxt: Broxton DDB is 512 blocks Imre Deak
2015-03-23 10:24 ` Antti Koskipää
2015-03-17 9:39 ` [PATCH 09/49] drm/i915/bxt: Broxton raises the maximum number of planes to 4 Imre Deak
2015-03-23 10:24 ` Antti Koskipää
2015-03-17 9:39 ` [PATCH 10/49] drm/i915/bxt: map GTT as uncached Imre Deak
2015-03-17 10:33 ` Daniel Vetter
2015-03-17 12:31 ` Imre Deak
2015-03-17 13:47 ` Daniel Vetter
2015-03-27 11:07 ` [PATCH v2] " Imre Deak
2015-03-30 10:02 ` Antti Koskipää
2015-03-17 9:39 ` [PATCH 11/49] drm/i915/gen9: fix PIPE_CONTROL flush for VS_INVALIDATE Imre Deak
2015-03-17 10:35 ` Daniel Vetter
2015-04-08 12:56 ` Nick Hoath
2015-03-17 9:39 ` [PATCH 12/49] drm/i915/bxt: HardWare WorkAround ring initialisation for Broxton Imre Deak
2015-03-19 16:47 ` Nick Hoath
2015-03-17 9:39 ` [PATCH 13/49] drm/i915/bxt: add bxt_init_clock_gating Imre Deak
2015-03-19 16:50 ` Nick Hoath
2015-03-20 10:17 ` Imre Deak
2015-03-27 12:00 ` [PATCH v2 " Imre Deak
2015-04-08 9:35 ` Nick Hoath
2015-03-17 9:39 ` [PATCH 14/49] drm/i915/bxt: add GEN8_SDEUNIT_CLOCK_GATE_DISABLE workaround Imre Deak
2015-03-17 10:35 ` Daniel Vetter
2015-03-17 13:06 ` Imre Deak
2015-03-20 9:08 ` Nick Hoath
2015-03-20 10:37 ` Imre Deak
2015-03-25 14:53 ` Nick Hoath
2015-03-17 9:39 ` [PATCH 15/49] drm/i915/bxt: add GEN8_HDCUNIT_CLOCK_GATE_DISABLE_HDCREQ workaround Imre Deak
2015-04-08 13:04 ` Nick Hoath
2015-04-08 13:10 ` Imre Deak
2015-04-08 13:38 ` Nick Hoath
2015-04-08 13:45 ` Imre Deak
2015-04-08 14:13 ` Nick Hoath
2015-03-17 9:39 ` [PATCH 16/49] drm/i915/bxt: add WaDisableMaskBasedCammingInRCC workaround Imre Deak
2015-03-20 9:05 ` Nick Hoath
2015-03-20 10:25 ` Imre Deak
2015-03-25 14:52 ` Nick Hoath
2015-03-17 9:39 ` [PATCH 17/49] drm/i915/skl: " Imre Deak
2015-03-20 9:07 ` Nick Hoath
2015-03-20 10:33 ` Imre Deak
2015-04-08 13:40 ` Nick Hoath
2015-03-17 9:39 ` [PATCH 18/49] drm/i915/bxt: add workaround to avoid PTE corruption Imre Deak
2015-03-17 10:36 ` Daniel Vetter
2015-03-17 13:30 ` Imre Deak
2015-04-08 13:11 ` Nick Hoath
2015-03-17 9:39 ` [PATCH 19/49] drm/i915/bxt: don't use unsupported port detection Imre Deak
2015-03-25 16:07 ` Jani Nikula
2015-03-17 9:39 ` [PATCH 20/49] drm/i915/bxt: Add change to support gmbus pin pair for BXT Imre Deak
2015-03-25 16:45 ` Jani Nikula
2015-03-17 9:39 ` [PATCH 21/49] drm/i915/bxt: WARN in case BXT unused gmbus ports are accessed Imre Deak
2015-03-25 16:49 ` Jani Nikula
2015-03-17 9:39 ` [PATCH 22/49] drm/i915/bxt: Avoid registering unused gmbus ports as i2c adapter Imre Deak
2015-03-26 17:14 ` Jani Nikula
2015-03-26 22:24 ` Jani Nikula
2015-03-17 9:39 ` [PATCH 23/49] drm/i915/bxt: Increase DDI buf idle timeout Imre Deak
2015-03-17 10:39 ` Daniel Vetter
2015-03-27 12:19 ` [PATCH v2 " Imre Deak
2015-04-08 9:20 ` Jani Nikula
2015-04-08 12:00 ` Daniel Vetter
2015-03-17 9:39 ` [PATCH 24/49] drm/i915/bxt: DDI Hotplug interrupt setup Imre Deak
2015-03-17 10:48 ` Daniel Vetter
2015-03-17 15:39 ` Imre Deak
2015-03-27 12:54 ` [PATCH v6 " Imre Deak
2015-04-08 10:32 ` Jani Nikula
2015-04-10 12:08 ` [PATCH v7 " Imre Deak
2015-04-13 13:41 ` Jani Nikula
2015-03-17 9:39 ` [PATCH 25/49] drm/i915/bxt: Add DDI hpd handler Imre Deak
2015-03-17 10:52 ` Daniel Vetter
2015-03-17 16:03 ` Imre Deak
2015-03-27 15:22 ` [PATCH 25.1/49] drm/i915/bxt: support for HPD long/short status decoding Imre Deak
2015-04-08 10:58 ` Jani Nikula
2015-04-08 11:18 ` Imre Deak
2015-04-08 11:22 ` Jani Nikula
2015-04-08 10:55 ` [PATCH 25/49] drm/i915/bxt: Add DDI hpd handler Jani Nikula
2015-04-10 12:08 ` [PATCH v2 " Imre Deak
2015-04-13 13:45 ` Jani Nikula
2015-03-17 9:39 ` [PATCH 26/49] drm/i915/bxt: Add BXT support in gen8_irq functions Imre Deak
2015-04-08 11:06 ` Jani Nikula
2015-04-10 12:08 ` [PATCH v2 " Imre Deak
2015-04-13 13:51 ` Jani Nikula
2015-04-13 13:58 ` Imre Deak
2015-04-13 14:48 ` [PATCH v3 " Imre Deak
2015-04-14 7:23 ` Jani Nikula
2015-03-17 9:39 ` [PATCH 27/49] drm/i915/bxt: Enable GMBUS IRQ Imre Deak
2015-04-08 11:11 ` Jani Nikula
2015-04-10 12:08 ` [PATCH v4 " Imre Deak
2015-04-13 13:52 ` Jani Nikula
2015-03-17 9:39 ` [PATCH 28/49] drm/i915/bxt: Define BXT power domains Imre Deak
2015-03-19 17:08 ` Ville Syrjälä
2015-03-17 9:39 ` [PATCH 29/49] drm/i915: Rename vlv_cdclk_freq to cdclk_freq Imre Deak
2015-03-17 10:54 ` Daniel Vetter
2015-03-17 13:20 ` Ville Syrjälä
2015-04-15 19:19 ` Ville Syrjälä
2015-03-17 9:39 ` [PATCH 30/49] drm/i915/bxt: add display initialize/uninitialize sequence Imre Deak
2015-03-19 19:55 ` Ville Syrjälä
2015-03-20 14:10 ` Ville Syrjälä
2015-03-20 17:15 ` Imre Deak
2015-04-02 16:32 ` Ville Syrjälä
2015-04-07 14:07 ` Imre Deak
2015-04-15 13:42 ` [PATCH v4 30/49] drm/i915/bxt: add display initialize/uninitialize sequence (CDCLK) Imre Deak
2015-04-15 14:14 ` Ville Syrjälä
2015-04-15 13:42 ` [PATCH 30.1/49] drm/i915/bxt: add display initialize/uninitialize sequence (PHY) Imre Deak
2015-04-15 14:31 ` Ville Syrjälä
2015-03-17 9:39 ` [PATCH 31/49] drm/i915/bxt: add description about the BXT PHYs Imre Deak
2015-03-19 17:30 ` Ville Syrjälä
2015-04-15 13:42 ` [PATCH v2 " Imre Deak
2015-04-15 13:54 ` Ville Syrjälä
2015-03-17 9:39 ` [PATCH 32/49] drm/i915/bxt: Implement enable/disable for Display C9 state Imre Deak
2015-04-12 10:32 ` sagar.a.kamble
2015-04-13 10:09 ` Imre Deak
2015-04-13 10:25 ` Sagar Arun Kamble
2015-04-16 7:19 ` Daniel Vetter
2015-03-17 9:39 ` [PATCH 33/49] drm/i915/bxt: Add DC9 Trigger sequence Imre Deak
2015-03-30 12:19 ` sagar.a.kamble
2015-04-15 14:13 ` [PATCH v4 " Imre Deak
2015-03-17 9:40 ` [PATCH 34/49] drm/i915/bxt: Restrict PORT_CLK_SEL programming below gen9 Imre Deak
2015-04-15 14:15 ` [PATCH v3 " Imre Deak
2015-04-15 18:55 ` Sagar Arun Kamble
2015-03-17 9:40 ` [PATCH 35/49] drm/i915/bxt: fix panel fitter setup in crtc disable/enable Imre Deak
2015-03-17 13:51 ` Daniel Vetter
2015-03-17 14:22 ` Imre Deak
2015-03-18 8:37 ` Daniel Vetter
2015-03-18 10:31 ` Imre Deak
2015-04-12 10:14 ` sagar.a.kamble
2015-04-12 10:19 ` sagar.a.kamble
2015-04-13 9:21 ` Daniel Vetter
2015-04-12 10:22 ` [PATCH 34/49] drm/i915/bxt: Restrict PORT_CLK_SEL programming below gen9 sagar.a.kamble
2015-04-13 13:21 ` Damien Lespiau
2015-04-13 13:30 ` Imre Deak
2015-04-15 14:18 ` [PATCH v2 35/49] drm/i915/bxt: fix panel fitter setup in crtc disable/enable Imre Deak
2015-03-17 9:40 ` [PATCH 36/49] drm/i915/bxt: Define bxt DDI PLLs and implement enable/disable sequence Imre Deak
2015-03-19 20:27 ` Jesse Barnes
2015-03-19 20:33 ` Imre Deak
2015-03-17 9:40 ` [PATCH 37/49] drm/i915: factor out vlv_PLL_is_optimal Imre Deak
2015-03-19 20:31 ` Jesse Barnes
2015-03-17 9:40 ` [PATCH 38/49] drm/i915: check for div-by-zero in vlv_PLL_is_optimal Imre Deak
2015-03-19 20:31 ` Jesse Barnes
2015-03-20 10:00 ` Daniel Vetter
2015-03-17 9:40 ` [PATCH 39/49] drm/i915/chv: use vlv_PLL_is_optimal in chv_find_best_dpll Imre Deak
2015-03-19 20:34 ` Jesse Barnes
2015-03-19 20:55 ` Imre Deak
2015-03-19 20:56 ` Jesse Barnes
2015-03-20 10:02 ` Daniel Vetter
2015-03-17 9:40 ` [PATCH 40/49] drm/i915/bxt: add bxt_find_best_dpll Imre Deak
2015-03-19 20:39 ` Jesse Barnes [this message]
2015-03-17 9:40 ` [PATCH 41/49] drm/i915/bxt: BXT clock divider calculation Imre Deak
2015-03-19 20:46 ` Jesse Barnes
2015-03-17 9:40 ` [PATCH 42/49] drm/i915/bxt: Assign PLL for pipe Imre Deak
2015-03-19 20:48 ` Jesse Barnes
2015-04-16 9:32 ` Daniel Vetter
2015-03-17 9:40 ` [PATCH 43/49] drm/i915/bxt: Determine PLL attached to pipe Imre Deak
2015-03-19 20:48 ` Jesse Barnes
2015-03-17 9:40 ` [PATCH 44/49] drm/i915/bxt: Determine programmed frequency Imre Deak
2015-03-19 20:51 ` Jesse Barnes
2015-03-17 9:40 ` [PATCH 45/49] drm/i915: suppress false PLL state warnings on non-GMCH platforms Imre Deak
2015-03-19 20:53 ` Jesse Barnes
2015-03-19 20:57 ` Imre Deak
2015-03-19 21:19 ` Jesse Barnes
2015-03-17 9:40 ` [PATCH 46/49] drm/i915: Iterate through the initialized DDIs to prepare their buffers Imre Deak
2015-03-23 10:51 ` Sivakumar Thulasimani
2015-03-25 15:04 ` Damien Lespiau
2015-04-24 12:47 ` Ander Conselvan De Oliveira
2015-04-24 15:22 ` Imre Deak
2015-03-17 9:40 ` [PATCH 47/49] drm/i915: Don't write the HDMI buffer translation entry when not needed Imre Deak
2015-03-23 10:57 ` Sivakumar Thulasimani
2015-03-17 9:40 ` [PATCH 48/49] drm/i915/bxt: VSwing programming sequence Imre Deak
2015-03-24 9:19 ` Sivakumar Thulasimani
2015-04-09 17:14 ` Imre Deak
2015-03-17 9:40 ` [PATCH 49/49] drm/i915/bxt: Update max level of vswing Imre Deak
2015-03-17 18:22 ` shuang.he
2015-03-24 10:26 ` Sivakumar Thulasimani
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=550B33EF.5040505@virtuousgeek.org \
--to=jbarnes@virtuousgeek.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox