aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2016-10-24 12:33:28 -0400
committerImre Deak <imre.deak@intel.com>2016-10-26 05:41:00 -0400
commit24e807e79f103cd9e7799eed704ed6916915d65a (patch)
treecb923f7c2857241b23eefb867871828a75b2574c
parent7b3fc170d6a6ac1d1622178a2db317671cb89b9c (diff)
drm/i915/lspcon: Fail LSPCON probe if the start of DPCD can't be read
All types of DP devices (eDP, DP sink, DP branch) will fail their probe if the start of DPCD can't be read. The LSPCON PCON functionality also depends on accessing this area, so fail the probe if the read fails. Cc: Shashank Sharma <shashank.sharma@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1477326811-30431-6-git-send-email-imre.deak@intel.com
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c2
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h2
-rw-r--r--drivers/gpu/drm/i915/intel_lspcon.c5
3 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index bff27b7c5b62..07a502fd6773 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -3497,7 +3497,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
3497 intel_dp->DP = DP; 3497 intel_dp->DP = DP;
3498} 3498}
3499 3499
3500static bool 3500bool
3501intel_dp_read_dpcd(struct intel_dp *intel_dp) 3501intel_dp_read_dpcd(struct intel_dp *intel_dp)
3502{ 3502{
3503 if (drm_dp_dpcd_read(&intel_dp->aux, 0x000, intel_dp->dpcd, 3503 if (drm_dp_dpcd_read(&intel_dp->aux, 0x000, intel_dp->dpcd,
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 65ebe92e0e96..b9583268aafb 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1467,6 +1467,8 @@ static inline unsigned int intel_dp_unused_lane_mask(int lane_count)
1467 return ~((1 << lane_count) - 1) & 0xf; 1467 return ~((1 << lane_count) - 1) & 0xf;
1468} 1468}
1469 1469
1470bool intel_dp_read_dpcd(struct intel_dp *intel_dp);
1471
1470/* intel_dp_aux_backlight.c */ 1472/* intel_dp_aux_backlight.c */
1471int intel_dp_aux_init_backlight_funcs(struct intel_connector *intel_connector); 1473int intel_dp_aux_init_backlight_funcs(struct intel_connector *intel_connector);
1472 1474
diff --git a/drivers/gpu/drm/i915/intel_lspcon.c b/drivers/gpu/drm/i915/intel_lspcon.c
index 632149c6b3ad..23b817acd99d 100644
--- a/drivers/gpu/drm/i915/intel_lspcon.c
+++ b/drivers/gpu/drm/i915/intel_lspcon.c
@@ -131,6 +131,11 @@ bool lspcon_init(struct intel_digital_port *intel_dig_port)
131 } 131 }
132 } 132 }
133 133
134 if (!intel_dp_read_dpcd(dp)) {
135 DRM_ERROR("LSPCON DPCD read failed\n");
136 return false;
137 }
138
134 DRM_DEBUG_KMS("Success: LSPCON init\n"); 139 DRM_DEBUG_KMS("Success: LSPCON init\n");
135 return true; 140 return true;
136} 141}