Merge "msm: camera: isp: fix for enqueue buffer failure"

This commit is contained in:
Linux Build Service Account 2017-03-11 10:08:09 -08:00 committed by Gerrit - the friendly Code Review server
commit e35eb8badb

View file

@ -1282,6 +1282,7 @@ static int msm_isp_deinit_isp_buf_mgr(
int msm_isp_proc_buf_cmd(struct msm_isp_buf_mgr *buf_mgr, int msm_isp_proc_buf_cmd(struct msm_isp_buf_mgr *buf_mgr,
unsigned int cmd, void *arg) unsigned int cmd, void *arg)
{ {
int rc = -EINVAL;
switch (cmd) { switch (cmd) {
case VIDIOC_MSM_ISP_REQUEST_BUF: { case VIDIOC_MSM_ISP_REQUEST_BUF: {
struct msm_isp_buf_request *buf_req = arg; struct msm_isp_buf_request *buf_req = arg;
@ -1290,7 +1291,7 @@ int msm_isp_proc_buf_cmd(struct msm_isp_buf_mgr *buf_mgr,
memcpy(&buf_req_ver2, buf_req, memcpy(&buf_req_ver2, buf_req,
sizeof(struct msm_isp_buf_request)); sizeof(struct msm_isp_buf_request));
buf_req_ver2.security_mode = NON_SECURE_MODE; buf_req_ver2.security_mode = NON_SECURE_MODE;
buf_mgr->ops->request_buf(buf_mgr, &buf_req_ver2); rc = buf_mgr->ops->request_buf(buf_mgr, &buf_req_ver2);
memcpy(buf_req, &buf_req_ver2, memcpy(buf_req, &buf_req_ver2,
sizeof(struct msm_isp_buf_request)); sizeof(struct msm_isp_buf_request));
break; break;
@ -1298,35 +1299,35 @@ int msm_isp_proc_buf_cmd(struct msm_isp_buf_mgr *buf_mgr,
case VIDIOC_MSM_ISP_REQUEST_BUF_VER2: { case VIDIOC_MSM_ISP_REQUEST_BUF_VER2: {
struct msm_isp_buf_request_ver2 *buf_req_ver2 = arg; struct msm_isp_buf_request_ver2 *buf_req_ver2 = arg;
buf_mgr->ops->request_buf(buf_mgr, buf_req_ver2); rc = buf_mgr->ops->request_buf(buf_mgr, buf_req_ver2);
break; break;
} }
case VIDIOC_MSM_ISP_ENQUEUE_BUF: { case VIDIOC_MSM_ISP_ENQUEUE_BUF: {
struct msm_isp_qbuf_info *qbuf_info = arg; struct msm_isp_qbuf_info *qbuf_info = arg;
buf_mgr->ops->enqueue_buf(buf_mgr, qbuf_info); rc = buf_mgr->ops->enqueue_buf(buf_mgr, qbuf_info);
break; break;
} }
case VIDIOC_MSM_ISP_DEQUEUE_BUF: { case VIDIOC_MSM_ISP_DEQUEUE_BUF: {
struct msm_isp_qbuf_info *qbuf_info = arg; struct msm_isp_qbuf_info *qbuf_info = arg;
buf_mgr->ops->dequeue_buf(buf_mgr, qbuf_info); rc = buf_mgr->ops->dequeue_buf(buf_mgr, qbuf_info);
break; break;
} }
case VIDIOC_MSM_ISP_RELEASE_BUF: { case VIDIOC_MSM_ISP_RELEASE_BUF: {
struct msm_isp_buf_request *buf_req = arg; struct msm_isp_buf_request *buf_req = arg;
buf_mgr->ops->release_buf(buf_mgr, buf_req->handle); rc = buf_mgr->ops->release_buf(buf_mgr, buf_req->handle);
break; break;
} }
case VIDIOC_MSM_ISP_UNMAP_BUF: { case VIDIOC_MSM_ISP_UNMAP_BUF: {
struct msm_isp_unmap_buf_req *unmap_req = arg; struct msm_isp_unmap_buf_req *unmap_req = arg;
buf_mgr->ops->unmap_buf(buf_mgr, unmap_req->fd); rc = buf_mgr->ops->unmap_buf(buf_mgr, unmap_req->fd);
break; break;
} }
} }
return 0; return rc;
} }
static int msm_isp_buf_mgr_debug(struct msm_isp_buf_mgr *buf_mgr, static int msm_isp_buf_mgr_debug(struct msm_isp_buf_mgr *buf_mgr,