From b6b753dfc277966a6233801616279791a0e30a65 Mon Sep 17 00:00:00 2001 From: Iliya Varadzhakov Date: Thu, 30 May 2013 14:44:07 -0700 Subject: [PATCH] msm: camera2: cpp: Append frame buffers to the list In case of late buffer allocation, allocated buffers have to be appended to the existing queues. Change-Id: Ie14f00038e86b9d7c8caa01587a2ed1aee7d80e8 Signed-off-by: Iliya Varadzhakov --- .../media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c | 10 +++++++--- include/media/msmb_pproc.h | 3 +++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c b/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c index 00d4bcadfad..bba774d5a44 100755 --- a/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c +++ b/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c @@ -1471,6 +1471,7 @@ long msm_cpp_subdev_ioctl(struct v4l2_subdev *sd, case VIDIOC_MSM_CPP_FLUSH_QUEUE: rc = msm_cpp_flush_frames(cpp_dev); break; + case VIDIOC_MSM_CPP_APPEND_STREAM_BUFF_INFO: case VIDIOC_MSM_CPP_ENQUEUE_STREAM_BUFF_INFO: { struct msm_cpp_stream_buff_info_t *u_stream_buff_info; struct msm_cpp_stream_buff_info_t k_stream_buff_info; @@ -1538,9 +1539,12 @@ long msm_cpp_subdev_ioctl(struct v4l2_subdev *sd, return -EINVAL; } - rc = msm_cpp_add_buff_queue_entry(cpp_dev, - ((k_stream_buff_info.identity >> 16) & 0xFFFF), - (k_stream_buff_info.identity & 0xFFFF)); + if (cmd != VIDIOC_MSM_CPP_APPEND_STREAM_BUFF_INFO) { + rc = msm_cpp_add_buff_queue_entry(cpp_dev, + ((k_stream_buff_info.identity >> 16) & 0xFFFF), + (k_stream_buff_info.identity & 0xFFFF)); + } + if (!rc) rc = msm_cpp_enqueue_buff_info_list(cpp_dev, &k_stream_buff_info); diff --git a/include/media/msmb_pproc.h b/include/media/msmb_pproc.h index ed4ffa2f72e..26c10481edb 100644 --- a/include/media/msmb_pproc.h +++ b/include/media/msmb_pproc.h @@ -229,6 +229,9 @@ struct msm_pproc_queue_buf_info { #define VIDIOC_MSM_CPP_QUEUE_BUF \ _IOWR('V', BASE_VIDIOC_PRIVATE + 14, struct msm_camera_v4l2_ioctl_t) +#define VIDIOC_MSM_CPP_APPEND_STREAM_BUFF_INFO \ + _IOWR('V', BASE_VIDIOC_PRIVATE + 15, struct msm_camera_v4l2_ioctl_t) + #define V4L2_EVENT_CPP_FRAME_DONE (V4L2_EVENT_PRIVATE_START + 0) #define V4L2_EVENT_VPE_FRAME_DONE (V4L2_EVENT_PRIVATE_START + 1)