All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paulo Zanoni <przanoni@gmail.com>
To: Ben Widawsky <ben@bwidawsk.net>
Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: Re: [PATCH 4/7] drm/i915: extend lpt_enable_clkout_dp
Date: Fri, 19 Jul 2013 12:04:46 -0300	[thread overview]
Message-ID: <CA+gsUGSOn_ofug=2wCPLtkanODCtpdEvSwU=zCNFLw1fP6diqg@mail.gmail.com> (raw)
In-Reply-To: <20130718224014.GA4418@bwidawsk.net>

2013/7/18 Ben Widawsky <ben@bwidawsk.net>:
> On Fri, Jul 12, 2013 at 02:19:39PM -0300, Paulo Zanoni wrote:
>> From: Paulo Zanoni <paulo.r.zanoni@intel.com>
>>
>> Now it implements 3 different sequences from BSpec and also has
>> support for ULT.
>>
>> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
>> ---
>>  drivers/gpu/drm/i915/i915_reg.h      |  2 ++
>>  drivers/gpu/drm/i915/intel_display.c | 41 +++++++++++++++++++++++++-----------
>>  2 files changed, 31 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
>> index dc3d6a7..be6164f 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -4863,6 +4863,8 @@
>>  #define   SBI_SSCAUXDIV_FINALDIV2SEL(x)              ((x)<<4)
>>  #define  SBI_DBUFF0                          0x2a00
>>  #define   SBI_DBUFF0_ENABLE                  (1<<0)
>> +#define  SBI_GEN0                            0x1f00
>> +#define   SBI_GEN0_ENABLE                    (1<<0)
>
> bikeshed: I wouldn't haved bothered defining SBI_GEN0_ENABLE

Our docs have changed considerably since I originally wrote this
patch. They have joined both registers and a single definition makes
sense now. I also just noticed the docs say 0 is Enable and 1 is
Disable, even though the documentation for the Sequences suggests that
1 enables stuff and 0 disables stuff :(


>
>>
>>  /* LPT PIXCLK_GATE */
>>  #define PIXCLK_GATE                  0xC6020
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index f4c5263..5f3b636 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -5258,12 +5258,20 @@ static void lpt_program_fdi_mphy(struct drm_i915_private *dev_priv)
>>       intel_sbi_write(dev_priv, 0x21EC, tmp, SBI_MPHY);
>>  }
>>
>> -/* Sequence to enable CLKOUT_DP for FDI usage and configure PCH FDI I/O. */
>> -static void lpt_enable_clkout_dp(struct drm_device *dev)
>> +/* Implements 3 different sequences from BSpec chapter "Display iCLK
>> + * Programming" based on the parameters passed:
>> + * - Sequence to enable CLKOUT_DP
>> + * - Sequence to enable CLKOUT_DP without spread
>> + * - Sequence to enable CLKOUT_DP for FDI usage and configure PCH FDI I/O
>> + */
>> +static void lpt_enable_clkout_dp(struct drm_device *dev, bool with_spread,
>> +                              bool with_fdi)
>>  {
>>       struct drm_i915_private *dev_priv = dev->dev_private;
>>       uint32_t tmp;
>>
>> +     WARN(with_fdi && !with_spread, "FDI requires downspread\n");
>> +
>
> WARN_ON(with_fdi && IS_ULT(dev))?

Yeah, but I noticed I'm using IS_ULT checks where I should be checking
for LPT-LP.


> Should we proceed after the WARN, or break out early?

Either way we'll end up with possibly broken PCH clocks.... I'll try
to adjust the arguments to something sane and print the warn.


>
>>       mutex_lock(&dev_priv->dpio_lock);
>>
>>       tmp = intel_sbi_read(dev_priv, SBI_SSCCTL, SBI_ICLK);
>> @@ -5273,17 +5281,26 @@ static void lpt_enable_clkout_dp(struct drm_device *dev)
>>
>>       udelay(24);
>>
>> -     tmp = intel_sbi_read(dev_priv, SBI_SSCCTL, SBI_ICLK);
>> -     tmp &= ~SBI_SSCCTL_PATHALT;
>> -     intel_sbi_write(dev_priv, SBI_SSCCTL, tmp, SBI_ICLK);
>> +     if (with_spread) {
>> +             tmp = intel_sbi_read(dev_priv, SBI_SSCCTL, SBI_ICLK);
>> +             tmp &= ~SBI_SSCCTL_PATHALT;
>> +             intel_sbi_write(dev_priv, SBI_SSCCTL, tmp, SBI_ICLK);
>>
>> -     lpt_reset_fdi_mphy(dev_priv);
>> -     lpt_program_fdi_mphy(dev_priv);
>> +             if (with_fdi) {
>> +                     lpt_reset_fdi_mphy(dev_priv);
>> +                     lpt_program_fdi_mphy(dev_priv);
>> +             }
>> +     }
>>
>> -     /* ULT uses SBI_GEN0, but ULT doesn't have VGA, so we don't care. */
>> -     tmp = intel_sbi_read(dev_priv, SBI_DBUFF0, SBI_ICLK);
>> -     tmp |= SBI_DBUFF0_ENABLE;
>> -     intel_sbi_write(dev_priv, SBI_DBUFF0, tmp, SBI_ICLK);
>> +     if (IS_ULT(dev)) {
>> +             tmp = intel_sbi_read(dev_priv, SBI_GEN0, SBI_ICLK);
>> +             tmp |= SBI_GEN0_ENABLE;
>> +             intel_sbi_write(dev_priv, SBI_GEN0, tmp, SBI_ICLK);
>> +     } else {
>> +             tmp = intel_sbi_read(dev_priv, SBI_DBUFF0, SBI_ICLK);
>> +             tmp |= SBI_DBUFF0_ENABLE;
>> +             intel_sbi_write(dev_priv, SBI_DBUFF0, tmp, SBI_ICLK);
>> +     }
>>
>>       mutex_unlock(&dev_priv->dpio_lock);
>>  }
>> @@ -5305,7 +5322,7 @@ static void lpt_init_pch_refclk(struct drm_device *dev)
>>       if (!has_vga)
>>               return;
>>
>> -     lpt_enable_clkout_dp(dev);
>> +     lpt_enable_clkout_dp(dev, true, true);
>>  }
>>
>>  /*
>> --
>> 1.8.1.2
> --
> Ben Widawsky, Intel Open Source Technology Center



-- 
Paulo Zanoni

  reply	other threads:[~2013-07-19 15:04 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-12 17:19 [PATCH 0/7] HSW/LPT clocking code additional sequences Paulo Zanoni
2013-07-12 17:19 ` [PATCH 1/7] drm/i915: remove SDV support from lpt_pch_init_refclk Paulo Zanoni
2013-07-13  5:11   ` Ben Widawsky
2013-07-12 17:19 ` [PATCH 2/7] drm/i915: extract FDI mPHY functions from lpt_init_pch_refclk Paulo Zanoni
2013-07-18 21:51   ` Paulo Zanoni
2013-07-12 17:19 ` [PATCH 3/7] drm/i915: extract lpt_enable_clkout_dp " Paulo Zanoni
2013-07-19  6:54   ` Daniel Vetter
2013-07-12 17:19 ` [PATCH 4/7] drm/i915: extend lpt_enable_clkout_dp Paulo Zanoni
2013-07-18 22:40   ` Ben Widawsky
2013-07-19 15:04     ` Paulo Zanoni [this message]
2013-07-19 21:53       ` [PATCH 1/5] " Paulo Zanoni
2013-07-12 17:19 ` [PATCH 5/7] drm/i915: disable CLKOUT_DP when it's not needed Paulo Zanoni
2013-07-12 18:23   ` Daniel Vetter
2013-07-12 18:24     ` Paulo Zanoni
2013-07-18 22:54   ` Ben Widawsky
2013-07-19 21:54     ` [PATCH 2/5] " Paulo Zanoni
2013-07-12 17:19 ` [PATCH 6/7] drm/i915: add functions to disable and restore LCPLL Paulo Zanoni
2013-07-18 21:53   ` Paulo Zanoni
2013-07-18 23:26   ` Ben Widawsky
2013-07-18 23:33     ` Ben Widawsky
2013-07-19 16:57       ` Paulo Zanoni
2013-07-19 18:22     ` Paulo Zanoni
2013-07-19 21:56       ` [PATCH 3/5] " Paulo Zanoni
2013-07-19 21:58         ` [PATCH 5/5] drm/i915: add HAS_LP_PCH check Paulo Zanoni
2013-07-22 17:10           ` Ben Widawsky
2013-07-22 22:44             ` Paulo Zanoni
2013-07-12 17:19 ` [PATCH 7/7] drm/i915: add some assertions to hsw_disable_lcpll Paulo Zanoni
2013-07-18 23:32   ` Ben Widawsky
2013-07-19 18:42     ` Paulo Zanoni
2013-07-18 23:33 ` [PATCH 0/7] HSW/LPT clocking code additional sequences Ben Widawsky

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='CA+gsUGSOn_ofug=2wCPLtkanODCtpdEvSwU=zCNFLw1fP6diqg@mail.gmail.com' \
    --to=przanoni@gmail.com \
    --cc=ben@bwidawsk.net \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@intel.com \
    /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.