From: Ben Widawsky <ben@bwidawsk.net>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 04/26] drm/i915: ValleyView watermark support
Date: Fri, 23 Mar 2012 19:46:32 -0700 [thread overview]
Message-ID: <20120323194632.769b7f8e@bwidawsk.net> (raw)
In-Reply-To: <20120323095103.GA4087@phenom.ffwll.local>
On Fri, 23 Mar 2012 10:51:03 +0100
Daniel Vetter <daniel@ffwll.ch> wrote:
> On Thu, Mar 22, 2012 at 08:29:30PM -0700, Ben Widawsky wrote:
> > On Thu, Mar 22, 2012 at 02:38:46PM -0700, Jesse Barnes wrote:
> > > Add support for ValleyView watermark handling. It's like Cantiga
> > > with a few small differences (big FIFO mode and different WM
> > > limits).
> > >
> > > Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> > > ---
> > > drivers/gpu/drm/i915/i915_reg.h | 9 +++++
> > > drivers/gpu/drm/i915/intel_display.c | 65
> > > ++++++++++++++++++++++++++++++++++ 2 files changed, 74
> > > insertions(+), 0 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/i915_reg.h
> > > b/drivers/gpu/drm/i915/i915_reg.h index f3609f2..0540099 100644
> > > --- a/drivers/gpu/drm/i915/i915_reg.h
> > > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > > @@ -1043,6 +1043,12 @@
> > > #define RAMCLK_GATE_D 0x6210 /*
> > > CRL only */ #define DEUC
> > > 0x6214 /* CRL only */
> > > +#define FW_BLC_SELF_VLV 0x6500
> > > +#define FW_CSPWRDWNEN (1<<15)
> > > +#define MI_ARB_VLV 0x6504
> > > +#define DISP_TRICKLE_FEED_DIS (1<<2)
> > > +#define CZCLK_CDCLK_FREQ_RATIO_VLV 0x6508
> > > +
> > > /*
> > > * Palette regs
> > > */
> >
> > Seems like the bottom 3 of these aren't used anywhere.
>
> I honestly don't mind a few extra #defines, as long as someone has
> bothered to cross check them with bspec (to avoid another MI_WTF). At
> least if they're sounding somewhat relevant.
> -Daniel
Okay, seriously - fix mutt so it actually responds To: me.
The reason I'm only acking most of the patches thus far is I can't find
the register definitions. Jesse said some exist in some doc, and
others were just told to him by the design team. OTOH, anything with my
r-b has been crossed checked with the bspec.
Also, since we got into the discussion RIGHT BEFORE the vlv patches
about how messy our code is, I was being extra diligent about cutting
out stuff we don't use, since the odds of someone doing it after the
fact are slim to none. Furthermore, these defines are so terribly
named, the odds of someone creating another set of defines for the same
purpose are greater than 0.
~Ben
>
> >
> > > @@ -2495,6 +2501,7 @@
> > > #define I915_FIFO_LINE_SIZE 64
> > > #define I830_FIFO_LINE_SIZE 32
> > >
> > > +#define VALLEYVIEW_FIFO_SIZE 255
> > > #define G4X_FIFO_SIZE 127
> > > #define I965_FIFO_SIZE 512
> > > #define I945_FIFO_SIZE 127
> > > @@ -2502,6 +2509,7 @@
> > > #define I855GM_FIFO_SIZE 127 /* In cachelines */
> > > #define I830_FIFO_SIZE 95
> > >
> > > +#define VALLEYVIEW_MAX_WM 0xff
> > > #define G4X_MAX_WM 0x3f
> > > #define I915_MAX_WM 0x3f
> > >
> > > @@ -2516,6 +2524,7 @@
> > > #define PINEVIEW_CURSOR_DFT_WM 0
> > > #define PINEVIEW_CURSOR_GUARD_WM 5
> > >
> > > +#define VALLEYVIEW_CURSOR_MAX_WM 64
> > > #define I965_CURSOR_FIFO 64
> > > #define I965_CURSOR_MAX_WM 32
> > > #define I965_CURSOR_DFT_WM 8
> > > diff --git a/drivers/gpu/drm/i915/intel_display.c
> > > b/drivers/gpu/drm/i915/intel_display.c index de1ba19..daa8853
> > > 100644 --- a/drivers/gpu/drm/i915/intel_display.c
> > > +++ b/drivers/gpu/drm/i915/intel_display.c
> > > @@ -3606,6 +3606,20 @@ static const struct intel_watermark_params
> > > g4x_cursor_wm_info = { 2,
> > > G4X_FIFO_LINE_SIZE,
> > > };
> > > +static const struct intel_watermark_params valleyview_wm_info = {
> > > + VALLEYVIEW_FIFO_SIZE,
> > > + VALLEYVIEW_MAX_WM,
> > > + VALLEYVIEW_MAX_WM,
> > > + 2,
> > > + G4X_FIFO_LINE_SIZE,
> > > +};
> > > +static const struct intel_watermark_params
> > > valleyview_cursor_wm_info = {
> > > + I965_CURSOR_FIFO,
> > > + VALLEYVIEW_CURSOR_MAX_WM,
> > > + I965_CURSOR_DFT_WM,
> > > + 2,
> > > + G4X_FIFO_LINE_SIZE,
> > > +};
> > > static const struct intel_watermark_params i965_cursor_wm_info =
> > > { I965_CURSOR_FIFO,
> > > I965_CURSOR_MAX_WM,
> > > @@ -4130,6 +4144,55 @@ static bool g4x_compute_srwm(struct
> > > drm_device *dev,
> > > #define single_plane_enabled(mask) is_power_of_2(mask)
> > >
> > > +static void valleyview_update_wm(struct drm_device *dev)
> > > +{
> > > + static const int sr_latency_ns = 12000;
> > > + struct drm_i915_private *dev_priv = dev->dev_private;
> > > + int planea_wm, planeb_wm, cursora_wm, cursorb_wm;
> > > + int plane_sr, cursor_sr;
> > > + unsigned int enabled = 0;
> > > +
> > > + if (g4x_compute_wm0(dev, 0,
> > > + &valleyview_wm_info, latency_ns,
> > > + &valleyview_cursor_wm_info,
> > > latency_ns,
> > > + &planea_wm, &cursora_wm))
> > > + enabled |= 1;
> > > +
> > > + if (g4x_compute_wm0(dev, 1,
> > > + &valleyview_wm_info, latency_ns,
> > > + &valleyview_cursor_wm_info,
> > > latency_ns,
> > > + &planeb_wm, &cursorb_wm))
> > > + enabled |= 2;
> > > +
> > > + plane_sr = cursor_sr = 0;
> > > + if (single_plane_enabled(enabled) &&
> > > + g4x_compute_srwm(dev, ffs(enabled) - 1,
> > > + sr_latency_ns,
> > > + &valleyview_wm_info,
> > > + &valleyview_cursor_wm_info,
> > > + &plane_sr, &cursor_sr))
> > > + I915_WRITE(FW_BLC_SELF_VLV, FW_CSPWRDWNEN);
> > > + else
> > > + I915_WRITE(FW_BLC_SELF_VLV,
> > > + I915_READ(FW_BLC_SELF_VLV) &
> > > ~FW_CSPWRDWNEN); +
> > > + DRM_DEBUG_KMS("Setting FIFO watermarks - A: plane=%d,
> > > cursor=%d, B: plane=%d, cursor=%d, SR: plane=%d, cursor=%d\n",
> > > + planea_wm, cursora_wm,
> > > + planeb_wm, cursorb_wm,
> > > + plane_sr, cursor_sr);
> > > +
> > > + I915_WRITE(DSPFW1,
> > > + (plane_sr << DSPFW_SR_SHIFT) |
> > > + (cursorb_wm << DSPFW_CURSORB_SHIFT) |
> > > + (planeb_wm << DSPFW_PLANEB_SHIFT) |
> > > + planea_wm);
> > > + I915_WRITE(DSPFW2,
> > > + (I915_READ(DSPFW2) & DSPFW_CURSORA_MASK) |
> > > + (cursora_wm << DSPFW_CURSORA_SHIFT));
> > > + I915_WRITE(DSPFW3,
> > > + (I915_READ(DSPFW3) | (cursor_sr <<
> > > DSPFW_CURSOR_SR_SHIFT))); +}
> > > +
> > > static void g4x_update_wm(struct drm_device *dev)
> > > {
> > > static const int sr_latency_ns = 12000;
> > > @@ -8917,6 +8980,8 @@ static void intel_init_display(struct
> > > drm_device *dev) dev_priv->display.write_eld = ironlake_write_eld;
> > > } else
> > > dev_priv->display.update_wm = NULL;
> > > + } else if (IS_VALLEYVIEW(dev)) {
> > > + dev_priv->display.update_wm =
> > > valleyview_update_wm; } else if (IS_PINEVIEW(dev)) {
> > > if (!intel_get_cxsr_latency(IS_PINEVIEW_G(dev),
> > > dev_priv->is_ddr3,
> >
> > Aside from the extraneous #defines
> > Acked-by: Ben Widawsky <ben@bwidawsk.net>
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
next prev parent reply other threads:[~2012-03-24 2:46 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-22 21:38 [RFCv2] ValleyView support Jesse Barnes
2012-03-22 21:38 ` [PATCH 01/26] drm/i915: move NEEDS_FORCE_WAKE to i915_drv.c Jesse Barnes
2012-03-22 22:20 ` Ben Widawsky
2012-03-23 22:46 ` Daniel Vetter
2012-03-22 21:38 ` [PATCH 02/26] drm/i915: re-order GT IIR bit definitions Jesse Barnes
2012-03-22 22:25 ` Ben Widawsky
2012-03-23 22:46 ` Daniel Vetter
2012-03-22 21:38 ` [PATCH 03/26] drm/i915: add ValleyView driver structs and IS_VALLEYVIEW macro Jesse Barnes
2012-03-22 22:31 ` Ben Widawsky
2012-03-22 21:38 ` [PATCH 04/26] drm/i915: ValleyView watermark support Jesse Barnes
2012-03-23 3:29 ` Ben Widawsky
2012-03-23 9:51 ` Daniel Vetter
2012-03-24 2:46 ` Ben Widawsky [this message]
2012-03-22 21:38 ` [PATCH 05/26] drm/i915: PLL defines for VLV Jesse Barnes
2012-03-23 3:35 ` Ben Widawsky
2012-03-22 21:38 ` [PATCH 06/26] drm/i915: interrupt bit definitions " Jesse Barnes
2012-03-22 21:38 ` [PATCH 07/26] drm/i915: add ValleyView clock gating init Jesse Barnes
2012-03-22 23:25 ` Ben Widawsky
2012-03-22 21:38 ` [PATCH 08/26] drm/i915: add DPIO read/write functions for ValleyView Jesse Barnes
2012-03-23 4:03 ` Ben Widawsky
2012-03-23 17:29 ` Eugeni Dodonov
2012-03-22 21:38 ` [PATCH 09/26] drm/i915: split PLL update code out of i9xx_crtc_mode_set Jesse Barnes
2012-03-23 4:16 ` Ben Widawsky
2012-03-23 23:00 ` Daniel Vetter
2012-03-22 21:38 ` [PATCH 10/26] drm/i915: split LVDS " Jesse Barnes
2012-03-23 23:04 ` Daniel Vetter
2012-03-22 21:38 ` [PATCH 11/26] drm/i915: ValleyView mode setting limits and PLL functions Jesse Barnes
2012-03-22 21:38 ` [PATCH 12/26] drm/i915: program drain latency regs on ValleyView Jesse Barnes
2012-03-26 1:50 ` Ben Widawsky
2012-03-22 21:38 ` [PATCH 13/26] drm/i915: Enable DP panel power sequencing for ValleyView Jesse Barnes
2012-03-22 21:38 ` [PATCH 14/26] drm/i915: Enable HDMI on ValleyView Jesse Barnes
2012-03-22 21:38 ` [PATCH 15/26] agp/intel: map more registers for use by the GTT code Jesse Barnes
2012-03-26 2:05 ` Ben Widawsky
2012-03-26 7:06 ` Daniel Vetter
2012-03-22 21:38 ` [PATCH 16/26] agp/intel: add ValleyView AGP driver Jesse Barnes
2012-03-26 2:16 ` Ben Widawsky
2012-03-26 7:08 ` Daniel Vetter
2012-03-26 18:17 ` Ben Widawsky
2012-03-22 21:38 ` [PATCH 17/26] agp/intel: bind " Jesse Barnes
2012-03-22 21:39 ` [PATCH 18/26] drm/i915: add ValleyView specific CRT detect function Jesse Barnes
2012-03-23 17:11 ` Eugeni Dodonov
2012-03-22 21:39 ` [PATCH 19/26] drm/i915: add ValleyView specific force wake get/put functions Jesse Barnes
2012-03-23 17:20 ` Eugeni Dodonov
2012-03-26 18:20 ` Ben Widawsky
2012-03-22 21:39 ` [PATCH 20/26] drm/i915: ValleyView has limited cacheability Jesse Barnes
2012-03-22 23:31 ` Jesse Barnes
2012-03-26 18:34 ` Ben Widawsky
2012-03-26 18:49 ` Daniel Vetter
2012-03-28 17:43 ` Jesse Barnes
2012-03-22 21:39 ` [PATCH 21/26] drm/i915: ValleyView IRQ support Jesse Barnes
2012-03-22 21:39 ` [PATCH 22/26] drm/i915: display regs are at 0x180000 on ValleyView Jesse Barnes
2012-03-22 21:39 ` [PATCH 23/26] drm/i915: check for disabled interrupts " Jesse Barnes
2012-03-22 21:39 ` [PATCH 24/26] drm/i915: add HDMI and DP port enumeration " Jesse Barnes
2012-03-22 21:39 ` [PATCH 25/26] drm/i915: disable turbo on ValleyView for now Jesse Barnes
2012-03-23 17:04 ` Eugeni Dodonov
2012-03-22 21:39 ` [PATCH 26/26] drm/i915: bind driver to ValleyView chipsets Jesse Barnes
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=20120323194632.769b7f8e@bwidawsk.net \
--to=ben@bwidawsk.net \
--cc=daniel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox