platform: msm_shared: Flip UTMR/UTR Interrupts from interrupt blocking to polling

Currently UTMR and UTR iterrupts are handled in the interrupt handler
and wait on the interrupt latency to process the utp transfter
completion tasks. This change polls Interrupt Status register bits to
check for completion status instead of waiting for interrupt to fire
and hence removes interrupt latency thereby improving performance.

Change-Id: Ieac8faec0db7dd3185e2209019f6422583284bc3
diff --git a/platform/msm_shared/include/utp.h b/platform/msm_shared/include/utp.h
index 042c002..e7a6df9 100644
--- a/platform/msm_shared/include/utp.h
+++ b/platform/msm_shared/include/utp.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -145,5 +145,5 @@
 
 int utp_enqueue_upiu(struct ufs_dev *dev, struct upiu_req_build_type *upiu_data);
 void utp_process_req_completion(struct ufs_req_irq_type *irq);
-
+int utp_poll_utrd_complete(struct ufs_dev *dev);
 #endif
diff --git a/platform/msm_shared/ufs.c b/platform/msm_shared/ufs.c
index 63fc556..1897735 100644
--- a/platform/msm_shared/ufs.c
+++ b/platform/msm_shared/ufs.c
@@ -81,7 +81,7 @@
 	writel(1, UFS_UTRLRSR(dev->base));
 
 	/* Enable the required irqs. */
-	val = UFS_IE_UTRCE | UFS_IE_UEE | UFS_IE_UTMRCE | UFS_IE_UCCE ;
+	val = UFS_IE_UEE | UFS_IE_UCCE ;
 	ufs_irq_enable(dev, val);
 }
 
diff --git a/platform/msm_shared/utp.c b/platform/msm_shared/utp.c
index c7d30ff..0c0e14b 100644
--- a/platform/msm_shared/utp.c
+++ b/platform/msm_shared/utp.c
Binary files differ