diff options
author | Seemanta Dutta <seemanta@codeaurora.org> | 2016-03-09 21:47:49 -0800 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:22:39 -0700 |
commit | 0288b6f43bd6c2ef4b430fa89113bbfae8b79b24 (patch) | |
tree | 9418e7361ff13640a8cb9c81bab1650e75879ce2 /drivers | |
parent | bd997521e695e47805e7059ebab3434477f57204 (diff) |
Revert "msm: camera: Update camera drivers"
This reverts commit 282882c50fe26957c00bd598e8cab75d00251e2e.
Signed-off-by: Seemanta Dutta <seemanta@codeaurora.org>
Diffstat (limited to 'drivers')
22 files changed, 138 insertions, 137 deletions
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 90de202e432e..ccbc9742cb7a 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -303,5 +303,3 @@ menuconfig DVB_PLATFORM_DRIVERS if DVB_PLATFORM_DRIVERS source "drivers/media/platform/sti/c8sectpfe/Kconfig" endif #DVB_PLATFORM_DRIVERS - -source "drivers/media/platform/msm/Kconfig" diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index 9311223f034a..efa0295af87b 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -55,4 +55,3 @@ obj-$(CONFIG_VIDEO_AM437X_VPFE) += am437x/ obj-$(CONFIG_VIDEO_XILINX) += xilinx/ ccflags-y += -I$(srctree)/drivers/media/i2c -obj-y += msm/ diff --git a/drivers/media/platform/msm/Kconfig b/drivers/media/platform/msm/Kconfig index 104675252ccd..6c1947b9fef3 100644 --- a/drivers/media/platform/msm/Kconfig +++ b/drivers/media/platform/msm/Kconfig @@ -6,7 +6,7 @@ comment "Qualcomm MSM Camera And Video" menuconfig MSM_CAMERA bool "Qualcomm MSM camera and video capture support" - depends on ARCH_QCOM && VIDEO_V4L2 && I2C + depends on ARCH_MSM && VIDEO_V4L2 && I2C ---help--- Say Y here to enable selecting the video adapters for Qualcomm msm camera and video capture drivers. enabling this @@ -22,7 +22,7 @@ config MSM_CAMERA_DEBUG menuconfig MSMB_CAMERA bool "Qualcomm MSM camera and video capture 2.0 support" - depends on ARCH_QCOM && VIDEO_V4L2 && I2C + depends on ARCH_MSM && VIDEO_V4L2 && I2C ---help--- Say Y here to enable selecting the video adapters for Qualcomm msm camera and video capture 2.0, enabling this diff --git a/drivers/media/platform/msm/camera_v2/Kconfig b/drivers/media/platform/msm/camera_v2/Kconfig index 7f7cc8ee9be3..f084d07eb6ca 100644 --- a/drivers/media/platform/msm/camera_v2/Kconfig +++ b/drivers/media/platform/msm/camera_v2/Kconfig @@ -213,7 +213,7 @@ config MSM_V4L2_VIDEO_OVERLAY_DEVICE config MSMB_JPEG tristate "Qualcomm MSM Jpeg Encoder Engine support" - depends on MSMB_CAMERA && (ARCH_MSM8974 || ARCH_MSM8226 || ARCH_APQ8084 || ARCH_MSM8916 || ARCH_QCOM) + depends on MSMB_CAMERA && (ARCH_MSM8974 || ARCH_MSM8226 || ARCH_APQ8084 || ARCH_MSM8916 || ARCH_MSM) ---help--- Enable support for Jpeg Encoder/Decoder Engine for 8974. diff --git a/drivers/media/platform/msm/camera_v2/camera/camera.c b/drivers/media/platform/msm/camera_v2/camera/camera.c index 00012a771f10..bd46ad332a5f 100644 --- a/drivers/media/platform/msm/camera_v2/camera/camera.c +++ b/drivers/media/platform/msm/camera_v2/camera/camera.c @@ -27,7 +27,6 @@ #include <linux/iommu.h> #include <linux/platform_device.h> #include <media/v4l2-fh.h> -#include <media/videobuf2-v4l2.h> #include "camera.h" #include "msm.h" @@ -535,6 +534,7 @@ static int camera_v4l2_vb2_q_init(struct file *filep) /* default queue type */ q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; q->io_modes = VB2_USERPTR; + q->io_flags = 0; q->buf_struct_size = sizeof(struct msm_vb2_buffer); q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; return vb2_queue_init(q); @@ -725,7 +725,7 @@ static struct v4l2_file_operations camera_v4l2_fops = { .open = camera_v4l2_open, .poll = camera_v4l2_poll, .release = camera_v4l2_close, - .unlocked_ioctl = video_ioctl2, + .ioctl = video_ioctl2, #ifdef CONFIG_COMPAT .compat_ioctl32 = camera_v4l2_compat_ioctl, #endif diff --git a/drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c b/drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c index e09b30b345b2..f978f97d7895 100644 --- a/drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c +++ b/drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c @@ -427,10 +427,9 @@ int msm_camera_config_vreg(struct device *dev, struct camera_vreg_t *cam_vreg, goto vreg_set_voltage_fail; } if (curr_vreg->op_mode >= 0) { - rc = regulator_set_load( + rc = regulator_set_optimum_mode( reg_ptr[j], curr_vreg->op_mode); - rc = 0; if (rc < 0) { pr_err( "%s:%s set optimum mode fail\n", @@ -453,7 +452,7 @@ int msm_camera_config_vreg(struct device *dev, struct camera_vreg_t *cam_vreg, if (reg_ptr[j]) { if (regulator_count_voltages(reg_ptr[j]) > 0) { if (curr_vreg->op_mode >= 0) { - regulator_set_load( + regulator_set_optimum_mode( reg_ptr[j], 0); } regulator_set_voltage( @@ -469,7 +468,7 @@ int msm_camera_config_vreg(struct device *dev, struct camera_vreg_t *cam_vreg, vreg_unconfig: if (regulator_count_voltages(reg_ptr[j]) > 0) - regulator_set_load(reg_ptr[j], 0); + regulator_set_optimum_mode(reg_ptr[j], 0); vreg_set_opt_mode_fail: if (regulator_count_voltages(reg_ptr[j]) > 0) @@ -576,6 +575,7 @@ void msm_camera_bus_scale_cfg(uint32_t bus_perf_client, pr_err("%s: Bus Client NOT Registered!!!\n", __func__); return; } + switch (perf_setting) { case S_EXIT: rc = msm_bus_scale_client_update_request(bus_perf_client, 1); @@ -671,7 +671,7 @@ int msm_camera_config_single_vreg(struct device *dev, goto vreg_set_voltage_fail; } if (cam_vreg->op_mode >= 0) { - rc = regulator_set_load(*reg_ptr, + rc = regulator_set_optimum_mode(*reg_ptr, cam_vreg->op_mode); if (rc < 0) { pr_err( @@ -694,7 +694,7 @@ int msm_camera_config_single_vreg(struct device *dev, regulator_disable(*reg_ptr); if (regulator_count_voltages(*reg_ptr) > 0) { if (cam_vreg->op_mode >= 0) - regulator_set_load(*reg_ptr, 0); + regulator_set_optimum_mode(*reg_ptr, 0); regulator_set_voltage( *reg_ptr, 0, cam_vreg->max_voltage); } @@ -708,7 +708,7 @@ int msm_camera_config_single_vreg(struct device *dev, vreg_unconfig: if (regulator_count_voltages(*reg_ptr) > 0) - regulator_set_load(*reg_ptr, 0); + regulator_set_optimum_mode(*reg_ptr, 0); vreg_set_opt_mode_fail: if (regulator_count_voltages(*reg_ptr) > 0) diff --git a/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.c b/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.c index bc6d8b439292..3c6acc052af3 100644 --- a/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.c +++ b/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.c @@ -21,7 +21,7 @@ #include <linux/msm_ion.h> #include <media/v4l2-ioctl.h> #include <media/v4l2-event.h> -#include <media/videobuf2-v4l2.h> +#include <media/videobuf2-core.h> #include "msm_fd_dev.h" #include "msm_fd_hw.h" @@ -173,12 +173,11 @@ static int msm_fd_fill_format_from_ctx(struct v4l2_format *f, struct fd_ctx *c) * @alloc_ctxs: Array of allocated contexts for each plane. */ static int msm_fd_queue_setup(struct vb2_queue *q, - const void *parg, + const struct v4l2_format *fmt, unsigned int *num_buffers, unsigned int *num_planes, unsigned int sizes[], void *alloc_ctxs[]) { struct fd_ctx *ctx = vb2_get_drv_priv(q); - const struct v4l2_format *fmt = parg; *num_planes = 1; @@ -286,8 +285,7 @@ static struct vb2_ops msm_fd_vb2_q_ops = { * @write: True if buffer will be used for writing the data. */ static void *msm_fd_get_userptr(void *alloc_ctx, - unsigned long vaddr, unsigned long size, - enum dma_data_direction dma_dir) + unsigned long vaddr, unsigned long size, int write) { struct msm_fd_mem_pool *pool = alloc_ctx; struct msm_fd_buf_handle *buf; @@ -1155,7 +1153,7 @@ static void msm_fd_wq_handler(struct work_struct *work) dev_err(fd->dev, "Oops no active buffer empty queue\n"); return; } - ctx = vb2_get_drv_priv(active_buf->vb_v4l2_buf.vb2_buf.vb2_queue); + ctx = vb2_get_drv_priv(active_buf->vb.vb2_queue); /* Increment sequence number, 0 means sequence is not valid */ ctx->sequence++; @@ -1179,15 +1177,15 @@ static void msm_fd_wq_handler(struct work_struct *work) msm_fd_hw_schedule_next_buffer(fd); /* Return buffer to vb queue */ - active_buf->vb_v4l2_buf.sequence = ctx->fh.sequence; - vb2_buffer_done(&active_buf->vb_v4l2_buf.vb2_buf, VB2_BUF_STATE_DONE); + active_buf->vb.v4l2_buf.sequence = ctx->fh.sequence; + vb2_buffer_done(&active_buf->vb, VB2_BUF_STATE_DONE); /* Sent event */ memset(&event, 0x00, sizeof(event)); event.type = MSM_EVENT_FD; fd_event = (struct msm_fd_event *)event.u.data; fd_event->face_cnt = stats->face_cnt; - fd_event->buf_index = active_buf->vb_v4l2_buf.vb2_buf.index; + fd_event->buf_index = active_buf->vb.v4l2_buf.index; fd_event->frame_id = ctx->sequence; v4l2_event_queue_fh(&ctx->fh, &event); diff --git a/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.h b/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.h index e86a9abf7126..e0d3b6a21abd 100644 --- a/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.h +++ b/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.h @@ -16,7 +16,6 @@ #include <media/v4l2-device.h> #include <media/v4l2-fh.h> #include <media/v4l2-ctrls.h> -#include <media/videobuf2-v4l2.h> #include <linux/msm-bus.h> #include <media/msm_fd.h> #include <linux/dma-buf.h> @@ -116,7 +115,7 @@ struct msm_fd_buf_handle { * @list: Buffer is part of FD device processing queue */ struct msm_fd_buffer { - struct vb2_v4l2_buffer vb_v4l2_buf; + struct vb2_buffer vb; atomic_t active; struct completion completion; struct msm_fd_format format; diff --git a/drivers/media/platform/msm/camera_v2/fd/msm_fd_hw.c b/drivers/media/platform/msm/camera_v2/fd/msm_fd_hw.c index a0efe89f61d0..1fb34b932c72 100644 --- a/drivers/media/platform/msm/camera_v2/fd/msm_fd_hw.c +++ b/drivers/media/platform/msm/camera_v2/fd/msm_fd_hw.c @@ -1031,7 +1031,7 @@ static int msm_fd_hw_enable(struct msm_fd_device *fd, struct msm_fd_buffer *buffer) { struct msm_fd_buf_handle *buf_handle = - buffer->vb_v4l2_buf.vb2_buf.planes[0].mem_priv; + buffer->vb.planes[0].mem_priv; if (msm_fd_hw_is_runnig(fd)) { dev_err(fd->dev, "Device is busy we can not enable\n"); @@ -1125,7 +1125,7 @@ void msm_fd_hw_remove_buffers_from_queue(struct msm_fd_device *fd, active_buffer = NULL; list_for_each_entry_safe(curr_buff, temp, &fd->buf_queue, list) { - if (curr_buff->vb_v4l2_buf.vb2_buf.vb2_queue == vb2_q) { + if (curr_buff->vb.vb2_queue == vb2_q) { if (atomic_read(&curr_buff->active)) active_buffer = curr_buff; diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c b/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c index 609ecbf0dc84..4542d16a7524 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c +++ b/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c @@ -134,14 +134,14 @@ static int msm_isp_free_bufq_handle(struct msm_isp_buf_mgr *buf_mgr, static void msm_isp_copy_planes_from_v4l2_buffer( struct msm_isp_qbuf_buffer *qbuf_buf, - const struct vb2_buffer *vb2_buf) + const struct v4l2_buffer *v4l2_buf) { int i; - qbuf_buf->num_planes = vb2_buf->num_planes; + qbuf_buf->num_planes = v4l2_buf->length; for (i = 0; i < qbuf_buf->num_planes; i++) { - qbuf_buf->planes[i].addr = vb2_buf->planes[i].m.userptr; - qbuf_buf->planes[i].offset = vb2_buf->planes[i].data_offset; - qbuf_buf->planes[i].length = vb2_buf->planes[i].length; + qbuf_buf->planes[i].addr = v4l2_buf->m.planes[i].m.userptr; + qbuf_buf->planes[i].offset = v4l2_buf->m.planes[i].data_offset; + qbuf_buf->planes[i].length = v4l2_buf->m.planes[i].length; } } @@ -262,7 +262,7 @@ static int msm_isp_unmap_buf(struct msm_isp_buf_mgr *buf_mgr, } static int msm_isp_buf_prepare(struct msm_isp_buf_mgr *buf_mgr, - struct msm_isp_qbuf_info *info, struct vb2_v4l2_buffer *vb2_v4l2_buf) + struct msm_isp_qbuf_info *info, struct vb2_buffer *vb2_buf) { int rc = -1; unsigned long flags; @@ -300,10 +300,9 @@ static int msm_isp_buf_prepare(struct msm_isp_buf_mgr *buf_mgr, } spin_unlock_irqrestore(&bufq->bufq_lock, flags); - if (vb2_v4l2_buf) { - msm_isp_copy_planes_from_v4l2_buffer(&buf, - &vb2_v4l2_buf->vb2_buf); - buf_info->vb2_v4l2_buf = vb2_v4l2_buf; + if (vb2_buf) { + msm_isp_copy_planes_from_v4l2_buffer(&buf, &vb2_buf->v4l2_buf); + buf_info->vb2_buf = vb2_buf; } else { buf = info->buffer; } @@ -346,8 +345,7 @@ static int msm_isp_buf_unprepare_all(struct msm_isp_buf_mgr *buf_mgr, if (MSM_ISP_BUFFER_SRC_HAL == BUF_SRC(bufq->stream_id)) { if (buf_info->state == MSM_ISP_BUFFER_STATE_DEQUEUED || buf_info->state == MSM_ISP_BUFFER_STATE_DIVERTED) - buf_mgr->vb2_ops->put_buf( - buf_info->vb2_v4l2_buf, + buf_mgr->vb2_ops->put_buf(buf_info->vb2_buf, bufq->session_id, bufq->stream_id); } msm_isp_unprepare_v4l2_buf(buf_mgr, buf_info, bufq->stream_id); @@ -419,7 +417,7 @@ static int msm_isp_buf_unprepare(struct msm_isp_buf_mgr *buf_mgr, if (MSM_ISP_BUFFER_SRC_HAL == BUF_SRC(bufq->stream_id)) { if (buf_info->state == MSM_ISP_BUFFER_STATE_DEQUEUED || buf_info->state == MSM_ISP_BUFFER_STATE_DIVERTED) - buf_mgr->vb2_ops->put_buf(buf_info->vb2_v4l2_buf, + buf_mgr->vb2_ops->put_buf(buf_info->vb2_buf, bufq->session_id, bufq->stream_id); } msm_isp_unprepare_v4l2_buf(buf_mgr, buf_info, bufq->stream_id); @@ -436,7 +434,7 @@ static int msm_isp_get_buf(struct msm_isp_buf_mgr *buf_mgr, uint32_t id, unsigned int list_count = 0; struct msm_isp_buffer *temp_buf_info; struct msm_isp_bufq *bufq = NULL; - struct vb2_v4l2_buffer *vb2_v4l2_buf = NULL; + struct vb2_buffer *vb2_buf = NULL; if (buf_mgr->open_count == 0) { pr_err_ratelimited("%s: bug mgr open cnt = 0\n", @@ -509,23 +507,23 @@ static int msm_isp_get_buf(struct msm_isp_buf_mgr *buf_mgr, uint32_t id, } break; case MSM_ISP_BUFFER_SRC_HAL: - vb2_v4l2_buf = buf_mgr->vb2_ops->get_buf( + vb2_buf = buf_mgr->vb2_ops->get_buf( bufq->session_id, bufq->stream_id); - if (vb2_v4l2_buf) { - if (vb2_v4l2_buf->vb2_buf.index < bufq->num_bufs) { - *buf_info = &bufq->bufs[vb2_v4l2_buf - ->vb2_buf.index]; - (*buf_info)->vb2_v4l2_buf = vb2_v4l2_buf; + if (vb2_buf) { + if (vb2_buf->v4l2_buf.index < bufq->num_bufs) { + *buf_info = &bufq->bufs[vb2_buf + ->v4l2_buf.index]; + (*buf_info)->vb2_buf = vb2_buf; } else { pr_err("%s: Incorrect buf index %d\n", - __func__, vb2_v4l2_buf->vb2_buf.index); + __func__, vb2_buf->v4l2_buf.index); rc = -EINVAL; } if ((*buf_info) == NULL) { - buf_mgr->vb2_ops->put_buf(vb2_v4l2_buf, + buf_mgr->vb2_ops->put_buf(vb2_buf, bufq->session_id, bufq->stream_id); pr_err("%s: buf index %d not found!\n", - __func__, vb2_v4l2_buf->vb2_buf.index); + __func__, vb2_buf->v4l2_buf.index); rc = -EINVAL; } @@ -614,7 +612,7 @@ static int msm_isp_put_buf(struct msm_isp_buf_mgr *buf_mgr, if (MSM_ISP_BUFFER_SRC_NATIVE == BUF_SRC(bufq->stream_id)) list_add_tail(&buf_info->list, &bufq->head); else if (MSM_ISP_BUFFER_SRC_HAL == BUF_SRC(bufq->stream_id)) - buf_mgr->vb2_ops->put_buf(buf_info->vb2_v4l2_buf, + buf_mgr->vb2_ops->put_buf(buf_info->vb2_buf, bufq->session_id, bufq->stream_id); buf_info->state = MSM_ISP_BUFFER_STATE_QUEUED; rc = 0; @@ -662,7 +660,7 @@ static int msm_isp_put_buf_unsafe(struct msm_isp_buf_mgr *buf_mgr, if (BUF_SRC(bufq->stream_id)) list_add_tail(&buf_info->list, &bufq->head); else - buf_mgr->vb2_ops->put_buf(buf_info->vb2_v4l2_buf, + buf_mgr->vb2_ops->put_buf(buf_info->vb2_buf, bufq->session_id, bufq->stream_id); buf_info->state = MSM_ISP_BUFFER_STATE_QUEUED; rc = 0; @@ -761,9 +759,10 @@ static int msm_isp_buf_done(struct msm_isp_buf_mgr *buf_mgr, buf_info->state = MSM_ISP_BUFFER_STATE_DISPATCHED; spin_unlock_irqrestore(&bufq->bufq_lock, flags); if (MSM_ISP_BUFFER_SRC_HAL == BUF_SRC(bufq->stream_id)) { - buf_info->vb2_v4l2_buf->timestamp = *tv; - buf_info->vb2_v4l2_buf->sequence = frame_id; - buf_mgr->vb2_ops->buf_done(buf_info->vb2_v4l2_buf, + buf_info->vb2_buf->v4l2_buf.timestamp = *tv; + buf_info->vb2_buf->v4l2_buf.sequence = frame_id; + buf_info->vb2_buf->v4l2_buf.reserved = output_format; + buf_mgr->vb2_ops->buf_done(buf_info->vb2_buf, bufq->session_id, bufq->stream_id); } else { pr_err("%s: Error wrong buf done %d\n", __func__, @@ -1306,7 +1305,7 @@ static int msm_isp_buf_mgr_debug(struct msm_isp_buf_mgr *buf_mgr, uint32_t debug_start_addr = 0; uint32_t debug_end_addr = 0; uint32_t debug_frame_id = 0; - enum msm_isp_buffer_state debug_state = MSM_ISP_BUFFER_STATE_UNUSED; + enum msm_isp_buffer_state debug_state; unsigned long flags; struct msm_isp_bufq *bufq = NULL; diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.h b/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.h index 01ee87c2ba45..6041604dc4c0 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.h +++ b/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.h @@ -81,7 +81,7 @@ struct msm_isp_buffer { enum msm_isp_buffer_state state; /*Vb2 buffer data*/ - struct vb2_v4l2_buffer *vb2_v4l2_buf; + struct vb2_buffer *vb2_buf; /*Share buffer cache state*/ struct list_head share_list; diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp.h b/drivers/media/platform/msm/camera_v2/isp/msm_isp.h index e06deb35f6b7..a761ab58c442 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_isp.h +++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp.h @@ -19,9 +19,7 @@ #include <linux/io.h> #include <linux/list.h> #include <linux/delay.h> -#ifdef CONFIG_MSM_AVTIMER #include <linux/avtimer_kernel.h> -#endif #include <media/v4l2-subdev.h> #include <media/msmb_isp.h> #include <linux/msm-bus.h> diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c index 380d78db18d4..d1bd520fbc54 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c +++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c @@ -1530,7 +1530,7 @@ static int msm_isp_cfg_ping_pong_address(struct vfe_device *vfe_dev, dma_addr_t paddr; struct dual_vfe_resource *dual_vfe_res = NULL; uint32_t vfe_id = 0; - unsigned long flags = 0; + unsigned long flags; if (stream_idx >= VFE_AXI_SRC_MAX) { pr_err("%s: Invalid stream_idx", __func__); diff --git a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c index d3e65bd2ee36..0f4c782f120f 100644 --- a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c +++ b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c @@ -277,12 +277,11 @@ static int msm_jpegdma_update_hw_config(struct jpegdma_ctx *ctx) * @alloc_ctxs: Array of allocated contexts for each plane. */ static int msm_jpegdma_queue_setup(struct vb2_queue *q, - const void *parg, + const struct v4l2_format *fmt, unsigned int *num_buffers, unsigned int *num_planes, unsigned int sizes[], void *alloc_ctxs[]) { struct jpegdma_ctx *ctx = vb2_get_drv_priv(q); - struct v4l2_format *fmt = (struct v4l2_format *)parg; if (NULL == fmt) { switch (q->type) { @@ -312,9 +311,8 @@ static int msm_jpegdma_queue_setup(struct vb2_queue *q, static void msm_jpegdma_buf_queue(struct vb2_buffer *vb) { struct jpegdma_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue); - struct vb2_v4l2_buffer *vb2_v4l2_buf = to_vb2_v4l2_buffer(vb); - v4l2_m2m_buf_queue(ctx->m2m_ctx, vb2_v4l2_buf); + v4l2_m2m_buf_queue(ctx->m2m_ctx, vb); return; } @@ -383,8 +381,7 @@ static struct vb2_ops msm_jpegdma_vb2_q_ops = { * @write: True if buffer will be used for writing the data. */ static void *msm_jpegdma_get_userptr(void *alloc_ctx, - unsigned long vaddr, unsigned long size, - enum dma_data_direction dma_dir) + unsigned long vaddr, unsigned long size, int write) { struct msm_jpegdma_device *dma = alloc_ctx; struct msm_jpegdma_buf_handle *buf; @@ -441,7 +438,7 @@ static int msm_jpegdma_queue_init(void *priv, struct vb2_queue *src_vq, src_vq->drv_priv = ctx; src_vq->mem_ops = &msm_jpegdma_vb2_mem_ops; src_vq->ops = &msm_jpegdma_vb2_q_ops; - src_vq->buf_struct_size = sizeof(struct vb2_v4l2_buffer); + src_vq->buf_struct_size = sizeof(struct vb2_buffer); src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; ret = vb2_queue_init(src_vq); @@ -455,7 +452,7 @@ static int msm_jpegdma_queue_init(void *priv, struct vb2_queue *src_vq, dst_vq->drv_priv = ctx; dst_vq->mem_ops = &msm_jpegdma_vb2_mem_ops; dst_vq->ops = &msm_jpegdma_vb2_q_ops; - dst_vq->buf_struct_size = sizeof(struct vb2_v4l2_buffer); + dst_vq->buf_struct_size = sizeof(struct vb2_buffer); dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; ret = vb2_queue_init(dst_vq); @@ -1045,17 +1042,17 @@ static const struct v4l2_ioctl_ops fd_ioctl_ops = { * @dst_buf: Pointer to Vb2 destination buffer. */ static void msm_jpegdma_process_buffers(struct jpegdma_ctx *ctx, - struct vb2_v4l2_buffer *src_buf, struct vb2_v4l2_buffer *dst_buf) + struct vb2_buffer *src_buf, struct vb2_buffer *dst_buf) { struct msm_jpegdma_buf_handle *buf_handle; struct msm_jpegdma_addr addr; int plane_idx; int config_idx; - buf_handle = dst_buf->vb2_buf.planes[0].mem_priv; + buf_handle = dst_buf->planes[0].mem_priv; addr.out_addr = buf_handle->addr; - buf_handle = src_buf->vb2_buf.planes[0].mem_priv; + buf_handle = src_buf->planes[0].mem_priv; addr.in_addr = buf_handle->addr; plane_idx = ctx->plane_idx; @@ -1071,8 +1068,8 @@ static void msm_jpegdma_process_buffers(struct jpegdma_ctx *ctx, */ static void msm_jpegdma_device_run(void *priv) { - struct vb2_v4l2_buffer *src_buf; - struct vb2_v4l2_buffer *dst_buf; + struct vb2_buffer *src_buf; + struct vb2_buffer *dst_buf; struct jpegdma_ctx *ctx = priv; dev_dbg(ctx->jdma_device->dev, "Jpeg v4l2 dma device run E\n"); @@ -1133,8 +1130,8 @@ static struct v4l2_m2m_ops msm_jpegdma_m2m_ops = { */ void msm_jpegdma_isr_processing_done(struct msm_jpegdma_device *dma) { - struct vb2_v4l2_buffer *src_buf; - struct vb2_v4l2_buffer *dst_buf; + struct vb2_buffer *src_buf; + struct vb2_buffer *dst_buf; struct jpegdma_ctx *ctx; mutex_lock(&dma->lock); diff --git a/drivers/media/platform/msm/camera_v2/msm.c b/drivers/media/platform/msm/camera_v2/msm.c index 2f1b87148106..861ee10c1c47 100644 --- a/drivers/media/platform/msm/camera_v2/msm.c +++ b/drivers/media/platform/msm/camera_v2/msm.c @@ -334,8 +334,8 @@ static inline int __msm_sd_register_subdev(struct v4l2_subdev *sd) } #if defined(CONFIG_MEDIA_CONTROLLER) - sd->entity.info.dev.major = VIDEO_MAJOR; - sd->entity.info.dev.minor = vdev->minor; + sd->entity.info.v4l.major = VIDEO_MAJOR; + sd->entity.info.v4l.minor = vdev->minor; sd->entity.name = video_device_node_name(vdev); #endif sd->devnode = vdev; @@ -1014,7 +1014,7 @@ static struct v4l2_file_operations msm_fops = { .open = msm_open, .poll = msm_poll, .release = msm_close, - .unlocked_ioctl = video_ioctl2, + .ioctl = video_ioctl2, #ifdef CONFIG_COMPAT .compat_ioctl32 = video_ioctl2, #endif diff --git a/drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.c b/drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.c index 6af2b7629c0e..6a47a0dd130e 100644 --- a/drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.c +++ b/drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.c @@ -63,9 +63,9 @@ static int32_t msm_buf_mngr_get_buf(struct msm_buf_mngr_device *dev, return -ENOMEM; } INIT_LIST_HEAD(&new_entry->entry); - new_entry->vb2_v4l2_buf = dev->vb2_ops.get_buf(buf_info->session_id, + new_entry->vb2_buf = dev->vb2_ops.get_buf(buf_info->session_id, buf_info->stream_id); - if (!new_entry->vb2_v4l2_buf) { + if (!new_entry->vb2_buf) { pr_debug("%s:Get buf is null\n", __func__); kfree(new_entry); return -EINVAL; @@ -75,7 +75,7 @@ static int32_t msm_buf_mngr_get_buf(struct msm_buf_mngr_device *dev, spin_lock_irqsave(&dev->buf_q_spinlock, flags); list_add_tail(&new_entry->entry, &dev->buf_qhead); spin_unlock_irqrestore(&dev->buf_q_spinlock, flags); - buf_info->index = new_entry->vb2_v4l2_buf->vb2_buf.index; + buf_info->index = new_entry->vb2_buf->v4l2_buf.index; if (buf_info->type == MSM_CAMERA_BUF_MNGR_BUF_USER) { mutex_lock(&dev->cont_mutex); if (!list_empty(&dev->cont_qhead)) { @@ -101,12 +101,12 @@ static int32_t msm_buf_mngr_buf_done(struct msm_buf_mngr_device *buf_mngr_dev, list_for_each_entry_safe(bufs, save, &buf_mngr_dev->buf_qhead, entry) { if ((bufs->session_id == buf_info->session_id) && (bufs->stream_id == buf_info->stream_id) && - (bufs->vb2_v4l2_buf->vb2_buf.index == - buf_info->index)) { - bufs->vb2_v4l2_buf->sequence = buf_info->frame_id; - bufs->vb2_v4l2_buf->timestamp = buf_info->timestamp; + (bufs->vb2_buf->v4l2_buf.index == buf_info->index)) { + bufs->vb2_buf->v4l2_buf.sequence = buf_info->frame_id; + bufs->vb2_buf->v4l2_buf.timestamp = buf_info->timestamp; + bufs->vb2_buf->v4l2_buf.reserved = buf_info->reserved; ret = buf_mngr_dev->vb2_ops.buf_done - (bufs->vb2_v4l2_buf, + (bufs->vb2_buf, buf_info->session_id, buf_info->stream_id); list_del_init(&bufs->entry); @@ -130,8 +130,8 @@ static int32_t msm_buf_mngr_put_buf(struct msm_buf_mngr_device *buf_mngr_dev, list_for_each_entry_safe(bufs, save, &buf_mngr_dev->buf_qhead, entry) { if ((bufs->session_id == buf_info->session_id) && (bufs->stream_id == buf_info->stream_id) && - (bufs->vb2_v4l2_buf->vb2_buf.index == buf_info->index)) { - ret = buf_mngr_dev->vb2_ops.put_buf(bufs->vb2_v4l2_buf, + (bufs->vb2_buf->v4l2_buf.index == buf_info->index)) { + ret = buf_mngr_dev->vb2_ops.put_buf(bufs->vb2_buf, buf_info->session_id, buf_info->stream_id); list_del_init(&bufs->entry); kfree(bufs); @@ -158,11 +158,11 @@ static int32_t msm_generic_buf_mngr_flush( list_for_each_entry_safe(bufs, save, &buf_mngr_dev->buf_qhead, entry) { if ((bufs->session_id == buf_info->session_id) && (bufs->stream_id == buf_info->stream_id)) { - ret = buf_mngr_dev->vb2_ops.buf_done(bufs->vb2_v4l2_buf, + ret = buf_mngr_dev->vb2_ops.buf_done(bufs->vb2_buf, buf_info->session_id, buf_info->stream_id); pr_err("Bufs not flushed: str_id = %d buf_index = %d ret = %d\n", - buf_info->stream_id, bufs->vb2_v4l2_buf->vb2_buf.index, + buf_info->stream_id, bufs->vb2_buf->v4l2_buf.index, ret); list_del_init(&bufs->entry); kfree(bufs); @@ -250,7 +250,7 @@ static void msm_buf_mngr_sd_shutdown(struct msm_buf_mngr_device *dev, pr_info("%s: Delete invalid bufs =%lx, session_id=%u, bufs->ses_id=%d, str_id=%d, idx=%d\n", __func__, (unsigned long)bufs, session->session, bufs->session_id, bufs->stream_id, - bufs->vb2_v4l2_buf->vb2_buf.index); + bufs->vb2_buf->v4l2_buf.index); if (session->session == bufs->session_id) { list_del_init(&bufs->entry); kfree(bufs); diff --git a/drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.h b/drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.h index f5d721b8184a..af9f927cb3b4 100644 --- a/drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.h +++ b/drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.h @@ -26,7 +26,7 @@ struct msm_get_bufs { struct list_head entry; - struct vb2_v4l2_buffer *vb2_v4l2_buf; + struct vb2_buffer *vb2_buf; uint32_t session_id; uint32_t stream_id; }; diff --git a/drivers/media/platform/msm/camera_v2/msm_sd.h b/drivers/media/platform/msm/camera_v2/msm_sd.h index 60fe022dde04..7cfda49645f8 100644 --- a/drivers/media/platform/msm/camera_v2/msm_sd.h +++ b/drivers/media/platform/msm/camera_v2/msm_sd.h @@ -69,13 +69,12 @@ struct msm_sd_req_sd { }; struct msm_sd_req_vb2_q { - struct vb2_v4l2_buffer * (*get_buf)(int session_id, - unsigned int stream_id); + struct vb2_buffer * (*get_buf)(int session_id, unsigned int stream_id); struct vb2_queue * (*get_vb2_queue)(int session_id, unsigned int stream_id); - int (*put_buf)(struct vb2_v4l2_buffer *vb2_buf, int session_id, + int (*put_buf)(struct vb2_buffer *vb2_buf, int session_id, unsigned int stream_id); - int (*buf_done)(struct vb2_v4l2_buffer *vb2_buf, int session_id, + int (*buf_done)(struct vb2_buffer *vb2_buf, int session_id, unsigned int stream_id); int (*flush_buf)(int session_id, unsigned int stream_id); }; diff --git a/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c b/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c index 86c7a2ffb360..2b97f647b3cb 100644 --- a/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c +++ b/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c @@ -13,7 +13,7 @@ #include "msm_vb2.h" static int msm_vb2_queue_setup(struct vb2_queue *q, - const void *parg, + const struct v4l2_format *fmt, unsigned int *num_buffers, unsigned int *num_planes, unsigned int sizes[], void *alloc_ctxs[]) { @@ -44,14 +44,13 @@ int msm_vb2_buf_init(struct vb2_buffer *vb) { struct msm_stream *stream; struct msm_vb2_buffer *msm_vb2_buf; - struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); stream = msm_get_stream_from_vb2q(vb->vb2_queue); if (!stream) { pr_err("%s: Couldn't find stream\n", __func__); return -EINVAL; } - msm_vb2_buf = container_of(vbuf, struct msm_vb2_buffer, vb2_v4l2_buf); + msm_vb2_buf = container_of(vb, struct msm_vb2_buffer, vb2_buf); msm_vb2_buf->in_freeq = 0; return 0; @@ -62,9 +61,9 @@ static void msm_vb2_buf_queue(struct vb2_buffer *vb) struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; unsigned long flags; - struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); - msm_vb2 = container_of(vbuf, struct msm_vb2_buffer, vb2_v4l2_buf); + msm_vb2 = container_of(vb, struct msm_vb2_buffer, vb2_buf); + if (!msm_vb2) { pr_err("%s:%d] vb2_buf NULL", __func__, __LINE__); return; @@ -87,9 +86,9 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb) struct msm_stream *stream; unsigned long flags; struct msm_vb2_buffer *msm_vb2_entry, *temp; - struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); - msm_vb2 = container_of(vbuf, struct msm_vb2_buffer, vb2_v4l2_buf); + msm_vb2 = container_of(vb, struct msm_vb2_buffer, vb2_buf); + if (!msm_vb2) { pr_err("%s:%d] vb2_buf NULL", __func__, __LINE__); return; @@ -118,7 +117,7 @@ static void msm_vb2_stop_stream(struct vb2_queue *q) struct msm_vb2_buffer *msm_vb2, *temp; struct msm_stream *stream; unsigned long flags; - struct vb2_v4l2_buffer *vb2_v4l2_buf; + struct vb2_buffer *vb2_buf; stream = msm_get_stream_from_vb2q(q); if (!stream) { @@ -134,11 +133,10 @@ static void msm_vb2_stop_stream(struct vb2_queue *q) spin_lock_irqsave(&stream->stream_lock, flags); list_for_each_entry_safe(msm_vb2, temp, &(stream->queued_list), list) { - vb2_v4l2_buf = &(msm_vb2->vb2_v4l2_buf); - if (vb2_v4l2_buf->vb2_buf.state == VB2_BUF_STATE_DONE) + vb2_buf = &(msm_vb2->vb2_buf); + if (vb2_buf->state == VB2_BUF_STATE_DONE) continue; - vb2_buffer_done(&vb2_v4l2_buf->vb2_buf, - VB2_BUF_STATE_DONE); + vb2_buffer_done(vb2_buf, VB2_BUF_STATE_DONE); msm_vb2->in_freeq = 0; } spin_unlock_irqrestore(&stream->stream_lock, flags); @@ -159,8 +157,7 @@ struct vb2_ops *msm_vb2_get_q_ops(void) } static void *msm_vb2_dma_contig_get_userptr(void *alloc_ctx, - unsigned long vaddr, unsigned long size, - enum dma_data_direction dma_dir) + unsigned long vaddr, unsigned long size, int write) { struct msm_vb2_private_data *priv; priv = kzalloc(sizeof(*priv), GFP_KERNEL); @@ -193,11 +190,11 @@ static struct vb2_queue *msm_vb2_get_queue(int session_id, return msm_get_stream_vb2q(session_id, stream_id); } -static struct vb2_v4l2_buffer *msm_vb2_get_buf(int session_id, +static struct vb2_buffer *msm_vb2_get_buf(int session_id, unsigned int stream_id) { struct msm_stream *stream; - struct vb2_v4l2_buffer *vb2_v4l2_buf = NULL; + struct vb2_buffer *vb2_buf = NULL; struct msm_vb2_buffer *msm_vb2 = NULL; unsigned long flags; @@ -213,8 +210,8 @@ static struct vb2_v4l2_buffer *msm_vb2_get_buf(int session_id, } list_for_each_entry(msm_vb2, &(stream->queued_list), list) { - vb2_v4l2_buf = &(msm_vb2->vb2_v4l2_buf); - if (vb2_v4l2_buf->vb2_buf.state != VB2_BUF_STATE_ACTIVE) + vb2_buf = &(msm_vb2->vb2_buf); + if (vb2_buf->state != VB2_BUF_STATE_ACTIVE) continue; if (msm_vb2->in_freeq) @@ -224,18 +221,18 @@ static struct vb2_v4l2_buffer *msm_vb2_get_buf(int session_id, goto end; } msm_vb2 = NULL; - vb2_v4l2_buf = NULL; + vb2_buf = NULL; end: spin_unlock_irqrestore(&stream->stream_lock, flags); - return vb2_v4l2_buf; + return vb2_buf; } -static int msm_vb2_put_buf(struct vb2_v4l2_buffer *vb, int session_id, +static int msm_vb2_put_buf(struct vb2_buffer *vb, int session_id, unsigned int stream_id) { struct msm_stream *stream; struct msm_vb2_buffer *msm_vb2; - struct vb2_v4l2_buffer *vb2_v4l2_buf = NULL; + struct vb2_buffer *vb2_buf = NULL; int rc = 0; unsigned long flags; stream = msm_get_stream(session_id, stream_id); @@ -245,19 +242,18 @@ static int msm_vb2_put_buf(struct vb2_v4l2_buffer *vb, int session_id, spin_lock_irqsave(&stream->stream_lock, flags); if (vb) { list_for_each_entry(msm_vb2, &(stream->queued_list), list) { - vb2_v4l2_buf = &(msm_vb2->vb2_v4l2_buf); - if (vb2_v4l2_buf == vb) + vb2_buf = &(msm_vb2->vb2_buf); + if (vb2_buf == vb) break; } - if (WARN_ON(vb2_v4l2_buf != vb)) { + if (vb2_buf != vb) { pr_err("VB buffer is INVALID vb=%p, ses_id=%d, str_id=%d\n", vb, session_id, stream_id); spin_unlock_irqrestore(&stream->stream_lock, flags); return -EINVAL; } msm_vb2 = - container_of(vb2_v4l2_buf, struct msm_vb2_buffer, - vb2_v4l2_buf); + container_of(vb, struct msm_vb2_buffer, vb2_buf); if (msm_vb2->in_freeq) { msm_vb2->in_freeq = 0; rc = 0; @@ -272,13 +268,13 @@ static int msm_vb2_put_buf(struct vb2_v4l2_buffer *vb, int session_id, return rc; } -static int msm_vb2_buf_done(struct vb2_v4l2_buffer *vb, int session_id, +static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id, unsigned int stream_id) { unsigned long flags; struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; - struct vb2_v4l2_buffer *vb2_v4l2_buf = NULL; + struct vb2_buffer *vb2_buf = NULL; int rc = 0; stream = msm_get_stream(session_id, stream_id); @@ -287,22 +283,21 @@ static int msm_vb2_buf_done(struct vb2_v4l2_buffer *vb, int session_id, spin_lock_irqsave(&stream->stream_lock, flags); if (vb) { list_for_each_entry(msm_vb2, &(stream->queued_list), list) { - vb2_v4l2_buf = &(msm_vb2->vb2_v4l2_buf); - if (vb2_v4l2_buf == vb) + vb2_buf = &(msm_vb2->vb2_buf); + if (vb2_buf == vb) break; } - if (WARN_ON(vb2_v4l2_buf != vb)) { + if (vb2_buf != vb) { pr_err("VB buffer is INVALID ses_id=%d, str_id=%d, vb=%p\n", session_id, stream_id, vb); spin_unlock_irqrestore(&stream->stream_lock, flags); return -EINVAL; } msm_vb2 = - container_of(vb2_v4l2_buf, struct msm_vb2_buffer, vb2_v4l2_buf); + container_of(vb, struct msm_vb2_buffer, vb2_buf); /* put buf before buf done */ if (msm_vb2->in_freeq) { - vb2_buffer_done(&vb2_v4l2_buf->vb2_buf, - VB2_BUF_STATE_DONE); + vb2_buffer_done(vb, VB2_BUF_STATE_DONE); msm_vb2->in_freeq = 0; rc = 0; } else @@ -321,16 +316,16 @@ static int msm_vb2_flush_buf(int session_id, unsigned int stream_id) unsigned long flags; struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; - struct vb2_v4l2_buffer *vb2_v4l2_buf = NULL; + struct vb2_buffer *vb2_buf = NULL; stream = msm_get_stream(session_id, stream_id); if (IS_ERR_OR_NULL(stream)) return -EINVAL; spin_lock_irqsave(&stream->stream_lock, flags); list_for_each_entry(msm_vb2, &(stream->queued_list), list) { - vb2_v4l2_buf = &(msm_vb2->vb2_v4l2_buf); + vb2_buf = &(msm_vb2->vb2_buf); /* Do buf done for all buffers*/ - vb2_buffer_done(&vb2_v4l2_buf->vb2_buf, VB2_BUF_STATE_DONE); + vb2_buffer_done(vb2_buf, VB2_BUF_STATE_DONE); msm_vb2->in_freeq = 0; } spin_unlock_irqrestore(&stream->stream_lock, flags); diff --git a/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.h b/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.h index 96fa1d4c64c9..4f6be3985bb8 100644 --- a/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.h +++ b/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.h @@ -38,7 +38,7 @@ struct msm_vb2_buffer { * because both v4l2 frameworks and driver directly * cast msm_vb2_buffer to a vb2_buf. */ - struct vb2_v4l2_buffer vb2_v4l2_buf; + struct vb2_buffer vb2_buf; struct list_head list; int in_freeq; }; diff --git a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c index b6f3164d92e9..e2244629c02c 100644 --- a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c +++ b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c @@ -1378,12 +1378,31 @@ static int msm_sensor_power(struct v4l2_subdev *sd, int on) mutex_unlock(s_ctrl->msm_sensor_mutex); return rc; } + +static int msm_sensor_v4l2_enum_fmt(struct v4l2_subdev *sd, + unsigned int index, enum v4l2_mbus_pixelcode *code) +{ + struct msm_sensor_ctrl_t *s_ctrl = get_sctrl(sd); + + if ((unsigned int)index >= s_ctrl->sensor_v4l2_subdev_info_size) + return -EINVAL; + + *code = s_ctrl->sensor_v4l2_subdev_info[index].code; + return 0; +} + static struct v4l2_subdev_core_ops msm_sensor_subdev_core_ops = { .ioctl = msm_sensor_subdev_ioctl, .s_power = msm_sensor_power, }; + +static struct v4l2_subdev_video_ops msm_sensor_subdev_video_ops = { + .enum_mbus_fmt = msm_sensor_v4l2_enum_fmt, +}; + static struct v4l2_subdev_ops msm_sensor_subdev_ops = { .core = &msm_sensor_subdev_core_ops, + .video = &msm_sensor_subdev_video_ops, }; static struct msm_sensor_fn_t msm_sensor_func_tbl = { diff --git a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c index eab7985d06bd..24f10c40f655 100644 --- a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c +++ b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c @@ -71,7 +71,7 @@ static struct platform_driver msm_sensor_platform_driver = { static struct v4l2_subdev_info msm_sensor_driver_subdev_info[] = { { - .code = MEDIA_BUS_FMT_SBGGR10_1X10, + .code = V4L2_MBUS_FMT_SBGGR10_1X10, .colorspace = V4L2_COLORSPACE_JPEG, .fmt = 1, .order = 0, |