mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
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: Andy Shevchenko <andriy.shevchenko@intel.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
29b12ac760
commit
1ace82c7f9
@@ -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 @@ done:
|
||||
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 @@ error:
|
||||
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 @@ error:
|
||||
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 @@ out:
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user