Patch "drm/i915: Fix iboost setting for DDI with 4 lanes on SKL" has been added to the 4.7-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
drm/i915: Fix iboost setting for DDI with 4 lanes on SKL
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-i915-fix-iboost-setting-for-ddi-with-4-lanes-on-skl.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
5728e0de741a3581e9900c5cbee3a51425daf211Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <[email protected]>
Date: Tue, 12 Jul 2016 15:59:28 +0300
Subject: drm/i915: Fix iboost setting for DDI with 4 lanes on SKL
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: Ville Syrjälä <[email protected]>
commit 5728e0de741a3581e9900c5cbee3a51425daf211 upstream.
Bspec says:
"For DDIA with x4 capability (DDI_BUF_CTL DDIA Lane Capability Control =
DDIA x4), the I_boost value has to be programmed in both tx_blnclegsctl_0 and tx_blnclegsctl_4."
Currently we only program tx_blnclegsctl_0. Let's do the other one as well.
--- drivers/gpu/drm/i915/i915_reg.h | 1 + drivers/gpu/drm/i915/intel_ddi.c | 36 +++++++++++++++++++++++------------- 2 files changed, 24 insertions(+), 13 deletions(-)
drivers/gpu/drm/i915/i915_reg.h +1 -0
@@ -1522,6 +1522,7 @@ enum skl_disp_power_wells {#define BALANCE_LEG_MASK (port) (7<<(8+3*(port)))/* Balance leg disable bits */ #define BALANCE_LEG_DISABLE_SHIFT 23 +#define BALANCE_LEG_DISABLE (port) (1 << (23 + (port)))/* * Fence registers
drivers/gpu/drm/i915/intel_ddi.c +23 -13
@@ -1371,14 +1371,30 @@ void intel_ddi_disable_pipe_clock(struct TRANS_CLK_SEL_DISABLED); } -static void skl_ddi_set_iboost (struct drm_i915_private *dev_priv, -u32 level,enum port port,int type) +static void _skl_ddi_set_iboost (struct drm_i915_private *dev_priv, +enum port port,uint8_t iboost) { +u32 tmp; + + tmp =I915_READ (DISPIO_CR_TX_BMU_CR0 ); + tmp &= ~(BALANCE_LEG_MASK (port) |BALANCE_LEG_DISABLE (port)); +if (iboost) + tmp |= iboost <<BALANCE_LEG_SHIFT (port); +else + tmp |=BALANCE_LEG_DISABLE (port); +I915_WRITE (DISPIO_CR_TX_BMU_CR0 , tmp); +} + +static void skl_ddi_set_iboost (struct intel_encoder *encoder,u32 level) +{ +struct intel_digital_port *intel_dig_port =enc_to_dig_port (&encoder->base); +struct drm_i915_private *dev_priv =to_i915 (intel_dig_port->base.base.dev); +enum port port = intel_dig_port->port; +int type = encoder->type;const struct ddi_buf_trans *ddi_translations;uint8_t iboost;uint8_t dp_iboost, hdmi_iboost;int n_entries; -u32 reg;/* VBT may override standard boost values */ dp_iboost = dev_priv->vbt.ddi_port_info[port].dp_boost_level;
@@ -1420,16 +1436,10 @@ static void skl_ddi_set_iboost(struct drreturn ; } - reg =I915_READ (DISPIO_CR_TX_BMU_CR0 ); - reg &= ~BALANCE_LEG_MASK (port); - reg &= ~(1 << (BALANCE_LEG_DISABLE_SHIFT + port)); - -if (iboost) - reg |= iboost <<BALANCE_LEG_SHIFT (port); -else - reg |=1 << (BALANCE_LEG_DISABLE_SHIFT + port); +_skl_ddi_set_iboost (dev_priv, port, iboost); -I915_WRITE (DISPIO_CR_TX_BMU_CR0 , reg); +if (port ==PORT_A && intel_dig_port->max_lanes ==4 ) +_skl_ddi_set_iboost (dev_priv,PORT_E , iboost); } static void bxt_ddi_vswing_sequence(struct drm_i915_private *dev_priv,
@@ -1560,7 +1570,7 @@ uint32_t ddi_signal_levels(struct intel_ level =translate_signal_level (signal_levels);if (IS_SKYLAKE (dev_priv) ||IS_KABYLAKE (dev_priv)) -skl_ddi_set_iboost (dev_priv, level, port, encoder->type); +skl_ddi_set_iboost (encoder, level);else if (IS_BROXTON (dev_priv))bxt_ddi_vswing_sequence (dev_priv, level, port, encoder->type);
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/drm-i915-fix-iboost-setting-for-skl-y-u-dp-ddi-buffer-translation-entry-2.patch queue-4.7/drm-i915-fix-iboost-setting-for-ddi-with-4-lanes-on-skl.patch queue-4.7/drm-i915-vlv-make-intel_crt_reset-per-encoder.patch queue-4.7/drm-i915-program-iboost-settings-for-hdmi-dvi-on-skl.patch queue-4.7/drm-i915-vlv-reset-the-adpa-in-vlv_display_power_well_init.patch queue-4.7/drm-i915-enable-polling-when-we-don-t-have-hpd.patch queue-4.7/drm-i915-vlv-disable-hpd-in-valleyview_crt_detect_hotplug.patch