diff mbox series

[v5,1/6] drm/i915: Avoid a full port detection in the first eDP short pulse

Message ID 20181121225441.18785-1-jose.souza@intel.com (mailing list archive)
State New, archived
Headers show
Series [v5,1/6] drm/i915: Avoid a full port detection in the first eDP short pulse | expand

Commit Message

Souza, Jose Nov. 21, 2018, 10:54 p.m. UTC
Some eDP panels do not set a valid sink count value and even for the
ones that sets is should always be one for eDP, that is why it is not
cached in intel_edp_init_dpcd().

But intel_dp_short_pulse() compares the old count with the read one
if there is a mistmatch a full port detection will be executed, what
was happening in the first short pulse interruption of eDP panels
that sets sink count.

Instead of just skip the compasison for eDP panels, lets not read
the sink count at all for eDP.

v2: the previous version of this patch it was caching the sink count
in intel_edp_init_dpcd() but I was pointed out by Ville a patch that
handled a case of a eDP panel that do not set sink count and as sink
count is not used to eDP certification was choosed to just not read
it at all.

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 44 +++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 18 deletions(-)

Comments

Souza, Jose Nov. 22, 2018, 10:03 p.m. UTC | #1
Merged to drm-intel-next-queued, thanks for the reviews Ville and
Rodrigo.

On Thu, 2018-11-22 at 03:23 +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: series starting with [v5,1/6] drm/i915: Avoid a full port
> detection in the first eDP short pulse
> URL   : https://patchwork.freedesktop.org/series/52848/
> State : success
> 
> == Summary ==
> 
> = CI Bug Log - changes from CI_DRM_5183_full -> Patchwork_10883_full
> =
> 
> == Summary - WARNING ==
> 
>   Minor unknown changes coming with Patchwork_10883_full need to be
> verified
>   manually.
>   
>   If you think the reported changes have nothing to do with the
> changes
>   introduced in Patchwork_10883_full, please notify your bug team to
> allow them
>   to document this new failure mode, which will reduce false
> positives in CI.
> 
>   
> 
> == Possible new issues ==
> 
>   Here are the unknown changes that may have been introduced in
> Patchwork_10883_full:
> 
>   === IGT changes ===
> 
>     ==== Warnings ====
> 
>     igt@kms_universal_plane@disable-primary-vs-flip-pipe-b:
>       shard-snb:          SKIP -> PASS +9
> 
>     igt@perf_pmu@rc6-runtime-pm-long:
>       shard-kbl:          PASS -> SKIP
> 
>     igt@tools_test@tools_test:
>       shard-apl:          PASS -> SKIP
> 
>     
> == Known issues ==
> 
>   Here are the changes found in Patchwork_10883_full that come from
> known issues:
> 
>   === IGT changes ===
> 
>     ==== Issues hit ====
> 
>     igt@gem_cpu_reloc@full:
>       shard-skl:          NOTRUN -> INCOMPLETE (fdo#108073)
> 
>     igt@gem_exec_schedule@pi-ringfull-vebox:
>       shard-skl:          NOTRUN -> FAIL (fdo#103158)
> 
>     igt@gem_mmap_gtt@forked-big-copy-odd:
>       shard-apl:          PASS -> INCOMPLETE (fdo#103927)
> 
>     igt@kms_busy@extended-modeset-hang-newfb-render-a:
>       shard-skl:          NOTRUN -> DMESG-WARN (fdo#107956) +4
> 
>     igt@kms_color@pipe-b-degamma:
>       shard-skl:          PASS -> FAIL (fdo#104782)
> 
>     igt@kms_cursor_crc@cursor-128x42-sliding:
>       shard-glk:          PASS -> FAIL (fdo#103232)
> 
>     igt@kms_cursor_crc@cursor-64x21-random:
>       shard-apl:          PASS -> FAIL (fdo#103232) +2
> 
>     igt@kms_flip@flip-vs-expired-vblank-interruptible:
>       shard-glk:          PASS -> FAIL (fdo#102887, fdo#105363)
> 
>     igt@kms_flip@plain-flip-ts-check:
>       shard-kbl:          PASS -> DMESG-WARN (fdo#103558, fdo#105602,
> fdo#103313) +4
> 
>     igt@kms_frontbuffer_tracking@fbc-1p-rte:
>       shard-kbl:          PASS -> DMESG-WARN (fdo#103558, fdo#103313)
> 
>     igt@kms
> _frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
>       shard-glk:          PASS -> FAIL (fdo#103167) +3
> 
>     igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render:
>       shard-skl:          PASS -> FAIL (fdo#103167)
> 
>     igt@kms_frontbuffer_tracking@fbcpsr-stridechange:
>       shard-skl:          NOTRUN -> FAIL (fdo#105683)
> 
>     igt@kms
> _frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-pwrite:
>       shard-skl:          NOTRUN -> FAIL (fdo#103167)
> 
>     igt@kms_plane@pixel-format-pipe-b-planes:
>       shard-skl:          NOTRUN -> DMESG-WARN (fdo#106885)
> 
>     igt@kms_plane_alpha_blend@pipe-a-alpha-transparant-fb:
>       shard-skl:          NOTRUN -> FAIL (fdo#108145) +1
> 
>     igt@kms_plane_multiple@atomic-pipe-a-tiling-y:
>       shard-apl:          PASS -> FAIL (fdo#103166) +1
> 
>     igt@kms_plane_multiple@atomic-pipe-b-tiling-x:
>       shard-glk:          PASS -> FAIL (fdo#103166) +1
> 
>     igt@kms_rotation_crc@primary-rotation-90:
>       shard-skl:          PASS -> FAIL (fdo#107815, fdo#103925)
> 
>     
>     ==== Possible fixes ====
> 
>     igt@gem_exec_schedule@preemptive-hang-render:
>       shard-apl:          INCOMPLETE (fdo#103927) -> PASS
> 
>     igt@kms_cursor_crc@cursor-256x256-onscreen:
>       shard-glk:          FAIL (fdo#103232) -> PASS +1
> 
>     igt@kms_cursor_crc@cursor-64x21-sliding:
>       shard-apl:          FAIL (fdo#103232) -> PASS +3
> 
>     igt@kms_draw_crc@draw-method-rgb565-pwrite-xtiled:
>       shard-glk:          FAIL (fdo#103184) -> PASS
> 
>     igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
>       shard-glk:          FAIL (fdo#103167) -> PASS +1
> 
>     igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
>       shard-glk:          INCOMPLETE (fdo#103359, k.org#198133) ->
> PASS
> 
>     igt@kms_plane@plane-position-covered-pipe-c-planes:
>       shard-apl:          FAIL (fdo#103166) -> PASS
> 
>     igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
>       shard-glk:          DMESG-WARN (fdo#106538, fdo#105763) -> PASS
> +4
> 
>     igt@pm_rpm@universal-planes-dpms:
>       shard-skl:          INCOMPLETE (fdo#107807) -> PASS +1
> 
>     
>     ==== Warnings ====
> 
>     igt@i915_suspend@shrink:
>       shard-skl:          DMESG-WARN (fdo#108784) -> INCOMPLETE
> (fdo#106886)
> 
>     igt@kms_plane@pixel-format-pipe-a-planes:
>       shard-skl:          DMESG-FAIL (fdo#103166, fdo#106885) -> FAIL
> (fdo#103166)
> 
>     
>   fdo#102887 https://bugs.freedesktop.org/show_bug.cgi?id=102887
>   fdo#103158 https://bugs.freedesktop.org/show_bug.cgi?id=103158
>   fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
>   fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
>   fdo#103184 https://bugs.freedesktop.org/show_bug.cgi?id=103184
>   fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
>   fdo#103313 https://bugs.freedesktop.org/show_bug.cgi?id=103313
>   fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
>   fdo#103558 https://bugs.freedesktop.org/show_bug.cgi?id=103558
>   fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
>   fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
>   fdo#104782 https://bugs.freedesktop.org/show_bug.cgi?id=104782
>   fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363
>   fdo#105602 https://bugs.freedesktop.org/show_bug.cgi?id=105602
>   fdo#105683 https://bugs.freedesktop.org/show_bug.cgi?id=105683
>   fdo#105763 https://bugs.freedesktop.org/show_bug.cgi?id=105763
>   fdo#106538 https://bugs.freedesktop.org/show_bug.cgi?id=106538
>   fdo#106885 https://bugs.freedesktop.org/show_bug.cgi?id=106885
>   fdo#106886 https://bugs.freedesktop.org/show_bug.cgi?id=106886
>   fdo#107807 https://bugs.freedesktop.org/show_bug.cgi?id=107807
>   fdo#107815 https://bugs.freedesktop.org/show_bug.cgi?id=107815
>   fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
>   fdo#108073 https://bugs.freedesktop.org/show_bug.cgi?id=108073
>   fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
>   fdo#108784 https://bugs.freedesktop.org/show_bug.cgi?id=108784
>   k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133
> 
> 
> == Participating hosts (7 -> 6) ==
> 
>   Missing    (1): shard-iclb 
> 
> 
> == Build changes ==
> 
>     * Linux: CI_DRM_5183 -> Patchwork_10883
> 
>   CI_DRM_5183: efce77bb4d804788e55a1ceb4386c812857f8cf7 @
> git://anongit.freedesktop.org/gfx-ci/linux
>   IGT_4724: 29ae0925abe1d3a0202059538559468ad947d42d @
> git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
>   Patchwork_10883: 085a5d730b4050ef609a71dad16a390c0728512e @
> git://anongit.freedesktop.org/gfx-ci/linux
>   piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @
> git://anongit.freedesktop.org/piglit
> 
> == Logs ==
> 
> For more details see: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10883/shards.html
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 7699f9b7b2d2..a6c654e17955 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -3936,8 +3936,6 @@  intel_edp_init_dpcd(struct intel_dp *intel_dp)
 static bool
 intel_dp_get_dpcd(struct intel_dp *intel_dp)
 {
-	u8 sink_count;
-
 	if (!intel_dp_read_dpcd(intel_dp))
 		return false;
 
@@ -3947,25 +3945,35 @@  intel_dp_get_dpcd(struct intel_dp *intel_dp)
 		intel_dp_set_common_rates(intel_dp);
 	}
 
-	if (drm_dp_dpcd_readb(&intel_dp->aux, DP_SINK_COUNT, &sink_count) <= 0)
-		return false;
-
 	/*
-	 * Sink count can change between short pulse hpd hence
-	 * a member variable in intel_dp will track any changes
-	 * between short pulse interrupts.
+	 * 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().
 	 */
-	intel_dp->sink_count = DP_GET_SINK_COUNT(sink_count);
+	if (!intel_dp_is_edp(intel_dp)) {
+		u8 count;
+		ssize_t r;
 
-	/*
-	 * SINK_COUNT == 0 and DOWNSTREAM_PORT_PRESENT == 1 implies that
-	 * a dongle is present but no display. Unless we require to know
-	 * if a dongle is present or not, we don't need to update
-	 * downstream port information. So, an early return here saves
-	 * time from performing other operations which are not required.
-	 */
-	if (!intel_dp_is_edp(intel_dp) && !intel_dp->sink_count)
-		return false;
+		r = drm_dp_dpcd_readb(&intel_dp->aux, DP_SINK_COUNT, &count);
+		if (r < 1)
+			return false;
+
+		/*
+		 * Sink count can change between short pulse hpd hence
+		 * a member variable in intel_dp will track any changes
+		 * between short pulse interrupts.
+		 */
+		intel_dp->sink_count = DP_GET_SINK_COUNT(count);
+
+		/*
+		 * SINK_COUNT == 0 and DOWNSTREAM_PORT_PRESENT == 1 implies that
+		 * a dongle is present but no display. Unless we require to know
+		 * if a dongle is present or not, we don't need to update
+		 * downstream port information. So, an early return here saves
+		 * time from performing other operations which are not required.
+		 */
+		if (!intel_dp->sink_count)
+			return false;
+	}
 
 	if (!drm_dp_is_branch(intel_dp->dpcd))
 		return true; /* native DP sink */