diff options
| -rw-r--r-- | drivers/video/msm/ba/Kconfig | 3 | ||||
| -rw-r--r-- | drivers/video/msm/ba/msm_ba.c | 81 | ||||
| -rw-r--r-- | drivers/video/msm/ba/msm_ba_common.c | 3 | ||||
| -rw-r--r-- | drivers/video/msm/ba/msm_ba_internal.h | 5 | ||||
| -rw-r--r-- | drivers/video/msm/ba/msm_v4l2_ba.c | 22 |
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, }; |
