drm/i915: Skip SINK_COUNT read on CH7511
CH7511 doesn't update SINK_COUNT properly so in order to detect the device as connected we have to ignore SINK_COUNT. In order to have access to the quirk list early enough we must move the drm_dp_read_desc() call to happen earlier. We can also skip re-reading this on eDP since we know it won't change. Cc: David S. <david@majinbuu.com> Cc: Peteris Rudzusiks <peteris.rudzusiks@gmail.com> Tested-by: Peteris Rudzusiks <peteris.rudzusiks@gmail.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105406 Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190528140650.19230-2-ville.syrjala@linux.intel.com Acked-by: Jani Nikula <jani.nikula@intel.com> #irc
This commit is contained in:
parent
f774f09649
commit
eaa2b31be1
@ -4221,8 +4221,14 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp)
|
||||
if (!intel_dp_read_dpcd(intel_dp))
|
||||
return false;
|
||||
|
||||
/* Don't clobber cached eDP rates. */
|
||||
/*
|
||||
* Don't clobber cached eDP rates. Also skip re-reading
|
||||
* the OUI/ID since we know it won't change.
|
||||
*/
|
||||
if (!intel_dp_is_edp(intel_dp)) {
|
||||
drm_dp_read_desc(&intel_dp->aux, &intel_dp->desc,
|
||||
drm_dp_is_branch(intel_dp->dpcd));
|
||||
|
||||
intel_dp_set_sink_rates(intel_dp);
|
||||
intel_dp_set_common_rates(intel_dp);
|
||||
}
|
||||
@ -4231,7 +4237,8 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp)
|
||||
* Some eDP panels do not set a valid value for sink count, that is why
|
||||
* it don't care about read it here and in intel_edp_init_dpcd().
|
||||
*/
|
||||
if (!intel_dp_is_edp(intel_dp)) {
|
||||
if (!intel_dp_is_edp(intel_dp) &&
|
||||
!drm_dp_has_quirk(&intel_dp->desc, DP_DPCD_QUIRK_NO_SINK_COUNT)) {
|
||||
u8 count;
|
||||
ssize_t r;
|
||||
|
||||
@ -5377,9 +5384,6 @@ intel_dp_detect(struct drm_connector *connector,
|
||||
if (INTEL_GEN(dev_priv) >= 11)
|
||||
intel_dp_get_dsc_sink_cap(intel_dp);
|
||||
|
||||
drm_dp_read_desc(&intel_dp->aux, &intel_dp->desc,
|
||||
drm_dp_is_branch(intel_dp->dpcd));
|
||||
|
||||
intel_dp_configure_mst(intel_dp);
|
||||
|
||||
if (intel_dp->is_mst) {
|
||||
|
Loading…
Reference in New Issue
Block a user