From: Mika Kuoppala <mika.kuoppala@linux.intel.com>
To: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 3/4] drm/i915: Make sure hardware uses the correct swing margin/deemph bits on chv
Date: Thu, 02 Oct 2014 16:53:40 +0300 [thread overview]
Message-ID: <87d2aad1cr.fsf@gaia.fi.intel.com> (raw)
In-Reply-To: <1408362166-5856-4-git-send-email-ville.syrjala@linux.intel.com>
ville.syrjala@linux.intel.com writes:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The register can house two different swing marging/deemph settings at
> once. However only one gets used based on some other bits. Make sure we
> set those bits correctly to make the hardware use the settings we
> provided.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
> ---
> drivers/gpu/drm/i915/i915_reg.h | 19 +++++++++++++++++++
> drivers/gpu/drm/i915/intel_dp.c | 14 ++++++++++++++
> drivers/gpu/drm/i915/intel_hdmi.c | 14 ++++++++++++++
> 3 files changed, 47 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 2df946d..b8e8d33 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -824,12 +824,31 @@ enum punit_power_well {
>
> #define _VLV_PCS_DW9_CH0 0x8224
> #define _VLV_PCS_DW9_CH1 0x8424
> +#define DPIO_PCS_TX2MARGIN_MASK (0x7<<13)
> +#define DPIO_PCS_TX2MARGIN_000 (0<<13)
> +#define DPIO_PCS_TX2MARGIN_101 (1<<13)
> +#define DPIO_PCS_TX1MARGIN_MASK (0x7<<10)
> +#define DPIO_PCS_TX1MARGIN_000 (0<<10)
> +#define DPIO_PCS_TX1MARGIN_101 (1<<10)
> #define VLV_PCS_DW9(ch) _PORT(ch, _VLV_PCS_DW9_CH0, _VLV_PCS_DW9_CH1)
>
> +#define _VLV_PCS01_DW9_CH0 0x224
> +#define _VLV_PCS23_DW9_CH0 0x424
> +#define _VLV_PCS01_DW9_CH1 0x2624
> +#define _VLV_PCS23_DW9_CH1 0x2824
> +#define VLV_PCS01_DW9(ch) _PORT(ch, _VLV_PCS01_DW9_CH0, _VLV_PCS01_DW9_CH1)
> +#define VLV_PCS23_DW9(ch) _PORT(ch, _VLV_PCS23_DW9_CH0, _VLV_PCS23_DW9_CH1)
> +
> #define _CHV_PCS_DW10_CH0 0x8228
> #define _CHV_PCS_DW10_CH1 0x8428
> #define DPIO_PCS_SWING_CALC_TX0_TX2 (1<<30)
> #define DPIO_PCS_SWING_CALC_TX1_TX3 (1<<31)
> +#define DPIO_PCS_TX2DEEMP_MASK (0xf<<24)
> +#define DPIO_PCS_TX2DEEMP_9P5 (0<<24)
> +#define DPIO_PCS_TX2DEEMP_6P0 (2<<24)
> +#define DPIO_PCS_TX1DEEMP_MASK (0xf<<16)
> +#define DPIO_PCS_TX1DEEMP_9P5 (0<<16)
> +#define DPIO_PCS_TX1DEEMP_6P0 (2<<16)
> #define CHV_PCS_DW10(ch) _PORT(ch, _CHV_PCS_DW10_CH0, _CHV_PCS_DW10_CH1)
>
> #define _VLV_PCS01_DW10_CH0 0x0228
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index e5ada4f..f8e4578 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -2632,12 +2632,26 @@ static uint32_t intel_chv_signal_levels(struct intel_dp *intel_dp)
> /* Clear calc init */
> val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW10(ch));
> val &= ~(DPIO_PCS_SWING_CALC_TX0_TX2 | DPIO_PCS_SWING_CALC_TX1_TX3);
> + val &= ~(DPIO_PCS_TX1DEEMP_MASK | DPIO_PCS_TX2DEEMP_MASK);
> + val |= DPIO_PCS_TX1DEEMP_9P5 | DPIO_PCS_TX2DEEMP_9P5;
> vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW10(ch), val);
>
> val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW10(ch));
> val &= ~(DPIO_PCS_SWING_CALC_TX0_TX2 | DPIO_PCS_SWING_CALC_TX1_TX3);
> + val &= ~(DPIO_PCS_TX1DEEMP_MASK | DPIO_PCS_TX2DEEMP_MASK);
> + val |= DPIO_PCS_TX1DEEMP_9P5 | DPIO_PCS_TX2DEEMP_9P5;
> vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW10(ch), val);
>
> + val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW9(ch));
> + val &= ~(DPIO_PCS_TX1MARGIN_MASK | DPIO_PCS_TX2MARGIN_MASK);
> + val |= DPIO_PCS_TX1MARGIN_000 | DPIO_PCS_TX2MARGIN_000;
> + vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW9(ch), val);
> +
> + val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW9(ch));
> + val &= ~(DPIO_PCS_TX1MARGIN_MASK | DPIO_PCS_TX2MARGIN_MASK);
> + val |= DPIO_PCS_TX1MARGIN_000 | DPIO_PCS_TX2MARGIN_000;
> + vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW9(ch), val);
> +
> /* Program swing deemph */
> for (i = 0; i < 4; i++) {
> val = vlv_dpio_read(dev_priv, pipe, CHV_TX_DW4(ch, i));
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 9169786..f3bf0c7 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -1414,12 +1414,26 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder)
> /* Clear calc init */
> val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW10(ch));
> val &= ~(DPIO_PCS_SWING_CALC_TX0_TX2 | DPIO_PCS_SWING_CALC_TX1_TX3);
> + val &= ~(DPIO_PCS_TX1DEEMP_MASK | DPIO_PCS_TX2DEEMP_MASK);
> + val |= DPIO_PCS_TX1DEEMP_9P5 | DPIO_PCS_TX2DEEMP_9P5;
> vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW10(ch), val);
>
> val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW10(ch));
> val &= ~(DPIO_PCS_SWING_CALC_TX0_TX2 | DPIO_PCS_SWING_CALC_TX1_TX3);
> + val &= ~(DPIO_PCS_TX1DEEMP_MASK | DPIO_PCS_TX2DEEMP_MASK);
> + val |= DPIO_PCS_TX1DEEMP_9P5 | DPIO_PCS_TX2DEEMP_9P5;
> vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW10(ch), val);
>
> + val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW9(ch));
> + val &= ~(DPIO_PCS_TX1MARGIN_MASK | DPIO_PCS_TX2MARGIN_MASK);
> + val |= DPIO_PCS_TX1MARGIN_000 | DPIO_PCS_TX2MARGIN_000;
> + vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW9(ch), val);
> +
> + val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW9(ch));
> + val &= ~(DPIO_PCS_TX1MARGIN_MASK | DPIO_PCS_TX2MARGIN_MASK);
> + val |= DPIO_PCS_TX1MARGIN_000 | DPIO_PCS_TX2MARGIN_000;
> + vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW9(ch), val);
> +
> /* FIXME: Program the support xxx V-dB */
> /* Use 800mV-0dB */
> for (i = 0; i < 4; i++) {
> --
> 1.8.5.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2014-10-02 13:53 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-18 11:42 [PATCH 0/4] drm/i915: A few CHV stragglers ville.syrjala
2014-08-18 11:42 ` [PATCH 1/4] drm/i915: Warn about odd rps values on CHV ville.syrjala
2014-08-28 16:06 ` Deepak S
2014-08-18 11:42 ` [PATCH v2 2/4] drm/i915: Populate mem_freq in init_gt_powerwave() ville.syrjala
2014-08-28 16:09 ` Deepak S
2014-08-18 11:42 ` [PATCH 3/4] drm/i915: Make sure hardware uses the correct swing margin/deemph bits on chv ville.syrjala
2014-10-02 13:53 ` Mika Kuoppala [this message]
2014-08-18 11:42 ` [PATCH v2 4/4] drm/i915: Clear TX FIFO reset master override " ville.syrjala
2014-10-02 14:33 ` Mika Kuoppala
2014-10-03 8:21 ` 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=87d2aad1cr.fsf@gaia.fi.intel.com \
--to=mika.kuoppala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=ville.syrjala@linux.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox