aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2013-10-04 08:08:10 -0400
committerDave Airlie <airlied@redhat.com>2013-10-09 04:20:48 -0400
commit6aba5b6cf098ba305fc31b23cc14114a16768d22 (patch)
treed16027031cb7983beea12432205fd85675b8e989
parent27f75dc6d2fa05027896d58907c8c1e787bb1eff (diff)
drm/i915/dp: get rid of intel_dp->link_configuration
It's not really needed, rather just adds another place to hold intermediate values that could go wrong, and it's not clear that the training pattern set or training lane set should be written at this point at all. Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c5
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c34
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h3
3 files changed, 13 insertions, 29 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 04f68804834d..9792ea8df13e 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -296,9 +296,6 @@ static void intel_ddi_mode_set(struct intel_encoder *encoder)
296 DRM_DEBUG_DRIVER("DP audio: write eld information\n"); 296 DRM_DEBUG_DRIVER("DP audio: write eld information\n");
297 intel_write_eld(&encoder->base, adjusted_mode); 297 intel_write_eld(&encoder->base, adjusted_mode);
298 } 298 }
299
300 intel_dp_init_link_config(intel_dp);
301
302 } else if (type == INTEL_OUTPUT_HDMI) { 299 } else if (type == INTEL_OUTPUT_HDMI) {
303 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); 300 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
304 301
@@ -1202,7 +1199,7 @@ void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder)
1202 1199
1203 val = DP_TP_CTL_ENABLE | DP_TP_CTL_MODE_SST | 1200 val = DP_TP_CTL_ENABLE | DP_TP_CTL_MODE_SST |
1204 DP_TP_CTL_LINK_TRAIN_PAT1 | DP_TP_CTL_SCRAMBLE_DISABLE; 1201 DP_TP_CTL_LINK_TRAIN_PAT1 | DP_TP_CTL_SCRAMBLE_DISABLE;
1205 if (intel_dp->link_configuration[1] & DP_LANE_COUNT_ENHANCED_FRAME_EN) 1202 if (drm_dp_enhanced_frame_cap(intel_dp->dpcd))
1206 val |= DP_TP_CTL_ENHANCED_FRAME_ENABLE; 1203 val |= DP_TP_CTL_ENHANCED_FRAME_ENABLE;
1207 I915_WRITE(DP_TP_CTL(port), val); 1204 I915_WRITE(DP_TP_CTL(port), val);
1208 POSTING_READ(DP_TP_CTL(port)); 1205 POSTING_READ(DP_TP_CTL(port));
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 3575b86ca799..5f0c783027c9 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -876,21 +876,6 @@ found:
876 return true; 876 return true;
877} 877}
878 878
879void intel_dp_init_link_config(struct intel_dp *intel_dp)
880{
881 memset(intel_dp->link_configuration, 0, DP_LINK_CONFIGURATION_SIZE);
882 intel_dp->link_configuration[0] = intel_dp->link_bw;
883 intel_dp->link_configuration[1] = intel_dp->lane_count;
884 intel_dp->link_configuration[8] = DP_SET_ANSI_8B10B;
885 /*
886 * Check for DPCD version > 1.1 and enhanced framing support
887 */
888 if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11 &&
889 (intel_dp->dpcd[DP_MAX_LANE_COUNT] & DP_ENHANCED_FRAME_CAP)) {
890 intel_dp->link_configuration[1] |= DP_LANE_COUNT_ENHANCED_FRAME_EN;
891 }
892}
893
894static void ironlake_set_pll_cpu_edp(struct intel_dp *intel_dp) 879static void ironlake_set_pll_cpu_edp(struct intel_dp *intel_dp)
895{ 880{
896 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); 881 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
@@ -963,8 +948,6 @@ static void intel_dp_mode_set(struct intel_encoder *encoder)
963 intel_write_eld(&encoder->base, adjusted_mode); 948 intel_write_eld(&encoder->base, adjusted_mode);
964 } 949 }
965 950
966 intel_dp_init_link_config(intel_dp);
967
968 /* Split out the IBX/CPU vs CPT settings */ 951 /* Split out the IBX/CPU vs CPT settings */
969 952
970 if (port == PORT_A && IS_GEN7(dev) && !IS_VALLEYVIEW(dev)) { 953 if (port == PORT_A && IS_GEN7(dev) && !IS_VALLEYVIEW(dev)) {
@@ -974,7 +957,7 @@ static void intel_dp_mode_set(struct intel_encoder *encoder)
974 intel_dp->DP |= DP_SYNC_VS_HIGH; 957 intel_dp->DP |= DP_SYNC_VS_HIGH;
975 intel_dp->DP |= DP_LINK_TRAIN_OFF_CPT; 958 intel_dp->DP |= DP_LINK_TRAIN_OFF_CPT;
976 959
977 if (intel_dp->link_configuration[1] & DP_LANE_COUNT_ENHANCED_FRAME_EN) 960 if (drm_dp_enhanced_frame_cap(intel_dp->dpcd))
978 intel_dp->DP |= DP_ENHANCED_FRAMING; 961 intel_dp->DP |= DP_ENHANCED_FRAMING;
979 962
980 intel_dp->DP |= crtc->pipe << 29; 963 intel_dp->DP |= crtc->pipe << 29;
@@ -988,7 +971,7 @@ static void intel_dp_mode_set(struct intel_encoder *encoder)
988 intel_dp->DP |= DP_SYNC_VS_HIGH; 971 intel_dp->DP |= DP_SYNC_VS_HIGH;
989 intel_dp->DP |= DP_LINK_TRAIN_OFF; 972 intel_dp->DP |= DP_LINK_TRAIN_OFF;
990 973
991 if (intel_dp->link_configuration[1] & DP_LANE_COUNT_ENHANCED_FRAME_EN) 974 if (drm_dp_enhanced_frame_cap(intel_dp->dpcd))
992 intel_dp->DP |= DP_ENHANCED_FRAMING; 975 intel_dp->DP |= DP_ENHANCED_FRAMING;
993 976
994 if (crtc->pipe == 1) 977 if (crtc->pipe == 1)
@@ -2444,14 +2427,21 @@ intel_dp_start_link_train(struct intel_dp *intel_dp)
2444 uint8_t voltage; 2427 uint8_t voltage;
2445 int voltage_tries, loop_tries; 2428 int voltage_tries, loop_tries;
2446 uint32_t DP = intel_dp->DP; 2429 uint32_t DP = intel_dp->DP;
2430 uint8_t link_config[2];
2447 2431
2448 if (HAS_DDI(dev)) 2432 if (HAS_DDI(dev))
2449 intel_ddi_prepare_link_retrain(encoder); 2433 intel_ddi_prepare_link_retrain(encoder);
2450 2434
2451 /* Write the link configuration data */ 2435 /* Write the link configuration data */
2452 intel_dp_aux_native_write(intel_dp, DP_LINK_BW_SET, 2436 link_config[0] = intel_dp->link_bw;
2453 intel_dp->link_configuration, 2437 link_config[1] = intel_dp->lane_count;
2454 DP_LINK_CONFIGURATION_SIZE); 2438 if (drm_dp_enhanced_frame_cap(intel_dp->dpcd))
2439 link_config[1] |= DP_LANE_COUNT_ENHANCED_FRAME_EN;
2440 intel_dp_aux_native_write(intel_dp, DP_LINK_BW_SET, link_config, 2);
2441
2442 link_config[0] = 0;
2443 link_config[1] = DP_SET_ANSI_8B10B;
2444 intel_dp_aux_native_write(intel_dp, DP_DOWNSPREAD_CTRL, link_config, 2);
2455 2445
2456 DP |= DP_PORT_EN; 2446 DP |= DP_PORT_EN;
2457 2447
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 4b75328462ed..287bbef72da9 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -437,13 +437,11 @@ struct intel_hdmi {
437}; 437};
438 438
439#define DP_MAX_DOWNSTREAM_PORTS 0x10 439#define DP_MAX_DOWNSTREAM_PORTS 0x10
440#define DP_LINK_CONFIGURATION_SIZE 9
441 440
442struct intel_dp { 441struct intel_dp {
443 uint32_t output_reg; 442 uint32_t output_reg;
444 uint32_t aux_ch_ctl_reg; 443 uint32_t aux_ch_ctl_reg;
445 uint32_t DP; 444 uint32_t DP;
446 uint8_t link_configuration[DP_LINK_CONFIGURATION_SIZE];
447 bool has_audio; 445 bool has_audio;
448 enum hdmi_force_audio force_audio; 446 enum hdmi_force_audio force_audio;
449 uint32_t color_range; 447 uint32_t color_range;
@@ -548,7 +546,6 @@ extern void intel_dp_init(struct drm_device *dev, int output_reg,
548 enum port port); 546 enum port port);
549extern bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port, 547extern bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
550 struct intel_connector *intel_connector); 548 struct intel_connector *intel_connector);
551extern void intel_dp_init_link_config(struct intel_dp *intel_dp);
552extern void intel_dp_start_link_train(struct intel_dp *intel_dp); 549extern void intel_dp_start_link_train(struct intel_dp *intel_dp);
553extern void intel_dp_complete_link_train(struct intel_dp *intel_dp); 550extern void intel_dp_complete_link_train(struct intel_dp *intel_dp);
554extern void intel_dp_stop_link_train(struct intel_dp *intel_dp); 551extern void intel_dp_stop_link_train(struct intel_dp *intel_dp);