drm/msm/sde: update excl rect atomic check in crtc

Exclusion rectangle is not supported if there is no
top overlapping layer to cover it. The output image
will show corruption with such invalid combination.
CRTC should check for all top layer on current exclusion
rectangle for covering rectangles and return failure
if there is none.

Change-Id: I9f2cab88d37fed5a81be1d678ea575af1eb58370
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
diff --git a/drivers/gpu/drm/msm/sde/sde_plane.c b/drivers/gpu/drm/msm/sde/sde_plane.c
index c408861..ff9484b 100644
--- a/drivers/gpu/drm/msm/sde/sde_plane.c
+++ b/drivers/gpu/drm/msm/sde/sde_plane.c
@@ -2886,11 +2886,12 @@
 
 		/*
 		 * Check exclusion rect against src rect.
-		 * Cropping is not required as hardware will consider only the
-		 * intersecting region with the src rect.
+		 * it must intersect with source rect.
 		 */
 		sde_kms_rect_intersect(&src, &pstate->excl_rect, &intersect);
-		if (!intersect.w || !intersect.h || SDE_FORMAT_IS_YUV(fmt)) {
+		if (intersect.w != pstate->excl_rect.w ||
+				intersect.h != pstate->excl_rect.h ||
+				SDE_FORMAT_IS_YUV(fmt)) {
 			SDE_ERROR_PLANE(psde,
 				"invalid excl_rect:{%d,%d,%d,%d} src:{%d,%d,%d,%d}, fmt: %4.4s\n",
 				pstate->excl_rect.x, pstate->excl_rect.y,