mm-video: port heap mask change to ion.

Heap mask field passes as argument at allocation time
to specify ion heap.

Change-Id: Ib46d28aa1cf76efbfdadc8a624bf2d1ea483fe09
diff --git a/mm-video/vidc/vdec/src/omx_vdec.cpp b/mm-video/vidc/vdec/src/omx_vdec.cpp
old mode 100644
new mode 100755
index 0dd1ce7..74dc06e
--- a/mm-video/vidc/vdec/src/omx_vdec.cpp
+++ b/mm-video/vidc/vdec/src/omx_vdec.cpp
@@ -4122,7 +4122,7 @@
         drv_ctx.op_buf_ion_info[i].ion_device_fd = alloc_map_ion_memory(
                 drv_ctx.op_buf.buffer_size,drv_ctx.op_buf.alignment,
                 &drv_ctx.op_buf_ion_info[i].ion_alloc_data,
-                &drv_ctx.op_buf_ion_info[i].fd_ion_data,CACHED);
+                &drv_ctx.op_buf_ion_info[i].fd_ion_data,ION_FLAG_CACHED);
         if(drv_ctx.op_buf_ion_info[i].ion_device_fd < 0) {
           return OMX_ErrorInsufficientResources;
         }
@@ -4715,7 +4715,7 @@
  drv_ctx.ip_buf_ion_info[i].ion_device_fd = alloc_map_ion_memory(
                     drv_ctx.ip_buf.buffer_size,drv_ctx.op_buf.alignment,
                     &drv_ctx.ip_buf_ion_info[i].ion_alloc_data,
-		    &drv_ctx.ip_buf_ion_info[i].fd_ion_data,CACHED);
+		    &drv_ctx.ip_buf_ion_info[i].fd_ion_data,ION_FLAG_CACHED);
     if(drv_ctx.ip_buf_ion_info[i].ion_device_fd < 0) {
         return OMX_ErrorInsufficientResources;
      }
@@ -5034,7 +5034,7 @@
     drv_ctx.op_buf_ion_info[i].ion_device_fd = alloc_map_ion_memory(
                     drv_ctx.op_buf.buffer_size,drv_ctx.op_buf.alignment,
                     &drv_ctx.op_buf_ion_info[i].ion_alloc_data,
-                    &drv_ctx.op_buf_ion_info[i].fd_ion_data, CACHED);
+                    &drv_ctx.op_buf_ion_info[i].fd_ion_data, ION_FLAG_CACHED);
     if (drv_ctx.op_buf_ion_info[i].ion_device_fd < 0) {
         return OMX_ErrorInsufficientResources;
      }
@@ -7516,17 +7516,19 @@
      DEBUG_PRINT_ERROR("Invalid arguments to alloc_map_ion_memory\n");
      return -EINVAL;
   }
-  if(!secure_mode && flag == CACHED)
-  {
-     ion_dev_flag = O_RDONLY;
-  } else {
-    ion_dev_flag = (O_RDONLY | O_DSYNC);
-  }
+
+  ion_dev_flag = O_RDONLY;
   fd = open (MEM_DEVICE, ion_dev_flag);
   if (fd < 0) {
      DEBUG_PRINT_ERROR("opening ion device failed with fd = %d\n", fd);
      return fd;
   }
+  alloc_data->flags = 0;
+  if(!secure_mode && (flag & ION_FLAG_CACHED))
+  {
+     alloc_data->flags |= ION_FLAG_CACHED;
+  }
+
   alloc_data->len = buffer_size;
   alloc_data->align = clip2(alignment);
   if (alloc_data->align < 4096)
@@ -7534,15 +7536,16 @@
     alloc_data->align = 4096;
   }
   if(secure_mode) {
-    alloc_data->flags = (ION_HEAP(MEM_HEAP_ID) | ION_SECURE);
+    alloc_data->heap_mask = (ION_HEAP(MEM_HEAP_ID) | ION_SECURE);
   } else {
 #ifdef MAX_RES_720P
     alloc_data->len = (buffer_size + (alloc_data->align - 1)) & ~(alloc_data->align - 1);
-    alloc_data->flags = ION_HEAP(MEM_HEAP_ID);
+    alloc_data->heap_mask = ION_HEAP(MEM_HEAP_ID);
 #else
-    alloc_data->flags = (ION_HEAP(MEM_HEAP_ID) | ION_HEAP(ION_IOMMU_HEAP_ID));
+    alloc_data->heap_mask = (ION_HEAP(MEM_HEAP_ID) | ION_HEAP(ION_IOMMU_HEAP_ID));
 #endif
   }
+
   rc = ioctl(fd,ION_IOC_ALLOC,alloc_data);
   if (rc || !alloc_data->handle) {
     DEBUG_PRINT_ERROR("\n ION ALLOC memory failed ");
@@ -8859,7 +8862,7 @@
  drv_ctx.h264_mv.ion_device_fd = alloc_map_ion_memory(
                     size, 8192,
                     &drv_ctx.h264_mv.ion_alloc_data,
-                    &drv_ctx.h264_mv.fd_ion_data,CACHED);
+                    &drv_ctx.h264_mv.fd_ion_data,ION_FLAG_CACHED);
   if (drv_ctx.h264_mv.ion_device_fd < 0) {
         return OMX_ErrorInsufficientResources;
   }
diff --git a/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp b/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp
index 65a3934..bf11a90 100644
--- a/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp
+++ b/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp
@@ -7360,17 +7360,17 @@
      DEBUG_PRINT_ERROR("Invalid arguments to alloc_map_ion_memory\n");
      return -EINVAL;
   }
-  if(!secure_mode && flag == CACHED)
-  {
-     ion_dev_flag = O_RDONLY;
-  } else {
-     ion_dev_flag = (O_RDONLY | O_DSYNC);
-  }
+  ion_dev_flag = O_RDONLY;
   fd = open (MEM_DEVICE, ion_dev_flag);
   if (fd < 0) {
     DEBUG_PRINT_ERROR("opening ion device failed with fd = %d\n", fd);
     return fd;
   }
+  alloc_data->flags = 0;
+  if(!secure_mode && (flag & ION_FLAG_CACHED))
+  {
+    alloc_data->flags |= ION_FLAG_CACHED;
+  }
   alloc_data->len = buffer_size;
   alloc_data->align = clip2(alignment);
   if (alloc_data->align < 4096)
@@ -7378,9 +7378,9 @@
     alloc_data->align = 4096;
   }
   if(secure_mode) {
-    alloc_data->flags = (ION_HEAP(MEM_HEAP_ID) | ION_SECURE);
+    alloc_data->heap_mask = (ION_HEAP(MEM_HEAP_ID) | ION_SECURE);
   } else {
-    alloc_data->flags = ION_HEAP(MEM_HEAP_ID);
+    alloc_data->heap_mask = ION_HEAP(MEM_HEAP_ID);
   }
   rc = ioctl(fd,ION_IOC_ALLOC,alloc_data);
   if (rc || !alloc_data->handle) {
diff --git a/mm-video/vidc/venc/src/omx_video_base.cpp b/mm-video/vidc/venc/src/omx_video_base.cpp
old mode 100644
new mode 100755
index 8f0afb3..5af8d22
--- a/mm-video/vidc/venc/src/omx_video_base.cpp
+++ b/mm-video/vidc/venc/src/omx_video_base.cpp
@@ -2174,11 +2174,11 @@
 #ifdef _MSM8974_

       m_pInput_ion[i].ion_device_fd = alloc_map_ion_memory(m_sInPortDef.nBufferSize,

                                       &m_pInput_ion[i].ion_alloc_data,

-                                      &m_pInput_ion[i].fd_ion_data,UNCACHED);

+                                      &m_pInput_ion[i].fd_ion_data,0);

 #else

       m_pInput_ion[i].ion_device_fd = alloc_map_ion_memory(m_sInPortDef.nBufferSize,

                                       &m_pInput_ion[i].ion_alloc_data,

-                                      &m_pInput_ion[i].fd_ion_data,CACHED);

+                                      &m_pInput_ion[i].fd_ion_data,ION_FLAG_CACHED);

 #endif

       if(m_pInput_ion[i].ion_device_fd < 0) {

         DEBUG_PRINT_ERROR("\nERROR:ION device open() Failed");

@@ -2382,12 +2382,12 @@
       align_size = ((m_sOutPortDef.nBufferSize + 4095)/4096) * 4096;

       m_pOutput_ion[i].ion_device_fd = alloc_map_ion_memory(align_size,

                                          &m_pOutput_ion[i].ion_alloc_data,

-                                         &m_pOutput_ion[i].fd_ion_data,UNCACHED);

+                                         &m_pOutput_ion[i].fd_ion_data,0);

 #else

       m_pOutput_ion[i].ion_device_fd = alloc_map_ion_memory(

                                          m_sOutPortDef.nBufferSize,

                                          &m_pOutput_ion[i].ion_alloc_data,

-                                         &m_pOutput_ion[i].fd_ion_data,CACHED);

+                                         &m_pOutput_ion[i].fd_ion_data,ION_FLAG_CACHED);

 #endif

       if(m_pOutput_ion[i].ion_device_fd < 0) {

         DEBUG_PRINT_ERROR("\nERROR:ION device open() Failed");

@@ -2791,11 +2791,11 @@
 #ifdef _MSM8974_

     m_pInput_ion[i].ion_device_fd = alloc_map_ion_memory(m_sInPortDef.nBufferSize,

                                     &m_pInput_ion[i].ion_alloc_data,

-                                    &m_pInput_ion[i].fd_ion_data,UNCACHED);

+                                    &m_pInput_ion[i].fd_ion_data,0);

 #else

     m_pInput_ion[i].ion_device_fd = alloc_map_ion_memory(m_sInPortDef.nBufferSize,

                                     &m_pInput_ion[i].ion_alloc_data,

-                                    &m_pInput_ion[i].fd_ion_data,CACHED);

+                                    &m_pInput_ion[i].fd_ion_data,ION_FLAG_CACHED);

 #endif

     if(m_pInput_ion[i].ion_device_fd < 0) {

       DEBUG_PRINT_ERROR("\nERROR:ION device open() Failed");

@@ -2959,11 +2959,11 @@
       align_size = ((m_sOutPortDef.nBufferSize + 4095)/4096) * 4096;

       m_pOutput_ion[i].ion_device_fd = alloc_map_ion_memory(align_size,

                                        &m_pOutput_ion[i].ion_alloc_data,

-                                       &m_pOutput_ion[i].fd_ion_data,UNCACHED);

+                                       &m_pOutput_ion[i].fd_ion_data,0);

 #else

       m_pOutput_ion[i].ion_device_fd = alloc_map_ion_memory(m_sOutPortDef.nBufferSize,

                                        &m_pOutput_ion[i].ion_alloc_data,

-                                       &m_pOutput_ion[i].fd_ion_data,CACHED);

+                                       &m_pOutput_ion[i].fd_ion_data,ION_FLAG_CACHED);

 #endif

       if(m_pOutput_ion[i].ion_device_fd < 0) {

         DEBUG_PRINT_ERROR("\nERROR:ION device open() Failed");

@@ -4334,11 +4334,8 @@
 		DEBUG_PRINT_ERROR("\nInvalid input to alloc_map_ion_memory");

 		return -EINVAL;

 	}

-        if(flag == CACHED) {

-             ion_dev_flags = O_RDONLY;

-	} else if(flag == UNCACHED) {

-             ion_dev_flags = O_RDONLY | O_DSYNC;

-        }

+

+        ion_dev_flags = O_RDONLY;

         ion_device_fd = open (MEM_DEVICE,ion_dev_flags);

         if(ion_device_fd < 0)

         {

@@ -4347,11 +4344,12 @@
         }

         alloc_data->len = size;

         alloc_data->align = 4096;

-#ifdef MAX_RES_720P

+        alloc_data->flags = flag;

+#ifdef MAX_RES_720P
         alloc_data->len = (size + (alloc_data->align - 1)) & ~(alloc_data->align - 1);

-        alloc_data->flags = ION_HEAP(MEM_HEAP_ID);

+        alloc_data->heap_mask = ION_HEAP(MEM_HEAP_ID);

 #else

-        alloc_data->flags = (ION_HEAP(MEM_HEAP_ID) |

+        alloc_data->heap_mask = (ION_HEAP(MEM_HEAP_ID) |

                               ION_HEAP(ION_IOMMU_HEAP_ID));

 #endif

         rc = ioctl(ion_device_fd,ION_IOC_ALLOC,alloc_data);

diff --git a/mm-video/vidc/venc/src/video_encoder_device.cpp b/mm-video/vidc/venc/src/video_encoder_device.cpp
old mode 100644
new mode 100755
index b5d49da..e107c0d
--- a/mm-video/vidc/venc/src/video_encoder_device.cpp
+++ b/mm-video/vidc/venc/src/video_encoder_device.cpp
@@ -1234,11 +1234,12 @@
 
   recon_buff[count].alloc_data.len = size;
 #ifdef MAX_RES_720P
-  recon_buff[count].alloc_data.flags = ION_HEAP(MEM_HEAP_ID);
+  recon_buff[count].alloc_data.heap_mask = ION_HEAP(MEM_HEAP_ID);
 #else
-  recon_buff[count].alloc_data.flags = (ION_HEAP(MEM_HEAP_ID) |
+  recon_buff[count].alloc_data.heap_mask = (ION_HEAP(MEM_HEAP_ID) |
                                         ION_HEAP(ION_IOMMU_HEAP_ID));
 #endif
+  recon_buff[count].alloc_data.flags = ION_FLAG_CACHED;
   recon_buff[count].alloc_data.align = clip2(alignment);
   if (recon_buff[count].alloc_data.align != 8192)
     recon_buff[count].alloc_data.align = 8192;
diff --git a/mm-video/vidc/venc/test/venc_test.cpp b/mm-video/vidc/venc/test/venc_test.cpp
index b58592e..c9b805f 100755
--- a/mm-video/vidc/venc/test/venc_test.cpp
+++ b/mm-video/vidc/venc/test/venc_test.cpp
@@ -404,7 +404,7 @@
       return NULL;

 

 #ifdef USE_ION

-  ion_data.ion_device_fd = open (PMEM_DEVICE, O_RDONLY|O_DSYNC);

+  ion_data.ion_device_fd = open (PMEM_DEVICE, O_RDONLY);

   if(ion_data.ion_device_fd < 0)

   {

       E("\nERROR: ION Device open() Failed");

@@ -412,8 +412,9 @@
   }

   nSize = (nSize + 4095) & (~4095);

   ion_data.alloc_data.len = nSize;

-  ion_data.alloc_data.flags = 0x1 << ION_CP_MM_HEAP_ID;

+  ion_data.alloc_data.heap_mask = 0x1 << ION_CP_MM_HEAP_ID;

   ion_data.alloc_data.align = 4096;

+  ion_data.alloc_data.flags = 0;

 

   rc = ioctl(ion_data.ion_device_fd,ION_IOC_ALLOC,&ion_data.alloc_data);

   if(rc || !ion_data.alloc_data.handle) {