drm/msm/sde: update the fence support in sde

Update SDE DRM driver with upstream fence support
and avoid using android sync fence to align
the implementation with 4.9 kernel.

Change-Id: I5e55a48b7d7306b39688a4463dfe92ce77c55f37
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 01630cf..4e94807 100644
--- a/drivers/gpu/drm/msm/sde/sde_plane.c
+++ b/drivers/gpu/drm/msm/sde/sde_plane.c
@@ -533,6 +533,7 @@
 	uint32_t prefix;
 	void *input_fence;
 	int ret = -EINVAL;
+	signed long rc;
 
 	if (!plane) {
 		SDE_ERROR("invalid plane\n");
@@ -544,24 +545,36 @@
 		input_fence = pstate->input_fence;
 
 		if (input_fence) {
+			psde->is_error = false;
 			prefix = sde_sync_get_name_prefix(input_fence);
-			ret = sde_sync_wait(input_fence, wait_ms);
+			rc = sde_sync_wait(input_fence, wait_ms);
 
 			SDE_EVT32(DRMID(plane), -ret, prefix);
 
-			switch (ret) {
+			switch (rc) {
 			case 0:
-				SDE_DEBUG_PLANE(psde, "signaled\n");
-				break;
-			case -ETIME:
 				SDE_ERROR_PLANE(psde, "%ums timeout on %08X\n",
 						wait_ms, prefix);
 				psde->is_error = true;
+				ret = -ETIMEDOUT;
+				break;
+			case -ERESTARTSYS:
+				SDE_ERROR_PLANE(psde,
+					"%ums wait interrupted on %08X\n",
+					wait_ms, prefix);
+				psde->is_error = true;
+				ret = -ERESTARTSYS;
+				break;
+			case -EINVAL:
+				SDE_ERROR_PLANE(psde,
+					"invalid fence param for %08X\n",
+						prefix);
+				psde->is_error = true;
+				ret = -EINVAL;
 				break;
 			default:
-				SDE_ERROR_PLANE(psde, "error %d on %08X\n",
-						ret, prefix);
-				psde->is_error = true;
+				SDE_DEBUG_PLANE(psde, "signaled\n");
+				ret = 0;
 				break;
 			}
 		} else {