msm: secure_buffer: Add VMID_CP_CAMERA_PREVIEW

Add support for VMID_CP_CAMERA_PREVIEW

Change-Id: Ifacc1ff95262c6240283d19cf02dcac37933c141
Signed-off-by: Liam Mark <lmark@codeaurora.org>
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
diff --git a/drivers/soc/qcom/secure_buffer.c b/drivers/soc/qcom/secure_buffer.c
index deb12a5..ba65e68 100644
--- a/drivers/soc/qcom/secure_buffer.c
+++ b/drivers/soc/qcom/secure_buffer.c
@@ -419,6 +419,8 @@
 		return "VMID_WLAN";
 	case VMID_WLAN_CE:
 		return "VMID_WLAN_CE";
+	case VMID_CP_CAMERA_PREVIEW:
+		return "VMID_CP_CAMERA_PREVIEW";
 	case VMID_INVAL:
 		return "VMID_INVAL";
 	default:
diff --git a/drivers/staging/android/ion/msm/msm_ion.c b/drivers/staging/android/ion/msm/msm_ion.c
index c728b30..ba0bf11 100644
--- a/drivers/staging/android/ion/msm/msm_ion.c
+++ b/drivers/staging/android/ion/msm/msm_ion.c
@@ -598,7 +598,8 @@
 		vmid == VMID_CP_NON_PIXEL ||
 		vmid == VMID_CP_CAMERA ||
 		vmid == VMID_CP_SEC_DISPLAY ||
-		vmid == VMID_CP_APP);
+		vmid == VMID_CP_APP ||
+		vmid == VMID_CP_CAMERA_PREVIEW);
 }
 
 int get_secure_vmid(unsigned long flags)
@@ -617,6 +618,8 @@
 		return VMID_CP_SEC_DISPLAY;
 	if (flags & ION_FLAG_CP_APP)
 		return VMID_CP_APP;
+	if (flags & ION_FLAG_CP_CAMERA_PREVIEW)
+		return VMID_CP_CAMERA_PREVIEW;
 	return -EINVAL;
 }
 /* fix up the cases where the ioctl direction bits are incorrect */
diff --git a/drivers/staging/android/uapi/msm_ion.h b/drivers/staging/android/uapi/msm_ion.h
index 2ba850c..db4fc63 100644
--- a/drivers/staging/android/uapi/msm_ion.h
+++ b/drivers/staging/android/uapi/msm_ion.h
@@ -3,6 +3,8 @@
 
 #include "ion.h"
 
+#define ION_BIT(nr) (1UL << (nr))
+
 enum msm_ion_heap_types {
 	ION_HEAP_TYPE_MSM_START = ION_HEAP_TYPE_CUSTOM + 1,
 	ION_HEAP_TYPE_SECURE_DMA = ION_HEAP_TYPE_MSM_START,
@@ -76,34 +78,36 @@
  * Flags to be used when allocating from the secure heap for
  * content protection
  */
-#define ION_FLAG_CP_TOUCH ((1 << 17))
-#define ION_FLAG_CP_BITSTREAM ((1 << 18))
-#define ION_FLAG_CP_PIXEL  ((1 << 19))
-#define ION_FLAG_CP_NON_PIXEL ((1 << 20))
-#define ION_FLAG_CP_CAMERA ((1 << 21))
-#define ION_FLAG_CP_HLOS ((1 << 22))
-#define ION_FLAG_CP_HLOS_FREE ((1 << 23))
-#define ION_FLAG_CP_SEC_DISPLAY ((1 << 25))
-#define ION_FLAG_CP_APP ((1 << 26))
+#define ION_FLAG_CP_TOUCH		ION_BIT(17)
+#define ION_FLAG_CP_BITSTREAM		ION_BIT(18)
+#define ION_FLAG_CP_PIXEL		ION_BIT(19)
+#define ION_FLAG_CP_NON_PIXEL		ION_BIT(20)
+#define ION_FLAG_CP_CAMERA		ION_BIT(21)
+#define ION_FLAG_CP_HLOS		ION_BIT(22)
+#define ION_FLAG_CP_HLOS_FREE		ION_BIT(23)
+#define ION_FLAG_CP_SEC_DISPLAY		ION_BIT(25)
+#define ION_FLAG_CP_APP			ION_BIT(26)
+#define ION_FLAG_CP_CAMERA_PREVIEW	ION_BIT(27)
+
 
 /**
  * Flag to use when allocating to indicate that a heap is secure.
  * Do NOT use BIT macro since it is defined in #ifdef __KERNEL__
  */
-#define ION_FLAG_SECURE (1 << (ION_HEAP_ID_RESERVED))
+#define ION_FLAG_SECURE			ION_BIT(ION_HEAP_ID_RESERVED)
 
 /**
  * Flag for clients to force contiguous memort allocation
  *
  * Use of this flag is carefully monitored!
  */
-#define ION_FLAG_FORCE_CONTIGUOUS ((1 << 30))
+#define ION_FLAG_FORCE_CONTIGUOUS	ION_BIT(30)
 
 /*
  * Used in conjunction with heap which pool memory to force an allocation
  * to come from the page allocator directly instead of from the pool allocation
  */
-#define ION_FLAG_POOL_FORCE_ALLOC ((1 << 16))
+#define ION_FLAG_POOL_FORCE_ALLOC	ION_BIT(16)
 
 /**
  * Deprecated! Please use the corresponding ION_FLAG_*
@@ -114,7 +118,7 @@
 /**
  * Macro should be used with ion_heap_ids defined above.
  */
-#define ION_HEAP(bit) (1 << (bit))
+#define ION_HEAP(bit)			ION_BIT(bit)
 
 #define ION_ADSP_HEAP_NAME	"adsp"
 #define ION_SYSTEM_HEAP_NAME	"system"
diff --git a/include/soc/qcom/secure_buffer.h b/include/soc/qcom/secure_buffer.h
index 7615776..f0f81a9 100644
--- a/include/soc/qcom/secure_buffer.h
+++ b/include/soc/qcom/secure_buffer.h
@@ -37,6 +37,7 @@
 	VMID_CP_APP = 0x12,
 	VMID_WLAN = 0x18,
 	VMID_WLAN_CE = 0x19,
+	VMID_CP_CAMERA_PREVIEW = 0x1D,
 	VMID_LAST,
 	VMID_INVAL = -1
 };