summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/msm/ba/Kconfig3
-rw-r--r--drivers/video/msm/ba/msm_ba.c81
-rw-r--r--drivers/video/msm/ba/msm_ba_common.c3
-rw-r--r--drivers/video/msm/ba/msm_ba_internal.h5
-rw-r--r--drivers/video/msm/ba/msm_v4l2_ba.c22
5 files changed, 23 insertions, 91 deletions
diff --git a/drivers/video/msm/ba/Kconfig b/drivers/video/msm/ba/Kconfig
index ebcf4ff198f1..1ebc7eceeda6 100644
--- a/drivers/video/msm/ba/Kconfig
+++ b/drivers/video/msm/ba/Kconfig
@@ -5,5 +5,8 @@
config MSM_BA_V4L2
tristate "Qualcomm technologies Inc MSM V4L2 based BA driver"
depends on VIDEO_V4L2
+ select FB_CFB_FILLRECT
+ select FB_CFB_COPYAREA
+ select FB_CFB_IMAGEBLIT
---help---
Enables support for the MSM V4L2 bridge abstraction
diff --git a/drivers/video/msm/ba/msm_ba.c b/drivers/video/msm/ba/msm_ba.c
index 3ebc1c38fa3e..3e0838115ca6 100644
--- a/drivers/video/msm/ba/msm_ba.c
+++ b/drivers/video/msm/ba/msm_ba.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -69,54 +69,6 @@ int msm_ba_querycap(void *instance, struct v4l2_capability *cap)
}
EXPORT_SYMBOL(msm_ba_querycap);
-int msm_ba_g_priority(void *instance, enum v4l2_priority *prio)
-{
- struct msm_ba_inst *inst = instance;
- struct msm_ba_input *ba_input = NULL;
- int rc = 0;
-
- if (!inst || !prio) {
- dprintk(BA_ERR,
- "Invalid prio, inst = 0x%p, prio = 0x%p", inst, prio);
- return -EINVAL;
- }
-
- ba_input = msm_ba_find_input(inst->sd_input.index);
- if (!ba_input) {
- dprintk(BA_ERR, "Could not find input index: %d",
- inst->sd_input.index);
- return -EINVAL;
- }
- *prio = ba_input->prio;
-
- return rc;
-}
-EXPORT_SYMBOL(msm_ba_g_priority);
-
-int msm_ba_s_priority(void *instance, enum v4l2_priority prio)
-{
- struct msm_ba_inst *inst = instance;
- struct msm_ba_input *ba_input = NULL;
- int rc = 0;
-
- dprintk(BA_DBG, "Enter %s, prio: %d", __func__, prio);
-
- if (!inst)
- return -EINVAL;
-
- ba_input = msm_ba_find_input(inst->sd_input.index);
- if (!ba_input) {
- dprintk(BA_ERR, "Could not find input index: %d",
- inst->sd_input.index);
- return -EINVAL;
- }
- ba_input->prio = prio;
- inst->input_prio = prio;
-
- return rc;
-}
-EXPORT_SYMBOL(msm_ba_s_priority);
-
int msm_ba_s_parm(void *instance, struct v4l2_streamparm *a)
{
struct msm_ba_inst *inst = instance;
@@ -210,8 +162,7 @@ int msm_ba_s_input(void *instance, unsigned int index)
return -EINVAL;
}
if (ba_input->in_use &&
- ba_input->prio == V4L2_PRIORITY_RECORD &&
- ba_input->prio != inst->input_prio) {
+ inst->event_handler.prio == V4L2_PRIORITY_RECORD) {
dprintk(BA_WARN, "Input %d in use", index);
return -EBUSY;
}
@@ -354,7 +305,7 @@ int msm_ba_g_fmt(void *instance, struct v4l2_format *f)
struct msm_ba_input *ba_input = NULL;
v4l2_std_id new_std = V4L2_STD_UNKNOWN;
struct v4l2_dv_timings sd_dv_timings;
- struct v4l2_mbus_framefmt sd_mbus_fmt;
+ struct v4l2_subdev_format sd_fmt;
int rc = 0;
if (!inst || !f)
@@ -388,29 +339,29 @@ int msm_ba_g_fmt(void *instance, struct v4l2_format *f)
}
}
- rc = v4l2_subdev_call(sd, video, g_mbus_fmt, &sd_mbus_fmt);
+ rc = v4l2_subdev_call(sd, pad, get_fmt, NULL, &sd_fmt);
if (rc) {
- dprintk(BA_ERR, "g_mbus_fmt failed %d for sd: %s",
+ dprintk(BA_ERR, "get_fmt failed %d for sd: %s",
rc, sd->name);
} else {
- f->fmt.pix.height = sd_mbus_fmt.height;
- f->fmt.pix.width = sd_mbus_fmt.width;
- switch (sd_mbus_fmt.code) {
- case V4L2_MBUS_FMT_YUYV8_2X8:
+ f->fmt.pix.height = sd_fmt.format.height;
+ f->fmt.pix.width = sd_fmt.format.width;
+ switch (sd_fmt.format.code) {
+ case MEDIA_BUS_FMT_YUYV8_2X8:
f->fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
break;
- case V4L2_MBUS_FMT_YVYU8_2X8:
+ case MEDIA_BUS_FMT_YVYU8_2X8:
f->fmt.pix.pixelformat = V4L2_PIX_FMT_YVYU;
break;
- case V4L2_MBUS_FMT_VYUY8_2X8:
+ case MEDIA_BUS_FMT_VYUY8_2X8:
f->fmt.pix.pixelformat = V4L2_PIX_FMT_VYUY;
break;
- case V4L2_MBUS_FMT_UYVY8_2X8:
+ case MEDIA_BUS_FMT_UYVY8_2X8:
f->fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY;
break;
default:
dprintk(BA_ERR, "Unknown sd_mbus_fmt.code 0x%x",
- sd_mbus_fmt.code);
+ sd_fmt.format.code);
f->fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY;
break;
}
@@ -713,8 +664,8 @@ static int msm_ba_register_v4l2_subdev(struct v4l2_device *v4l2_dev,
kfree(vdev);
} else {
#if defined(CONFIG_MEDIA_CONTROLLER)
- sd->entity.info.v4l.major = VIDEO_MAJOR;
- sd->entity.info.v4l.minor = vdev->minor;
+ sd->entity.info.dev.major = VIDEO_MAJOR;
+ sd->entity.info.dev.minor = vdev->minor;
sd->entity.name = video_device_node_name(vdev);
#endif
sd->devnode = vdev;
@@ -893,7 +844,7 @@ void *msm_ba_open(const struct msm_ba_ext_ops *ext_ops)
dev_ctxt->state = BA_DEV_INIT_DONE;
inst->state = MSM_BA_DEV_INIT_DONE;
inst->sd_input.index = 0;
- inst->input_prio = V4L2_PRIORITY_DEFAULT;
+ inst->event_handler.prio = V4L2_PRIORITY_DEFAULT;
inst->debugfs_root =
msm_ba_debugfs_init_inst(inst, dev_ctxt->debugfs_root);
diff --git a/drivers/video/msm/ba/msm_ba_common.c b/drivers/video/msm/ba/msm_ba_common.c
index 9915c23f459c..cc8eb2da3e3b 100644
--- a/drivers/video/msm/ba/msm_ba_common.c
+++ b/drivers/video/msm/ba/msm_ba_common.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -214,7 +214,6 @@ void msm_ba_add_inputs(struct v4l2_subdev *sd)
input->ba_out = msm_ba_inp_cfg[i].ba_out;
input->ba_node_addr = msm_ba_inp_cfg[i].ba_node;
input->ba_ip_idx = i;
- input->prio = V4L2_PRIORITY_DEFAULT;
input->input_user_type =
msm_ba_inp_cfg[i].input_user_type;
input->sd = sd;
diff --git a/drivers/video/msm/ba/msm_ba_internal.h b/drivers/video/msm/ba/msm_ba_internal.h
index 6328d1d429d1..bd52e8e400ce 100644
--- a/drivers/video/msm/ba/msm_ba_internal.h
+++ b/drivers/video/msm/ba/msm_ba_internal.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -143,7 +143,6 @@ struct msm_ba_input {
int signal_status;
int in_use;
int ba_out_in_use;
- enum v4l2_priority prio;
enum msm_ba_input_usr_type input_user_type;
};
@@ -180,8 +179,6 @@ struct msm_ba_inst {
struct msm_ba_dev *dev_ctxt;
struct v4l2_input sd_input;
- /* current input priority */
- enum v4l2_priority input_prio;
struct v4l2_output sd_output;
struct v4l2_subdev *sd;
int state;
diff --git a/drivers/video/msm/ba/msm_v4l2_ba.c b/drivers/video/msm/ba/msm_v4l2_ba.c
index 8e2e12c1c0ad..0cd3fc3b238f 100644
--- a/drivers/video/msm/ba/msm_v4l2_ba.c
+++ b/drivers/video/msm/ba/msm_v4l2_ba.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -83,22 +83,6 @@ static int msm_ba_v4l2_querycap(struct file *filp, void *fh,
return msm_ba_querycap((void *)ba_inst, cap);
}
-static int msm_ba_v4l2_g_priority(struct file *filp, void *fh,
- enum v4l2_priority *prio)
-{
- struct msm_ba_inst *ba_inst = get_ba_inst(filp, fh);
-
- return msm_ba_g_priority((void *)ba_inst, prio);
-}
-
-static int msm_ba_v4l2_s_priority(struct file *filp, void *fh,
- enum v4l2_priority prio)
-{
- struct msm_ba_inst *ba_inst = get_ba_inst(filp, fh);
-
- return msm_ba_s_priority((void *)ba_inst, prio);
-}
-
int msm_ba_v4l2_enum_input(struct file *file, void *fh,
struct v4l2_input *input)
{
@@ -245,8 +229,6 @@ static int msm_ba_v4l2_g_parm(struct file *file, void *fh,
static const struct v4l2_ioctl_ops msm_ba_v4l2_ioctl_ops = {
.vidioc_querycap = msm_ba_v4l2_querycap,
- .vidioc_g_priority = msm_ba_v4l2_g_priority,
- .vidioc_s_priority = msm_ba_v4l2_s_priority,
.vidioc_enum_fmt_vid_cap = msm_ba_v4l2_enum_fmt,
.vidioc_enum_fmt_vid_out = msm_ba_v4l2_enum_fmt,
.vidioc_s_fmt_vid_cap = msm_ba_v4l2_s_fmt,
@@ -286,7 +268,7 @@ static const struct v4l2_file_operations msm_ba_v4l2_ba_fops = {
.owner = THIS_MODULE,
.open = msm_ba_v4l2_open,
.release = msm_ba_v4l2_close,
- .ioctl = video_ioctl2,
+ .unlocked_ioctl = video_ioctl2,
.poll = msm_ba_v4l2_poll,
};