Commit 1ace82c7 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab

media: atomisp: Remove atomisp_file_fops and atomisp_file_ioctl_ops

After the file-injection support removal, atomisp_video_pipe->type never
is V4L2_BUF_TYPE_VIDEO_OUTPUT anymore, so the V4L2_BUF_TYPE_VIDEO_OUTPUT
support path in atomisp_video_init() is never hit and this path is
the only user of atomisp_file_fops and atomisp_file_ioctl_ops.

Remove atomisp_file_fops and atomisp_file_ioctl_ops and all of
the functions which are only referenced by these ops structs.
Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 29b12ac7
......@@ -4906,41 +4906,6 @@ int atomisp_try_fmt(struct video_device *vdev, struct v4l2_pix_format *f,
return 0;
}
static int
atomisp_try_fmt_file(struct atomisp_device *isp, struct v4l2_format *f)
{
u32 width = f->fmt.pix.width;
u32 height = f->fmt.pix.height;
u32 pixelformat = f->fmt.pix.pixelformat;
enum v4l2_field field = f->fmt.pix.field;
u32 depth;
if (!atomisp_get_format_bridge(pixelformat)) {
dev_err(isp->dev, "Wrong output pixelformat\n");
return -EINVAL;
}
depth = atomisp_get_pixel_depth(pixelformat);
if (field == V4L2_FIELD_ANY) {
field = V4L2_FIELD_NONE;
} else if (field != V4L2_FIELD_NONE) {
dev_err(isp->dev, "Wrong output field\n");
return -EINVAL;
}
f->fmt.pix.field = field;
f->fmt.pix.width = clamp_t(u32,
rounddown(width, (u32)ATOM_ISP_STEP_WIDTH),
ATOM_ISP_MIN_WIDTH, ATOM_ISP_MAX_WIDTH);
f->fmt.pix.height = clamp_t(u32, rounddown(height,
(u32)ATOM_ISP_STEP_HEIGHT),
ATOM_ISP_MIN_HEIGHT, ATOM_ISP_MAX_HEIGHT);
f->fmt.pix.bytesperline = (width * depth) >> 3;
return 0;
}
enum mipi_port_id __get_mipi_port(struct atomisp_device *isp,
enum atomisp_camera_port port)
{
......@@ -6078,55 +6043,6 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
return 0;
}
int atomisp_set_fmt_file(struct video_device *vdev, struct v4l2_format *f)
{
struct atomisp_device *isp = video_get_drvdata(vdev);
struct atomisp_video_pipe *pipe = atomisp_to_video_pipe(vdev);
struct atomisp_sub_device *asd = pipe->asd;
struct v4l2_mbus_framefmt ffmt = {0};
const struct atomisp_format_bridge *format_bridge;
struct v4l2_subdev_fh fh;
int ret;
if (!asd) {
dev_err(isp->dev, "%s(): asd is NULL, device is %s\n",
__func__, vdev->name);
return -EINVAL;
}
v4l2_fh_init(&fh.vfh, vdev);
dev_dbg(isp->dev, "setting fmt %ux%u 0x%x for file inject\n",
f->fmt.pix.width, f->fmt.pix.height, f->fmt.pix.pixelformat);
ret = atomisp_try_fmt_file(isp, f);
if (ret) {
dev_err(isp->dev, "atomisp_try_fmt_file err: %d\n", ret);
return ret;
}
format_bridge = atomisp_get_format_bridge(f->fmt.pix.pixelformat);
if (!format_bridge) {
dev_dbg(isp->dev, "atomisp_get_format_bridge err! fmt:0x%x\n",
f->fmt.pix.pixelformat);
return -EINVAL;
}
pipe->pix = f->fmt.pix;
atomisp_css_input_set_mode(asd, IA_CSS_INPUT_MODE_FIFO);
atomisp_css_input_configure_port(asd,
__get_mipi_port(isp, ATOMISP_CAMERA_PORT_PRIMARY), 2, 0xffff4,
0, 0, 0, 0);
ffmt.width = f->fmt.pix.width;
ffmt.height = f->fmt.pix.height;
ffmt.code = format_bridge->mbus_code;
atomisp_subdev_set_ffmt(&asd->subdev, fh.state,
V4L2_SUBDEV_FORMAT_ACTIVE,
ATOMISP_SUBDEV_PAD_SINK, &ffmt);
return 0;
}
int atomisp_set_shading_table(struct atomisp_sub_device *asd,
struct atomisp_shading_table *user_shading_table)
{
......
......@@ -269,7 +269,6 @@ int atomisp_try_fmt(struct video_device *vdev, struct v4l2_pix_format *f,
bool *res_overflow);
int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f);
int atomisp_set_fmt_file(struct video_device *vdev, struct v4l2_format *f);
int atomisp_set_shading_table(struct atomisp_sub_device *asd,
struct atomisp_shading_table *shading_table);
......
......@@ -1269,14 +1269,6 @@ static int atomisp_mmap(struct file *file, struct vm_area_struct *vma)
return ret;
}
static int atomisp_file_mmap(struct file *file, struct vm_area_struct *vma)
{
struct video_device *vdev = video_devdata(file);
struct atomisp_video_pipe *pipe = atomisp_to_video_pipe(vdev);
return videobuf_mmap_mapper(&pipe->outq, vma);
}
static __poll_t atomisp_poll(struct file *file,
struct poll_table_struct *pt)
{
......@@ -1309,15 +1301,3 @@ const struct v4l2_file_operations atomisp_fops = {
#endif
.poll = atomisp_poll,
};
const struct v4l2_file_operations atomisp_file_fops = {
.owner = THIS_MODULE,
.open = atomisp_open,
.release = atomisp_release,
.mmap = atomisp_file_mmap,
.unlocked_ioctl = video_ioctl2,
#ifdef CONFIG_COMPAT
/* .compat_ioctl32 = atomisp_compat_ioctl32, */
#endif
.poll = atomisp_poll,
};
......@@ -871,20 +871,6 @@ static int atomisp_enum_fmt_cap(struct file *file, void *fh,
return -EINVAL;
}
static int atomisp_g_fmt_file(struct file *file, void *fh,
struct v4l2_format *f)
{
struct video_device *vdev = video_devdata(file);
struct atomisp_device *isp = video_get_drvdata(vdev);
struct atomisp_video_pipe *pipe = atomisp_to_video_pipe(vdev);
rt_mutex_lock(&isp->mutex);
f->fmt.pix = pipe->pix;
rt_mutex_unlock(&isp->mutex);
return 0;
}
static int atomisp_adjust_fmt(struct v4l2_format *f)
{
const struct atomisp_format_bridge *format_bridge;
......@@ -1018,19 +1004,6 @@ static int atomisp_s_fmt_cap(struct file *file, void *fh,
return ret;
}
static int atomisp_s_fmt_file(struct file *file, void *fh,
struct v4l2_format *f)
{
struct video_device *vdev = video_devdata(file);
struct atomisp_device *isp = video_get_drvdata(vdev);
int ret;
rt_mutex_lock(&isp->mutex);
ret = atomisp_set_fmt_file(vdev, f);
rt_mutex_unlock(&isp->mutex);
return ret;
}
/*
* Free videobuffer buffer priv data
*/
......@@ -1258,22 +1231,6 @@ int atomisp_reqbufs(struct file *file, void *fh,
return ret;
}
static int atomisp_reqbufs_file(struct file *file, void *fh,
struct v4l2_requestbuffers *req)
{
struct video_device *vdev = video_devdata(file);
struct atomisp_video_pipe *pipe = atomisp_to_video_pipe(vdev);
if (req->count == 0) {
mutex_lock(&pipe->outq.vb_lock);
atomisp_videobuf_free_queue(&pipe->outq);
mutex_unlock(&pipe->outq.vb_lock);
return 0;
}
return videobuf_reqbufs(&pipe->outq, req);
}
/* application query the status of a buffer */
static int atomisp_querybuf(struct file *file, void *fh,
struct v4l2_buffer *buf)
......@@ -1284,15 +1241,6 @@ static int atomisp_querybuf(struct file *file, void *fh,
return videobuf_querybuf(&pipe->capq, buf);
}
static int atomisp_querybuf_file(struct file *file, void *fh,
struct v4l2_buffer *buf)
{
struct video_device *vdev = video_devdata(file);
struct atomisp_video_pipe *pipe = atomisp_to_video_pipe(vdev);
return videobuf_querybuf(&pipe->outq, buf);
}
/*
* Applications call the VIDIOC_QBUF ioctl to enqueue an empty (capturing) or
* filled (output) buffer in the drivers incoming queue.
......@@ -1473,48 +1421,6 @@ static int atomisp_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
return ret;
}
static int atomisp_qbuf_file(struct file *file, void *fh,
struct v4l2_buffer *buf)
{
struct video_device *vdev = video_devdata(file);
struct atomisp_device *isp = video_get_drvdata(vdev);
struct atomisp_video_pipe *pipe = atomisp_to_video_pipe(vdev);
int ret;
rt_mutex_lock(&isp->mutex);
if (isp->isp_fatal_error) {
ret = -EIO;
goto error;
}
if (!buf || buf->index >= VIDEO_MAX_FRAME ||
!pipe->outq.bufs[buf->index]) {
dev_err(isp->dev, "Invalid index for qbuf.\n");
ret = -EINVAL;
goto error;
}
if (buf->memory != V4L2_MEMORY_MMAP) {
dev_err(isp->dev, "Unsupported memory method\n");
ret = -EINVAL;
goto error;
}
if (buf->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) {
dev_err(isp->dev, "Unsupported buffer type\n");
ret = -EINVAL;
goto error;
}
rt_mutex_unlock(&isp->mutex);
return videobuf_qbuf(&pipe->outq, buf);
error:
rt_mutex_unlock(&isp->mutex);
return ret;
}
static int __get_frame_exp_id(struct atomisp_video_pipe *pipe,
struct v4l2_buffer *buf)
{
......@@ -2882,24 +2788,6 @@ static int atomisp_s_parm(struct file *file, void *fh,
return rval == -ENOIOCTLCMD ? 0 : rval;
}
static int atomisp_s_parm_file(struct file *file, void *fh,
struct v4l2_streamparm *parm)
{
struct video_device *vdev = video_devdata(file);
struct atomisp_device *isp = video_get_drvdata(vdev);
if (parm->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) {
dev_err(isp->dev, "unsupported v4l2 buf type for output\n");
return -EINVAL;
}
rt_mutex_lock(&isp->mutex);
isp->sw_contex.file_input = true;
rt_mutex_unlock(&isp->mutex);
return 0;
}
static long atomisp_vidioc_default(struct file *file, void *fh,
bool valid_prio, unsigned int cmd, void *arg)
{
......@@ -3230,13 +3118,3 @@ const struct v4l2_ioctl_ops atomisp_ioctl_ops = {
.vidioc_s_parm = atomisp_s_parm,
.vidioc_g_parm = atomisp_g_parm,
};
const struct v4l2_ioctl_ops atomisp_file_ioctl_ops = {
.vidioc_querycap = atomisp_querycap,
.vidioc_g_fmt_vid_out = atomisp_g_fmt_file,
.vidioc_s_fmt_vid_out = atomisp_s_fmt_file,
.vidioc_s_parm = atomisp_s_parm_file,
.vidioc_reqbufs = atomisp_reqbufs_file,
.vidioc_querybuf = atomisp_querybuf_file,
.vidioc_qbuf = atomisp_qbuf_file,
};
......@@ -49,12 +49,8 @@ enum ia_css_pipe_id atomisp_get_css_pipe_id(struct atomisp_sub_device
void atomisp_videobuf_free_buf(struct videobuf_buffer *vb);
extern const struct v4l2_file_operations atomisp_file_fops;
extern const struct v4l2_ioctl_ops atomisp_ioctl_ops;
extern const struct v4l2_ioctl_ops atomisp_file_ioctl_ops;
unsigned int atomisp_streaming_count(struct atomisp_device *isp);
/* compat_ioctl for 32bit userland app and 64bit kernel */
......
......@@ -442,12 +442,6 @@ int atomisp_video_init(struct atomisp_video_pipe *video, const char *name,
video->vdev.fops = &atomisp_fops;
video->vdev.ioctl_ops = &atomisp_ioctl_ops;
break;
case V4L2_BUF_TYPE_VIDEO_OUTPUT:
direction = "input";
video->pad.flags = MEDIA_PAD_FL_SOURCE;
video->vdev.fops = &atomisp_file_fops;
video->vdev.ioctl_ops = &atomisp_file_ioctl_ops;
break;
default:
return -EINVAL;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment