summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSeemanta Dutta <seemanta@codeaurora.org>2016-03-09 21:47:49 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:22:39 -0700
commit0288b6f43bd6c2ef4b430fa89113bbfae8b79b24 (patch)
tree9418e7361ff13640a8cb9c81bab1650e75879ce2 /drivers
parentbd997521e695e47805e7059ebab3434477f57204 (diff)
Revert "msm: camera: Update camera drivers"
This reverts commit 282882c50fe26957c00bd598e8cab75d00251e2e. Signed-off-by: Seemanta Dutta <seemanta@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/platform/Kconfig2
-rw-r--r--drivers/media/platform/Makefile1
-rw-r--r--drivers/media/platform/msm/Kconfig4
-rw-r--r--drivers/media/platform/msm/camera_v2/Kconfig2
-rw-r--r--drivers/media/platform/msm/camera_v2/camera/camera.c4
-rw-r--r--drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c14
-rw-r--r--drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.c16
-rw-r--r--drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.h3
-rw-r--r--drivers/media/platform/msm/camera_v2/fd/msm_fd_hw.c4
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c57
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.h2
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_isp.h2
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c2
-rw-r--r--drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c27
-rw-r--r--drivers/media/platform/msm/camera_v2/msm.c6
-rw-r--r--drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.c26
-rw-r--r--drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.h2
-rw-r--r--drivers/media/platform/msm/camera_v2/msm_sd.h7
-rw-r--r--drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c71
-rw-r--r--drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.h2
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c19
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c2
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,