|
@@ -2330,7 +2330,7 @@ intel_dp_voltage_max(struct intel_dp *intel_dp)
|
|
|
struct drm_device *dev = intel_dp_to_dev(intel_dp);
|
|
|
enum port port = dp_to_dig_port(intel_dp)->port;
|
|
|
|
|
|
- if (IS_VALLEYVIEW(dev) || IS_BROADWELL(dev))
|
|
|
+ if (IS_VALLEYVIEW(dev))
|
|
|
return DP_TRAIN_VOLTAGE_SWING_1200;
|
|
|
else if (IS_GEN7(dev) && port == PORT_A)
|
|
|
return DP_TRAIN_VOLTAGE_SWING_800;
|
|
@@ -2346,18 +2346,7 @@ intel_dp_pre_emphasis_max(struct intel_dp *intel_dp, uint8_t voltage_swing)
|
|
|
struct drm_device *dev = intel_dp_to_dev(intel_dp);
|
|
|
enum port port = dp_to_dig_port(intel_dp)->port;
|
|
|
|
|
|
- if (IS_BROADWELL(dev)) {
|
|
|
- switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) {
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_400:
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_600:
|
|
|
- return DP_TRAIN_PRE_EMPHASIS_6;
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_800:
|
|
|
- return DP_TRAIN_PRE_EMPHASIS_3_5;
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_1200:
|
|
|
- default:
|
|
|
- return DP_TRAIN_PRE_EMPHASIS_0;
|
|
|
- }
|
|
|
- } else if (IS_HASWELL(dev)) {
|
|
|
+ if (IS_HASWELL(dev) || IS_BROADWELL(dev)) {
|
|
|
switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) {
|
|
|
case DP_TRAIN_VOLTAGE_SWING_400:
|
|
|
return DP_TRAIN_PRE_EMPHASIS_9_5;
|
|
@@ -2829,41 +2818,6 @@ intel_hsw_signal_levels(uint8_t train_set)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static uint32_t
|
|
|
-intel_bdw_signal_levels(uint8_t train_set)
|
|
|
-{
|
|
|
- int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK |
|
|
|
- DP_TRAIN_PRE_EMPHASIS_MASK);
|
|
|
- switch (signal_levels) {
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_0:
|
|
|
- return DDI_BUF_EMP_400MV_0DB_BDW; /* Sel0 */
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_3_5:
|
|
|
- return DDI_BUF_EMP_400MV_3_5DB_BDW; /* Sel1 */
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_6:
|
|
|
- return DDI_BUF_EMP_400MV_6DB_BDW; /* Sel2 */
|
|
|
-
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_0:
|
|
|
- return DDI_BUF_EMP_600MV_0DB_BDW; /* Sel3 */
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_3_5:
|
|
|
- return DDI_BUF_EMP_600MV_3_5DB_BDW; /* Sel4 */
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_6:
|
|
|
- return DDI_BUF_EMP_600MV_6DB_BDW; /* Sel5 */
|
|
|
-
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_0:
|
|
|
- return DDI_BUF_EMP_800MV_0DB_BDW; /* Sel6 */
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_3_5:
|
|
|
- return DDI_BUF_EMP_800MV_3_5DB_BDW; /* Sel7 */
|
|
|
-
|
|
|
- case DP_TRAIN_VOLTAGE_SWING_1200 | DP_TRAIN_PRE_EMPHASIS_0:
|
|
|
- return DDI_BUF_EMP_1200MV_0DB_BDW; /* Sel8 */
|
|
|
-
|
|
|
- default:
|
|
|
- DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level:"
|
|
|
- "0x%x\n", signal_levels);
|
|
|
- return DDI_BUF_EMP_400MV_0DB_BDW; /* Sel0 */
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
/* Properly updates "DP" with the correct signal levels. */
|
|
|
static void
|
|
|
intel_dp_set_signal_levels(struct intel_dp *intel_dp, uint32_t *DP)
|
|
@@ -2874,10 +2828,7 @@ intel_dp_set_signal_levels(struct intel_dp *intel_dp, uint32_t *DP)
|
|
|
uint32_t signal_levels, mask;
|
|
|
uint8_t train_set = intel_dp->train_set[0];
|
|
|
|
|
|
- if (IS_BROADWELL(dev)) {
|
|
|
- signal_levels = intel_bdw_signal_levels(train_set);
|
|
|
- mask = DDI_BUF_EMP_MASK;
|
|
|
- } else if (IS_HASWELL(dev)) {
|
|
|
+ if (IS_HASWELL(dev) || IS_BROADWELL(dev)) {
|
|
|
signal_levels = intel_hsw_signal_levels(train_set);
|
|
|
mask = DDI_BUF_EMP_MASK;
|
|
|
} else if (IS_CHERRYVIEW(dev)) {
|