libhwcomposer: MDP composition for Higher Resolution panels

This patch:
       -Implements MDP composition for higher resolution
        panels of width more than 2k.
       -Adds DMA pipe support for high res. MDP composition

Change-Id: Ib7b1f822e3600eca81521294fedfe05e948b65c3
diff --git a/liboverlay/overlay.cpp b/liboverlay/overlay.cpp
index 441b822..851422f 100644
--- a/liboverlay/overlay.cpp
+++ b/liboverlay/overlay.cpp
@@ -40,7 +40,7 @@
     int numPipes = 0;
     int mdpVersion = qdutils::MDPVersion::getInstance().getMDPVersion();
     if (mdpVersion > qdutils::MDP_V3_1) numPipes = 4;
-    if (mdpVersion >= qdutils::MDSS_V5) numPipes = 6;
+    if (mdpVersion >= qdutils::MDSS_V5) numPipes = 8;
 
     PipeBook::NUM_PIPES = numPipes;
     for(int i = 0; i < PipeBook::NUM_PIPES; i++) {
@@ -184,6 +184,13 @@
     } else {
         clearMdpFlags(newArgs.mdpFlags, OV_MDP_PIPE_SHARE);
     }
+
+    if(dest == OV_DMA0 || dest == OV_DMA1) {
+        setMdpFlags(newArgs.mdpFlags, OV_MDP_PIPE_FORCE_DMA);
+    } else {
+        clearMdpFlags(newArgs.mdpFlags, OV_MDP_PIPE_FORCE_DMA);
+    }
+
     mPipeBook[index].mPipe->setSource(newArgs);
 }
 
diff --git a/liboverlay/overlayUtils.h b/liboverlay/overlayUtils.h
index 45d1924..695c50c 100644
--- a/liboverlay/overlayUtils.h
+++ b/liboverlay/overlayUtils.h
@@ -73,6 +73,10 @@
 #define MDSS_MDP_RIGHT_MIXER 0x100
 #endif
 
+#ifndef MDP_OV_PIPE_FORCE_DMA
+#define MDP_OV_PIPE_FORCE_DMA 0x4000
+#endif
+
 namespace overlay {
 
 // fwd
@@ -290,6 +294,7 @@
 enum eMdpFlags {
     OV_MDP_FLAGS_NONE = 0,
     OV_MDP_PIPE_SHARE =  MDP_OV_PIPE_SHARE,
+    OV_MDP_PIPE_FORCE_DMA = MDP_OV_PIPE_FORCE_DMA,
     OV_MDP_DEINTERLACE = MDP_DEINTERLACE,
     OV_MDP_SECURE_OVERLAY_SESSION = MDP_SECURE_OVERLAY_SESSION,
     OV_MDP_SOURCE_ROTATED_90 = MDP_SOURCE_ROTATED_90,
@@ -312,6 +317,7 @@
 enum eMdpPipeType {
     OV_MDP_PIPE_RGB,
     OV_MDP_PIPE_VG,
+    OV_MDP_PIPE_DMA,
     OV_MDP_PIPE_ANY, //Any
 };
 
@@ -324,6 +330,8 @@
     OV_RGB1,
     OV_VG2,
     OV_RGB2,
+    OV_DMA0,
+    OV_DMA1,
     OV_INVALID,
 };
 
@@ -732,6 +740,8 @@
         case OV_RGB1: return "RGB1";
         case OV_VG2: return "VG2";
         case OV_RGB2: return "RGB2";
+        case OV_DMA0: return "DMA0";
+        case OV_DMA1: return "DMA1";
         default: return "Invalid";
     }
     return "Invalid";
@@ -747,6 +757,9 @@
         case OV_RGB1:
         case OV_RGB2:
             return OV_MDP_PIPE_RGB;
+        case OV_DMA0:
+        case OV_DMA1:
+            return OV_MDP_PIPE_DMA;
         default:
             return OV_MDP_PIPE_ANY;
     }