From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: Enable pixel replicated modes on BDW and HSW.
Date: Thu, 25 Sep 2014 07:11:11 +0300 [thread overview]
Message-ID: <20140925041111.GA22630@intel.com> (raw)
In-Reply-To: <20140924194218.GU15734@phenom.ffwll.local>
On Wed, Sep 24, 2014 at 09:42:18PM +0200, Daniel Vetter wrote:
> On Wed, Sep 24, 2014 at 08:44:42AM -0700, Clint Taylor wrote:
> > On 09/24/2014 01:51 AM, Daniel Vetter wrote:
> > >On Tue, Sep 23, 2014 at 11:06:56AM -0700, clinton.a.taylor@intel.com wrote:
> > >>From: Clint Taylor <clinton.a.taylor@intel.com>
> > >>
> > >>Haswell and later silicon has added a new pixel replication register
> > >>to the pipe timings for each transcoder. Now in addition to the
> > >>DPLL_A_MD register for the pixel clock double, we also need to write to
> > >>the TRANS_MULT_n (0x6002c) register to double the pixel data. Writing
> > >>to the DPLL only double the pixel clock.
> > >>
> > >>Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
> > >>---
> > >> drivers/gpu/drm/i915/i915_reg.h | 3 +++
> > >> drivers/gpu/drm/i915/intel_display.c | 6 +++++-
> > >> 2 files changed, 8 insertions(+), 1 deletion(-)
> > >>
> > >>diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > >>index 15c0eaa..7c078d9 100644
> > >>--- a/drivers/gpu/drm/i915/i915_reg.h
> > >>+++ b/drivers/gpu/drm/i915/i915_reg.h
> > >>@@ -2431,6 +2431,7 @@ enum punit_power_well {
> > >> #define _PIPEASRC 0x6001c
> > >> #define _BCLRPAT_A 0x60020
> > >> #define _VSYNCSHIFT_A 0x60028
> > >>+#define _MULTIPLY_A 0x6002c
> > >>
> > >> /* Pipe B timing regs */
> > >> #define _HTOTAL_B 0x61000
> > >>@@ -2442,6 +2443,7 @@ enum punit_power_well {
> > >> #define _PIPEBSRC 0x6101c
> > >> #define _BCLRPAT_B 0x61020
> > >> #define _VSYNCSHIFT_B 0x61028
> > >>+#define _MULTIPLY_B 0x6102c
> > >>
> > >> #define TRANSCODER_A_OFFSET 0x60000
> > >> #define TRANSCODER_B_OFFSET 0x61000
> > >>@@ -2462,6 +2464,7 @@ enum punit_power_well {
> > >> #define BCLRPAT(trans) _TRANSCODER2(trans, _BCLRPAT_A)
> > >> #define VSYNCSHIFT(trans) _TRANSCODER2(trans, _VSYNCSHIFT_A)
> > >> #define PIPESRC(trans) _TRANSCODER2(trans, _PIPEASRC)
> > >>+#define MULTIPLY(trans) _TRANSCODER2(trans, _MULTIPLY_A)
> > >
> > >MULTIPLY is a bit generic and doesn't even match Bspec lingo. I'd just go
> > >with PIPE_MULTI instead to match Bspec and give it a nice PIPE_ prefix.
> > >>
> > >> /* HSW+ eDP PSR registers */
> > >> #define EDP_PSR_BASE(dev) (IS_HASWELL(dev) ? 0x64800 : 0x6f800)
> > >>diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > >>index c092ff4..e58fcde 100644
> > >>--- a/drivers/gpu/drm/i915/intel_display.c
> > >>+++ b/drivers/gpu/drm/i915/intel_display.c
> > >>@@ -4152,6 +4152,9 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
> > >>
> > >> intel_set_pipe_timings(intel_crtc);
> > >>
> > >>+ I915_WRITE(MULTIPLY(intel_crtc->config.cpu_transcoder),
> > >
> > >This register is per-pipe, so needs to be indexed with intel_crtc->pipe.
> > >Same below.
> > >
> > The MULTIPLY Macro calls the _TRANSCODER2 MACRO which already indexes the
> > register based on intel_crtc->pipe. This should be all that's required.
>
> I don't see where it indexes with intel_crtc->pipe ...
>
> But it doesn't matter since the register is clearly in the transcoder
> block, and the reason why Bspec says is per-pipe is that the edp
> transcoder doesn't have it. So on second consideration I guess we can keep
> this part as-is then.
? If it doesn't exist for EDP we can't just go passing cpu_transcoder
to it.
BDW BSpec seems to claim that it really is a transcoder register and not
a pipe register (just looking at the offset isn't enoguh to tell that
as PIPESRC shows). So in that sense using cpu_transcoder is more
appropriate, but if we do that we must not write the register when
cpu_transcoder == EDP. I suppose that even makes sense since it's only
valid for HDMI/DVI and that's not supported on the EDP transcoder.
But someone really must verify that it really is a transcoder and not a
pipe register and that it has no effect on transcoder EDP.
--
Ville Syrjälä
Intel OTC
next prev parent reply other threads:[~2014-09-25 4:11 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-23 18:06 [PATCH] drm/i915: Enable pixel replicated modes on BDW and HSW clinton.a.taylor
2014-09-24 8:19 ` Jani Nikula
2014-09-24 8:47 ` Daniel Vetter
2014-09-24 8:51 ` Daniel Vetter
2014-09-24 15:44 ` Clint Taylor
2014-09-24 19:42 ` Daniel Vetter
2014-09-25 4:11 ` Ville Syrjälä [this message]
2014-09-29 12:36 ` Daniel Vetter
2014-09-24 23:51 ` [PATCH v2] " clinton.a.taylor
2014-09-25 17:03 ` [PATCH v3] " clinton.a.taylor
2014-09-26 16:38 ` Ville Syrjälä
2014-09-26 22:04 ` Clint Taylor
2014-09-29 12:27 ` Ville Syrjälä
2014-09-29 17:02 ` Runyan, Arthur J
2014-09-30 12:12 ` Ville Syrjälä
2014-09-30 17:30 ` [PATCH v4] " clinton.a.taylor
2014-09-30 18:22 ` Ville Syrjälä
2014-10-01 8:03 ` 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=20140925041111.GA22630@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=Intel-gfx@lists.freedesktop.org \
--cc=daniel@ffwll.ch \
/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.