aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h1
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c8
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c8
3 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 1ae55fc35e4f..5d1d287f1e38 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -661,6 +661,7 @@ enum punit_power_well {
661 661
662#define _VLV_PCS_DW1_CH0 0x8204 662#define _VLV_PCS_DW1_CH0 0x8204
663#define _VLV_PCS_DW1_CH1 0x8404 663#define _VLV_PCS_DW1_CH1 0x8404
664#define CHV_PCS_REQ_SOFTRESET_EN (1<<23)
664#define DPIO_PCS_CLK_CRI_RXEB_EIOS_EN (1<<22) 665#define DPIO_PCS_CLK_CRI_RXEB_EIOS_EN (1<<22)
665#define DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN (1<<21) 666#define DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN (1<<21)
666#define DPIO_PCS_CLK_DATAWIDTH_SHIFT (6) 667#define DPIO_PCS_CLK_DATAWIDTH_SHIFT (6)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 7235ffb58a18..37638f8e2265 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1882,6 +1882,10 @@ static void chv_post_disable_dp(struct intel_encoder *encoder)
1882 mutex_lock(&dev_priv->dpio_lock); 1882 mutex_lock(&dev_priv->dpio_lock);
1883 1883
1884 /* Propagate soft reset to data lane reset */ 1884 /* Propagate soft reset to data lane reset */
1885 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW1(ch));
1886 val |= CHV_PCS_REQ_SOFTRESET_EN;
1887 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW1(ch), val);
1888
1885 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW0(ch)); 1889 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW0(ch));
1886 val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET); 1890 val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
1887 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(ch), val); 1891 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(ch), val);
@@ -2023,6 +2027,10 @@ static void chv_pre_enable_dp(struct intel_encoder *encoder)
2023 mutex_lock(&dev_priv->dpio_lock); 2027 mutex_lock(&dev_priv->dpio_lock);
2024 2028
2025 /* Deassert soft data lane reset*/ 2029 /* Deassert soft data lane reset*/
2030 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW1(ch));
2031 val |= CHV_PCS_REQ_SOFTRESET_EN;
2032 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW1(ch), val);
2033
2026 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW0(ch)); 2034 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW0(ch));
2027 val |= (DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET); 2035 val |= (DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
2028 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(ch), val); 2036 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(ch), val);
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 9ea494a2a32e..f66c7a2ebd9a 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1259,6 +1259,10 @@ static void chv_hdmi_post_disable(struct intel_encoder *encoder)
1259 mutex_lock(&dev_priv->dpio_lock); 1259 mutex_lock(&dev_priv->dpio_lock);
1260 1260
1261 /* Propagate soft reset to data lane reset */ 1261 /* Propagate soft reset to data lane reset */
1262 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW1(ch));
1263 val |= CHV_PCS_REQ_SOFTRESET_EN;
1264 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW1(ch), val);
1265
1262 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW0(ch)); 1266 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW0(ch));
1263 val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET); 1267 val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
1264 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(ch), val); 1268 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(ch), val);
@@ -1281,6 +1285,10 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder)
1281 mutex_lock(&dev_priv->dpio_lock); 1285 mutex_lock(&dev_priv->dpio_lock);
1282 1286
1283 /* Deassert soft data lane reset*/ 1287 /* Deassert soft data lane reset*/
1288 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW1(ch));
1289 val |= CHV_PCS_REQ_SOFTRESET_EN;
1290 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW1(ch), val);
1291
1284 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW0(ch)); 1292 val = vlv_dpio_read(dev_priv, pipe, VLV_PCS_DW0(ch));
1285 val |= (DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET); 1293 val |= (DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
1286 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(ch), val); 1294 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(ch), val);