msm: camera: Add support for diverting RDI frames.

Add provision for RDI frames to be diverted to userspace. This may be
used if there is a need for some kind of processing to be done on the
sensor output.

Signed-off-by: Jeyaprakash Soundrapandian <jsoundra@codeaurora.org>

Conflicts:

	include/media/msm_camera.h

Change-Id: I069e9b9ca642e69fef4db0f31e6cc3138c5f2987
Signed-off-by: Praveen Ac <praveenac@codeaurora.org>

Conflicts:

	include/media/msm_camera.h

Signed-off-by: Praveen Ac <praveenac@codeaurora.org>
diff --git a/drivers/media/video/msm/msm_mctl_pp.c b/drivers/media/video/msm/msm_mctl_pp.c
old mode 100644
new mode 100755
index 246dcef..4734f03
--- a/drivers/media/video/msm/msm_mctl_pp.c
+++ b/drivers/media/video/msm/msm_mctl_pp.c
@@ -108,7 +108,8 @@
 			*pp_type = OUTPUT_TYPE_R;
 		break;
 	case MSM_V4L2_EXT_CAPTURE_MODE_RDI2:
-		*pp_divert_type = OUTPUT_TYPE_R2;
+		if (p_mctl->pp_info.pp_key & PP_RDI)
+			*pp_divert_type = OUTPUT_TYPE_R2;
 		break;
 	default:
 		break;
@@ -577,6 +578,8 @@
 			__func__);
 		return -EINVAL;
 	}
+	memset(&p_mctl->pp_info.div_frame[image_mode],
+		   0, sizeof(struct msm_free_buf));
 
 	rc = msm_mctl_release_free_buf(p_mctl, pcam_inst, &free_buf);
 	D("%s: release free buf, rc = %d, phy = 0x%x",
diff --git a/include/media/msm_camera.h b/include/media/msm_camera.h
index de97be7..121d8de 100644
--- a/include/media/msm_camera.h
+++ b/include/media/msm_camera.h
@@ -308,10 +308,11 @@
 
 #define MSM_MAX_CAMERA_CONFIGS 2
 
-#define PP_SNAP  0x01
-#define PP_RAW_SNAP ((0x01)<<1)
-#define PP_PREV  ((0x01)<<2)
-#define PP_THUMB ((0x01)<<3)
+#define PP_SNAP  BIT(0)
+#define PP_RAW_SNAP BIT(1)
+#define PP_PREV  BIT(2)
+#define PP_THUMB BIT(3)
+#define PP_RDI   BIT(4)
 #define PP_MASK		(PP_SNAP|PP_RAW_SNAP|PP_PREV|PP_THUMB)
 
 #define MSM_CAM_CTRL_CMD_DONE  0