The ivtv driver has gained support a long time ago for audio
and video settings via V4L2 API.
Let's drop support of the duplicated controls implemented
abusing the DVB API.
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
drivers/media/pci/ivtv/Kconfig | 12 --
drivers/media/pci/ivtv/ivtv-driver.h | 2 -
drivers/media/pci/ivtv/ivtv-ioctl.c | 221 ---------------------------
3 files changed, 235 deletions(-)
diff --git a/drivers/media/pci/ivtv/Kconfig b/drivers/media/pci/ivtv/Kconfig
index c729e54692c4..e70502902b73 100644
--- a/drivers/media/pci/ivtv/Kconfig
+++ b/drivers/media/pci/ivtv/Kconfig
@@ -29,18 +29,6 @@ config VIDEO_IVTV
To compile this driver as a module, choose M here: the
module will be called ivtv.
-config VIDEO_IVTV_DEPRECATED_IOCTLS
- bool "enable the DVB ioctls abuse on ivtv driver"
- depends on VIDEO_IVTV
- help
- Enable the usage of the a DVB set of ioctls that were abused by
- IVTV driver for a while.
-
- Those ioctls were not needed for a long time, as IVTV implements
- the proper V4L2 ioctls since kernel 3.3.
-
- If unsure, say N.
-
config VIDEO_IVTV_ALSA
tristate "Conexant cx23415/cx23416 ALSA interface for PCM audio capture"
depends on VIDEO_IVTV && SND
diff --git a/drivers/media/pci/ivtv/ivtv-driver.h b/drivers/media/pci/ivtv/ivtv-driver.h
index e5efe525ad7b..4cf92dee6527 100644
--- a/drivers/media/pci/ivtv/ivtv-driver.h
+++ b/drivers/media/pci/ivtv/ivtv-driver.h
@@ -57,8 +57,6 @@
#include <linux/uaccess.h>
#include <asm/byteorder.h>
-#include <linux/dvb/video.h>
-#include <linux/dvb/audio.h>
#include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-ctrls.h>
diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c b/drivers/media/pci/ivtv/ivtv-ioctl.c
index 35dccb31174c..da19b2e95e6c 100644
--- a/drivers/media/pci/ivtv/ivtv-ioctl.c
+++ b/drivers/media/pci/ivtv/ivtv-ioctl.c
@@ -23,11 +23,6 @@
#include <media/i2c/saa7127.h>
#include <media/tveeprom.h>
#include <media/v4l2-event.h>
-#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
-#include <linux/compat.h>
-#include <linux/dvb/audio.h>
-#include <linux/dvb/video.h>
-#endif
u16 ivtv_service2vbi(int type)
{
@@ -1606,38 +1601,11 @@ static int ivtv_try_decoder_cmd(struct file *file, void *fh, struct v4l2_decoder
return ivtv_video_command(itv, id, dec, true);
}
-#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
-static __inline__ void warn_deprecated_ioctl(const char *name)
-{
- pr_warn_once("warning: the %s ioctl is deprecated. Don't use it, as it will be removed soon\n",
- name);
-}
-
-#ifdef CONFIG_COMPAT
-struct compat_video_event {
- __s32 type;
- /* unused, make sure to use atomic time for y2038 if it ever gets used */
- compat_long_t timestamp;
- union {
- video_size_t size;
- unsigned int frame_rate; /* in frames per 1000sec */
- unsigned char vsync_field; /* unknown/odd/even/progressive */
- } u;
-};
-#define VIDEO_GET_EVENT32 _IOR('o', 28, struct compat_video_event)
-#endif
-
-#endif
-
static int ivtv_decoder_ioctls(struct file *filp, unsigned int cmd, void *arg)
{
struct ivtv_open_id *id = fh2id(filp->private_data);
struct ivtv *itv = id->itv;
struct ivtv_stream *s = &itv->streams[id->type];
-#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
- int nonblocking = filp->f_flags & O_NONBLOCK;
- unsigned long iarg = (unsigned long)arg;
-#endif
switch (cmd) {
case IVTV_IOC_DMA_FRAME: {
@@ -1669,169 +1637,6 @@ static int ivtv_decoder_ioctls(struct file *filp, unsigned int cmd, void *arg)
if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
return -EINVAL;
return ivtv_passthrough_mode(itv, *(int *)arg != 0);
-#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
- case VIDEO_GET_PTS: {
- s64 *pts = arg;
- s64 frame;
-
- warn_deprecated_ioctl("VIDEO_GET_PTS");
- if (s->type < IVTV_DEC_STREAM_TYPE_MPG) {
- *pts = s->dma_pts;
- break;
- }
- if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
- return -EINVAL;
- return ivtv_g_pts_frame(itv, pts, &frame);
- }
-
- case VIDEO_GET_FRAME_COUNT: {
- s64 *frame = arg;
- s64 pts;
-
- warn_deprecated_ioctl("VIDEO_GET_FRAME_COUNT");
- if (s->type < IVTV_DEC_STREAM_TYPE_MPG) {
- *frame = 0;
- break;
- }
- if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
- return -EINVAL;
- return ivtv_g_pts_frame(itv, &pts, frame);
- }
-
- case VIDEO_PLAY: {
- struct v4l2_decoder_cmd dc;
-
- warn_deprecated_ioctl("VIDEO_PLAY");
- memset(&dc, 0, sizeof(dc));
- dc.cmd = V4L2_DEC_CMD_START;
- return ivtv_video_command(itv, id, &dc, 0);
- }
-
- case VIDEO_STOP: {
- struct v4l2_decoder_cmd dc;
-
- warn_deprecated_ioctl("VIDEO_STOP");
- memset(&dc, 0, sizeof(dc));
- dc.cmd = V4L2_DEC_CMD_STOP;
- dc.flags = V4L2_DEC_CMD_STOP_TO_BLACK | V4L2_DEC_CMD_STOP_IMMEDIATELY;
- return ivtv_video_command(itv, id, &dc, 0);
- }
-
- case VIDEO_FREEZE: {
- struct v4l2_decoder_cmd dc;
-
- warn_deprecated_ioctl("VIDEO_FREEZE");
- memset(&dc, 0, sizeof(dc));
- dc.cmd = V4L2_DEC_CMD_PAUSE;
- return ivtv_video_command(itv, id, &dc, 0);
- }
-
- case VIDEO_CONTINUE: {
- struct v4l2_decoder_cmd dc;
-
- warn_deprecated_ioctl("VIDEO_CONTINUE");
- memset(&dc, 0, sizeof(dc));
- dc.cmd = V4L2_DEC_CMD_RESUME;
- return ivtv_video_command(itv, id, &dc, 0);
- }
-
- case VIDEO_COMMAND:
- case VIDEO_TRY_COMMAND: {
- /* Note: struct v4l2_decoder_cmd has the same layout as
- struct video_command */
- struct v4l2_decoder_cmd *dc = arg;
- int try = (cmd == VIDEO_TRY_COMMAND);
-
- if (try)
- warn_deprecated_ioctl("VIDEO_TRY_COMMAND");
- else
- warn_deprecated_ioctl("VIDEO_COMMAND");
- return ivtv_video_command(itv, id, dc, try);
- }
-
-#ifdef CONFIG_COMPAT
- case VIDEO_GET_EVENT32:
-#endif
- case VIDEO_GET_EVENT: {
-#ifdef CONFIG_COMPAT
- struct compat_video_event *ev32 = arg;
-#endif
- struct video_event *ev = arg;
- DEFINE_WAIT(wait);
-
- warn_deprecated_ioctl("VIDEO_GET_EVENT");
- if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
- return -EINVAL;
- memset(ev, 0, sizeof(*ev));
- set_bit(IVTV_F_I_EV_VSYNC_ENABLED, &itv->i_flags);
-
- while (1) {
- if (test_and_clear_bit(IVTV_F_I_EV_DEC_STOPPED, &itv->i_flags))
- ev->type = VIDEO_EVENT_DECODER_STOPPED;
- else if (test_and_clear_bit(IVTV_F_I_EV_VSYNC, &itv->i_flags)) {
- unsigned char vsync_field;
-
- ev->type = VIDEO_EVENT_VSYNC;
- vsync_field = test_bit(IVTV_F_I_EV_VSYNC_FIELD, &itv->i_flags) ?
- VIDEO_VSYNC_FIELD_ODD : VIDEO_VSYNC_FIELD_EVEN;
- if (itv->output_mode == OUT_UDMA_YUV &&
- (itv->yuv_info.lace_mode & IVTV_YUV_MODE_MASK) ==
- IVTV_YUV_MODE_PROGRESSIVE) {
- vsync_field = VIDEO_VSYNC_FIELD_PROGRESSIVE;
- }
-#ifdef CONFIG_COMPAT
- if (cmd == VIDEO_GET_EVENT32)
- ev32->u.vsync_field = vsync_field;
- else
-#endif
- ev->u.vsync_field = vsync_field;
- }
- if (ev->type)
- return 0;
- if (nonblocking)
- return -EAGAIN;
- /* Wait for event. Note that serialize_lock is locked,
- so to allow other processes to access the driver while
- we are waiting unlock first and later lock again. */
- mutex_unlock(&itv->serialize_lock);
- prepare_to_wait(&itv->event_waitq, &wait, TASK_INTERRUPTIBLE);
- if (!test_bit(IVTV_F_I_EV_DEC_STOPPED, &itv->i_flags) &&
- !test_bit(IVTV_F_I_EV_VSYNC, &itv->i_flags))
- schedule();
- finish_wait(&itv->event_waitq, &wait);
- mutex_lock(&itv->serialize_lock);
- if (signal_pending(current)) {
- /* return if a signal was received */
- IVTV_DEBUG_INFO("User stopped wait for event\n");
- return -EINTR;
- }
- }
- break;
- }
-
- case VIDEO_SELECT_SOURCE:
- warn_deprecated_ioctl("VIDEO_SELECT_SOURCE");
- if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
- return -EINVAL;
- return ivtv_passthrough_mode(itv, iarg == VIDEO_SOURCE_DEMUX);
-
- case AUDIO_SET_MUTE:
- warn_deprecated_ioctl("AUDIO_SET_MUTE");
- itv->speed_mute_audio = iarg;
- return 0;
-
- case AUDIO_CHANNEL_SELECT:
- warn_deprecated_ioctl("AUDIO_CHANNEL_SELECT");
- if (iarg > AUDIO_STEREO_SWAPPED)
- return -EINVAL;
- return v4l2_ctrl_s_ctrl(itv->ctrl_audio_playback, iarg + 1);
-
- case AUDIO_BILINGUAL_CHANNEL_SELECT:
- warn_deprecated_ioctl("AUDIO_BILINGUAL_CHANNEL_SELECT");
- if (iarg > AUDIO_STEREO_SWAPPED)
- return -EINVAL;
- return v4l2_ctrl_s_ctrl(itv->ctrl_audio_multilingual_playback, iarg + 1);
-#endif
default:
return -EINVAL;
}
@@ -1846,17 +1651,6 @@ static long ivtv_default(struct file *file, void *fh, bool valid_prio,
if (!valid_prio) {
switch (cmd) {
case IVTV_IOC_PASSTHROUGH_MODE:
-#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
- case VIDEO_PLAY:
- case VIDEO_STOP:
- case VIDEO_FREEZE:
- case VIDEO_CONTINUE:
- case VIDEO_COMMAND:
- case VIDEO_SELECT_SOURCE:
- case AUDIO_SET_MUTE:
- case AUDIO_CHANNEL_SELECT:
- case AUDIO_BILINGUAL_CHANNEL_SELECT:
-#endif
return -EBUSY;
}
}
@@ -1874,21 +1668,6 @@ static long ivtv_default(struct file *file, void *fh, bool valid_prio,
case IVTV_IOC_DMA_FRAME:
case IVTV_IOC_PASSTHROUGH_MODE:
-#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
- case VIDEO_GET_PTS:
- case VIDEO_GET_FRAME_COUNT:
- case VIDEO_GET_EVENT:
- case VIDEO_PLAY:
- case VIDEO_STOP:
- case VIDEO_FREEZE:
- case VIDEO_CONTINUE:
- case VIDEO_COMMAND:
- case VIDEO_TRY_COMMAND:
- case VIDEO_SELECT_SOURCE:
- case AUDIO_SET_MUTE:
- case AUDIO_CHANNEL_SELECT:
- case AUDIO_BILINGUAL_CHANNEL_SELECT:
-#endif
return ivtv_decoder_ioctls(file, cmd, (void *)arg);
default:
--
2.31.1
On 02/06/2021 15:25, Mauro Carvalho Chehab wrote:
> The ivtv driver has gained support a long time ago for audio
> and video settings via V4L2 API.
>
> Let's drop support of the duplicated controls implemented
> abusing the DVB API.
I thought these were removed a long time ago :-)
In any case:
Acked-by: Hans Verkuil <[email protected]>
Thanks!
Hans
>
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
> ---
> drivers/media/pci/ivtv/Kconfig | 12 --
> drivers/media/pci/ivtv/ivtv-driver.h | 2 -
> drivers/media/pci/ivtv/ivtv-ioctl.c | 221 ---------------------------
> 3 files changed, 235 deletions(-)
>
> diff --git a/drivers/media/pci/ivtv/Kconfig b/drivers/media/pci/ivtv/Kconfig
> index c729e54692c4..e70502902b73 100644
> --- a/drivers/media/pci/ivtv/Kconfig
> +++ b/drivers/media/pci/ivtv/Kconfig
> @@ -29,18 +29,6 @@ config VIDEO_IVTV
> To compile this driver as a module, choose M here: the
> module will be called ivtv.
>
> -config VIDEO_IVTV_DEPRECATED_IOCTLS
> - bool "enable the DVB ioctls abuse on ivtv driver"
> - depends on VIDEO_IVTV
> - help
> - Enable the usage of the a DVB set of ioctls that were abused by
> - IVTV driver for a while.
> -
> - Those ioctls were not needed for a long time, as IVTV implements
> - the proper V4L2 ioctls since kernel 3.3.
> -
> - If unsure, say N.
> -
> config VIDEO_IVTV_ALSA
> tristate "Conexant cx23415/cx23416 ALSA interface for PCM audio capture"
> depends on VIDEO_IVTV && SND
> diff --git a/drivers/media/pci/ivtv/ivtv-driver.h b/drivers/media/pci/ivtv/ivtv-driver.h
> index e5efe525ad7b..4cf92dee6527 100644
> --- a/drivers/media/pci/ivtv/ivtv-driver.h
> +++ b/drivers/media/pci/ivtv/ivtv-driver.h
> @@ -57,8 +57,6 @@
> #include <linux/uaccess.h>
> #include <asm/byteorder.h>
>
> -#include <linux/dvb/video.h>
> -#include <linux/dvb/audio.h>
> #include <media/v4l2-common.h>
> #include <media/v4l2-ioctl.h>
> #include <media/v4l2-ctrls.h>
> diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c b/drivers/media/pci/ivtv/ivtv-ioctl.c
> index 35dccb31174c..da19b2e95e6c 100644
> --- a/drivers/media/pci/ivtv/ivtv-ioctl.c
> +++ b/drivers/media/pci/ivtv/ivtv-ioctl.c
> @@ -23,11 +23,6 @@
> #include <media/i2c/saa7127.h>
> #include <media/tveeprom.h>
> #include <media/v4l2-event.h>
> -#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
> -#include <linux/compat.h>
> -#include <linux/dvb/audio.h>
> -#include <linux/dvb/video.h>
> -#endif
>
> u16 ivtv_service2vbi(int type)
> {
> @@ -1606,38 +1601,11 @@ static int ivtv_try_decoder_cmd(struct file *file, void *fh, struct v4l2_decoder
> return ivtv_video_command(itv, id, dec, true);
> }
>
> -#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
> -static __inline__ void warn_deprecated_ioctl(const char *name)
> -{
> - pr_warn_once("warning: the %s ioctl is deprecated. Don't use it, as it will be removed soon\n",
> - name);
> -}
> -
> -#ifdef CONFIG_COMPAT
> -struct compat_video_event {
> - __s32 type;
> - /* unused, make sure to use atomic time for y2038 if it ever gets used */
> - compat_long_t timestamp;
> - union {
> - video_size_t size;
> - unsigned int frame_rate; /* in frames per 1000sec */
> - unsigned char vsync_field; /* unknown/odd/even/progressive */
> - } u;
> -};
> -#define VIDEO_GET_EVENT32 _IOR('o', 28, struct compat_video_event)
> -#endif
> -
> -#endif
> -
> static int ivtv_decoder_ioctls(struct file *filp, unsigned int cmd, void *arg)
> {
> struct ivtv_open_id *id = fh2id(filp->private_data);
> struct ivtv *itv = id->itv;
> struct ivtv_stream *s = &itv->streams[id->type];
> -#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
> - int nonblocking = filp->f_flags & O_NONBLOCK;
> - unsigned long iarg = (unsigned long)arg;
> -#endif
>
> switch (cmd) {
> case IVTV_IOC_DMA_FRAME: {
> @@ -1669,169 +1637,6 @@ static int ivtv_decoder_ioctls(struct file *filp, unsigned int cmd, void *arg)
> if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
> return -EINVAL;
> return ivtv_passthrough_mode(itv, *(int *)arg != 0);
> -#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
> - case VIDEO_GET_PTS: {
> - s64 *pts = arg;
> - s64 frame;
> -
> - warn_deprecated_ioctl("VIDEO_GET_PTS");
> - if (s->type < IVTV_DEC_STREAM_TYPE_MPG) {
> - *pts = s->dma_pts;
> - break;
> - }
> - if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
> - return -EINVAL;
> - return ivtv_g_pts_frame(itv, pts, &frame);
> - }
> -
> - case VIDEO_GET_FRAME_COUNT: {
> - s64 *frame = arg;
> - s64 pts;
> -
> - warn_deprecated_ioctl("VIDEO_GET_FRAME_COUNT");
> - if (s->type < IVTV_DEC_STREAM_TYPE_MPG) {
> - *frame = 0;
> - break;
> - }
> - if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
> - return -EINVAL;
> - return ivtv_g_pts_frame(itv, &pts, frame);
> - }
> -
> - case VIDEO_PLAY: {
> - struct v4l2_decoder_cmd dc;
> -
> - warn_deprecated_ioctl("VIDEO_PLAY");
> - memset(&dc, 0, sizeof(dc));
> - dc.cmd = V4L2_DEC_CMD_START;
> - return ivtv_video_command(itv, id, &dc, 0);
> - }
> -
> - case VIDEO_STOP: {
> - struct v4l2_decoder_cmd dc;
> -
> - warn_deprecated_ioctl("VIDEO_STOP");
> - memset(&dc, 0, sizeof(dc));
> - dc.cmd = V4L2_DEC_CMD_STOP;
> - dc.flags = V4L2_DEC_CMD_STOP_TO_BLACK | V4L2_DEC_CMD_STOP_IMMEDIATELY;
> - return ivtv_video_command(itv, id, &dc, 0);
> - }
> -
> - case VIDEO_FREEZE: {
> - struct v4l2_decoder_cmd dc;
> -
> - warn_deprecated_ioctl("VIDEO_FREEZE");
> - memset(&dc, 0, sizeof(dc));
> - dc.cmd = V4L2_DEC_CMD_PAUSE;
> - return ivtv_video_command(itv, id, &dc, 0);
> - }
> -
> - case VIDEO_CONTINUE: {
> - struct v4l2_decoder_cmd dc;
> -
> - warn_deprecated_ioctl("VIDEO_CONTINUE");
> - memset(&dc, 0, sizeof(dc));
> - dc.cmd = V4L2_DEC_CMD_RESUME;
> - return ivtv_video_command(itv, id, &dc, 0);
> - }
> -
> - case VIDEO_COMMAND:
> - case VIDEO_TRY_COMMAND: {
> - /* Note: struct v4l2_decoder_cmd has the same layout as
> - struct video_command */
> - struct v4l2_decoder_cmd *dc = arg;
> - int try = (cmd == VIDEO_TRY_COMMAND);
> -
> - if (try)
> - warn_deprecated_ioctl("VIDEO_TRY_COMMAND");
> - else
> - warn_deprecated_ioctl("VIDEO_COMMAND");
> - return ivtv_video_command(itv, id, dc, try);
> - }
> -
> -#ifdef CONFIG_COMPAT
> - case VIDEO_GET_EVENT32:
> -#endif
> - case VIDEO_GET_EVENT: {
> -#ifdef CONFIG_COMPAT
> - struct compat_video_event *ev32 = arg;
> -#endif
> - struct video_event *ev = arg;
> - DEFINE_WAIT(wait);
> -
> - warn_deprecated_ioctl("VIDEO_GET_EVENT");
> - if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
> - return -EINVAL;
> - memset(ev, 0, sizeof(*ev));
> - set_bit(IVTV_F_I_EV_VSYNC_ENABLED, &itv->i_flags);
> -
> - while (1) {
> - if (test_and_clear_bit(IVTV_F_I_EV_DEC_STOPPED, &itv->i_flags))
> - ev->type = VIDEO_EVENT_DECODER_STOPPED;
> - else if (test_and_clear_bit(IVTV_F_I_EV_VSYNC, &itv->i_flags)) {
> - unsigned char vsync_field;
> -
> - ev->type = VIDEO_EVENT_VSYNC;
> - vsync_field = test_bit(IVTV_F_I_EV_VSYNC_FIELD, &itv->i_flags) ?
> - VIDEO_VSYNC_FIELD_ODD : VIDEO_VSYNC_FIELD_EVEN;
> - if (itv->output_mode == OUT_UDMA_YUV &&
> - (itv->yuv_info.lace_mode & IVTV_YUV_MODE_MASK) ==
> - IVTV_YUV_MODE_PROGRESSIVE) {
> - vsync_field = VIDEO_VSYNC_FIELD_PROGRESSIVE;
> - }
> -#ifdef CONFIG_COMPAT
> - if (cmd == VIDEO_GET_EVENT32)
> - ev32->u.vsync_field = vsync_field;
> - else
> -#endif
> - ev->u.vsync_field = vsync_field;
> - }
> - if (ev->type)
> - return 0;
> - if (nonblocking)
> - return -EAGAIN;
> - /* Wait for event. Note that serialize_lock is locked,
> - so to allow other processes to access the driver while
> - we are waiting unlock first and later lock again. */
> - mutex_unlock(&itv->serialize_lock);
> - prepare_to_wait(&itv->event_waitq, &wait, TASK_INTERRUPTIBLE);
> - if (!test_bit(IVTV_F_I_EV_DEC_STOPPED, &itv->i_flags) &&
> - !test_bit(IVTV_F_I_EV_VSYNC, &itv->i_flags))
> - schedule();
> - finish_wait(&itv->event_waitq, &wait);
> - mutex_lock(&itv->serialize_lock);
> - if (signal_pending(current)) {
> - /* return if a signal was received */
> - IVTV_DEBUG_INFO("User stopped wait for event\n");
> - return -EINTR;
> - }
> - }
> - break;
> - }
> -
> - case VIDEO_SELECT_SOURCE:
> - warn_deprecated_ioctl("VIDEO_SELECT_SOURCE");
> - if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT))
> - return -EINVAL;
> - return ivtv_passthrough_mode(itv, iarg == VIDEO_SOURCE_DEMUX);
> -
> - case AUDIO_SET_MUTE:
> - warn_deprecated_ioctl("AUDIO_SET_MUTE");
> - itv->speed_mute_audio = iarg;
> - return 0;
> -
> - case AUDIO_CHANNEL_SELECT:
> - warn_deprecated_ioctl("AUDIO_CHANNEL_SELECT");
> - if (iarg > AUDIO_STEREO_SWAPPED)
> - return -EINVAL;
> - return v4l2_ctrl_s_ctrl(itv->ctrl_audio_playback, iarg + 1);
> -
> - case AUDIO_BILINGUAL_CHANNEL_SELECT:
> - warn_deprecated_ioctl("AUDIO_BILINGUAL_CHANNEL_SELECT");
> - if (iarg > AUDIO_STEREO_SWAPPED)
> - return -EINVAL;
> - return v4l2_ctrl_s_ctrl(itv->ctrl_audio_multilingual_playback, iarg + 1);
> -#endif
> default:
> return -EINVAL;
> }
> @@ -1846,17 +1651,6 @@ static long ivtv_default(struct file *file, void *fh, bool valid_prio,
> if (!valid_prio) {
> switch (cmd) {
> case IVTV_IOC_PASSTHROUGH_MODE:
> -#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
> - case VIDEO_PLAY:
> - case VIDEO_STOP:
> - case VIDEO_FREEZE:
> - case VIDEO_CONTINUE:
> - case VIDEO_COMMAND:
> - case VIDEO_SELECT_SOURCE:
> - case AUDIO_SET_MUTE:
> - case AUDIO_CHANNEL_SELECT:
> - case AUDIO_BILINGUAL_CHANNEL_SELECT:
> -#endif
> return -EBUSY;
> }
> }
> @@ -1874,21 +1668,6 @@ static long ivtv_default(struct file *file, void *fh, bool valid_prio,
>
> case IVTV_IOC_DMA_FRAME:
> case IVTV_IOC_PASSTHROUGH_MODE:
> -#ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS
> - case VIDEO_GET_PTS:
> - case VIDEO_GET_FRAME_COUNT:
> - case VIDEO_GET_EVENT:
> - case VIDEO_PLAY:
> - case VIDEO_STOP:
> - case VIDEO_FREEZE:
> - case VIDEO_CONTINUE:
> - case VIDEO_COMMAND:
> - case VIDEO_TRY_COMMAND:
> - case VIDEO_SELECT_SOURCE:
> - case AUDIO_SET_MUTE:
> - case AUDIO_CHANNEL_SELECT:
> - case AUDIO_BILINGUAL_CHANNEL_SELECT:
> -#endif
> return ivtv_decoder_ioctls(file, cmd, (void *)arg);
>
> default:
>