diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_hdmi.c | 8 |
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); |