V4L/DVB (7942): Hardware frequency seek ioctl interface
Signed-off-by: Tobias Lorenz <tobias.lorenz@gmx.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
f90fe7a3f7
commit
1d0ba5f378
|
@ -884,6 +884,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
case VIDIOC_G_INPUT32:
|
case VIDIOC_G_INPUT32:
|
||||||
case VIDIOC_S_INPUT32:
|
case VIDIOC_S_INPUT32:
|
||||||
case VIDIOC_TRY_FMT32:
|
case VIDIOC_TRY_FMT32:
|
||||||
|
case VIDIOC_S_HW_FREQ_SEEK:
|
||||||
ret = do_video_ioctl(file, cmd, arg);
|
ret = do_video_ioctl(file, cmd, arg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -278,6 +278,7 @@ static const char *v4l2_ioctls[] = {
|
||||||
[_IOC_NR(VIDIOC_DBG_G_REGISTER)] = "VIDIOC_DBG_G_REGISTER",
|
[_IOC_NR(VIDIOC_DBG_G_REGISTER)] = "VIDIOC_DBG_G_REGISTER",
|
||||||
|
|
||||||
[_IOC_NR(VIDIOC_G_CHIP_IDENT)] = "VIDIOC_G_CHIP_IDENT",
|
[_IOC_NR(VIDIOC_G_CHIP_IDENT)] = "VIDIOC_G_CHIP_IDENT",
|
||||||
|
[_IOC_NR(VIDIOC_S_HW_FREQ_SEEK)] = "VIDIOC_S_HW_FREQ_SEEK",
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
#define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
|
#define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
|
||||||
|
@ -1763,6 +1764,17 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
|
||||||
ret = vfd->vidioc_default(file, fh, cmd, arg);
|
ret = vfd->vidioc_default(file, fh, cmd, arg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case VIDIOC_S_HW_FREQ_SEEK:
|
||||||
|
{
|
||||||
|
struct v4l2_hw_freq_seek *p = arg;
|
||||||
|
if (!vfd->vidioc_s_hw_freq_seek)
|
||||||
|
break;
|
||||||
|
dbgarg(cmd,
|
||||||
|
"tuner=%d, type=%d, seek_upward=%d, wrap_around=%d\n",
|
||||||
|
p->tuner, p->type, p->seek_upward, p->wrap_around);
|
||||||
|
ret = vfd->vidioc_s_hw_freq_seek(file, fh, p);
|
||||||
|
break;
|
||||||
|
}
|
||||||
} /* switch */
|
} /* switch */
|
||||||
|
|
||||||
if (vfd->debug & V4L2_DEBUG_IOCTL_ARG) {
|
if (vfd->debug & V4L2_DEBUG_IOCTL_ARG) {
|
||||||
|
|
|
@ -246,6 +246,7 @@ struct v4l2_capability
|
||||||
#define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */
|
#define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */
|
||||||
#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */
|
#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */
|
||||||
#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */
|
#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */
|
||||||
|
#define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */
|
||||||
|
|
||||||
#define V4L2_CAP_TUNER 0x00010000 /* has a tuner */
|
#define V4L2_CAP_TUNER 0x00010000 /* has a tuner */
|
||||||
#define V4L2_CAP_AUDIO 0x00020000 /* has audio support */
|
#define V4L2_CAP_AUDIO 0x00020000 /* has audio support */
|
||||||
|
@ -1156,6 +1157,14 @@ struct v4l2_frequency
|
||||||
__u32 reserved[8];
|
__u32 reserved[8];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct v4l2_hw_freq_seek {
|
||||||
|
__u32 tuner;
|
||||||
|
enum v4l2_tuner_type type;
|
||||||
|
__u32 seek_upward;
|
||||||
|
__u32 wrap_around;
|
||||||
|
__u32 reserved[8];
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A U D I O
|
* A U D I O
|
||||||
*/
|
*/
|
||||||
|
@ -1441,6 +1450,7 @@ struct v4l2_chip_ident {
|
||||||
|
|
||||||
#define VIDIOC_G_CHIP_IDENT _IOWR ('V', 81, struct v4l2_chip_ident)
|
#define VIDIOC_G_CHIP_IDENT _IOWR ('V', 81, struct v4l2_chip_ident)
|
||||||
#endif
|
#endif
|
||||||
|
#define VIDIOC_S_HW_FREQ_SEEK _IOW ('V', 82, struct v4l2_hw_freq_seek)
|
||||||
|
|
||||||
#ifdef __OLD_VIDIOC_
|
#ifdef __OLD_VIDIOC_
|
||||||
/* for compatibility, will go away some day */
|
/* for compatibility, will go away some day */
|
||||||
|
|
|
@ -306,6 +306,8 @@ struct video_device
|
||||||
/* Log status ioctl */
|
/* Log status ioctl */
|
||||||
int (*vidioc_log_status) (struct file *file, void *fh);
|
int (*vidioc_log_status) (struct file *file, void *fh);
|
||||||
|
|
||||||
|
int (*vidioc_s_hw_freq_seek) (struct file *file, void *fh,
|
||||||
|
struct v4l2_hw_freq_seek *a);
|
||||||
|
|
||||||
/* Debugging ioctls */
|
/* Debugging ioctls */
|
||||||
#ifdef CONFIG_VIDEO_ADV_DEBUG
|
#ifdef CONFIG_VIDEO_ADV_DEBUG
|
||||||
|
|
Loading…
Reference in New Issue