From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH 44/62] drm/i915/bdw: add BDW DDI buf translations for eDP Date: Mon, 4 Nov 2013 16:09:50 -0800 Message-ID: <20131105000949.GB9345@bwidawsk.net> References: <1383451680-11173-1-git-send-email-benjamin.widawsky@intel.com> <1383451680-11173-45-git-send-email-benjamin.widawsky@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail.bwidawsk.net (bwidawsk.net [166.78.191.112]) by gabe.freedesktop.org (Postfix) with ESMTP id 74E31FACC2 for ; Mon, 4 Nov 2013 16:09:55 -0800 (PST) Content-Disposition: inline In-Reply-To: <1383451680-11173-45-git-send-email-benjamin.widawsky@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: Ben Widawsky Cc: Intel GFX , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org On Sat, Nov 02, 2013 at 09:07:42PM -0700, Ben Widawsky wrote: > From: Paulo Zanoni > > Broadwell has different DDI buffer translations for eDP and DP, so add > support for the missing eDP and keep Haswell the same. > > A future patch addresses the suggestion from Art to check for eDP on > port D and use the eDP values there, too. > > Reviewed-by: Art Runyan > Signed-off-by: Paulo Zanoni > --- > drivers/gpu/drm/i915/intel_ddi.c | 38 +++++++++++++++++++++++++++++++++----- > 1 file changed, 33 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c > index 4baf3cd..3868ed9 100644 > --- a/drivers/gpu/drm/i915/intel_ddi.c > +++ b/drivers/gpu/drm/i915/intel_ddi.c > @@ -72,6 +72,19 @@ static const u32 hsw_ddi_translations_hdmi[] = { > 0x80FFFFFF, 0x00030002, /* 11: 1000 1000 0 */ > }; > > +static const u32 bdw_ddi_translations_edp[] = { > + 0x00FFFFFF, 0x00000012, /* DP parameters */ > + 0x00EBAFFF, 0x00020011, > + 0x00C71FFF, 0x0006000F, > + 0x00FFFFFF, 0x00020011, > + 0x00DB6FFF, 0x0005000F, > + 0x00BEEFFF, 0x000A000C, > + 0x00FFFFFF, 0x0005000F, > + 0x00DB6FFF, 0x000A000C, > + 0x00FFFFFF, 0x000A000C, > + 0x00FFFFFF, 0x00140006 /* HDMI parameters 800mV 0dB*/ > +}; > + > static const u32 bdw_ddi_translations_dp[] = { > 0x00FFFFFF, 0x0007000E, /* DP parameters */ > 0x00D75FFF, 0x000E000A, > @@ -132,26 +145,41 @@ static void intel_prepare_ddi_buffers(struct drm_device *dev, enum port port) > int hdmi_level = dev_priv->vbt.ddi_port_info[port].hdmi_level_shift; > const u32 *ddi_translations_fdi; > const u32 *ddi_translations_dp; > + const u32 *ddi_translations_edp; > const u32 *ddi_translations; > > if (IS_BROADWELL(dev)) { > ddi_translations_fdi = bdw_ddi_translations_fdi; > ddi_translations_dp = bdw_ddi_translations_dp; > + ddi_translations_edp = bdw_ddi_translations_edp; > } else if (IS_HASWELL(dev)) { > ddi_translations_fdi = hsw_ddi_translations_fdi; > ddi_translations_dp = hsw_ddi_translations_dp; > + ddi_translations_edp = hsw_ddi_translations_dp; > } else { > WARN(1, "ddi translation table missing\n"); > + ddi_translations_edp = bdw_ddi_translations_dp; > ddi_translations_fdi = bdw_ddi_translations_fdi; > ddi_translations_dp = bdw_ddi_translations_dp; > } > > - ddi_translations = ((port == PORT_E) ? > - ddi_translations_fdi : > - ddi_translations_dp); > + switch (port) { > + case PORT_A: > + ddi_translations = ddi_translations_edp; > + break; > + case PORT_B: > + case PORT_C: > + case PORT_D: > + ddi_translations = ddi_translations_dp; > + break; > + case PORT_E: > + ddi_translations = ddi_translations_fdi; > + break; > + default: > + BUG(); > + } > > - for (i = 0, reg = DDI_BUF_TRANS(port); > - i < ARRAY_SIZE(hsw_ddi_translations_fdi); i++) { > + for (i=0, reg=DDI_BUF_TRANS(port); i < ARRAY_SIZE(hsw_ddi_translations_fdi); i++) { Daniel, maybe fix up this for checkpatch in merge? I don't care either way. > I915_WRITE(reg, ddi_translations[i]); > reg += 4; > } Reviewed-by: Ben Widawsky -- Ben Widawsky, Intel Open Source Technology Center