diff options
Diffstat (limited to 'drivers/media/video')
-rw-r--r-- | drivers/media/video/Kconfig | 12 | ||||
-rw-r--r-- | drivers/media/video/cx2341x.c | 17 | ||||
-rw-r--r-- | drivers/media/video/cx88/Kconfig | 15 | ||||
-rw-r--r-- | drivers/media/video/cx88/Makefile | 5 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-blackbird.c | 17 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 5 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-core.c | 2 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-i2c.c | 1 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-tvaudio.c | 2 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-video.c | 6 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 7 | ||||
-rw-r--r-- | drivers/media/video/tuner-core.c | 10 | ||||
-rw-r--r-- | drivers/media/video/usbvideo/quickcam_messenger.c | 2 | ||||
-rw-r--r-- | drivers/media/video/v4l2-common.c | 14 |
14 files changed, 70 insertions, 45 deletions
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig index 824a63c92629..e4290491fa9e 100644 --- a/drivers/media/video/Kconfig +++ b/drivers/media/video/Kconfig | |||
@@ -381,6 +381,18 @@ config VIDEO_WM8739 | |||
381 | To compile this driver as a module, choose M here: the | 381 | To compile this driver as a module, choose M here: the |
382 | module will be called wm8739. | 382 | module will be called wm8739. |
383 | 383 | ||
384 | config VIDEO_CX2341X | ||
385 | tristate "Conexant CX2341x MPEG encoders" | ||
386 | depends on VIDEO_V4L2 && EXPERIMENTAL | ||
387 | ---help--- | ||
388 | Support for the Conexant CX23416 MPEG encoders | ||
389 | and CX23415 MPEG encoder/decoders. | ||
390 | |||
391 | This module currently supports the encoding functions only. | ||
392 | |||
393 | To compile this driver as a module, choose M here: the | ||
394 | module will be called cx2341x. | ||
395 | |||
384 | source "drivers/media/video/cx25840/Kconfig" | 396 | source "drivers/media/video/cx25840/Kconfig" |
385 | 397 | ||
386 | config VIDEO_SAA711X | 398 | config VIDEO_SAA711X |
diff --git a/drivers/media/video/cx2341x.c b/drivers/media/video/cx2341x.c index 554813e6f65d..01b22eab5725 100644 --- a/drivers/media/video/cx2341x.c +++ b/drivers/media/video/cx2341x.c | |||
@@ -43,6 +43,7 @@ MODULE_PARM_DESC(debug, "Debug level (0-1)"); | |||
43 | const u32 cx2341x_mpeg_ctrls[] = { | 43 | const u32 cx2341x_mpeg_ctrls[] = { |
44 | V4L2_CID_MPEG_CLASS, | 44 | V4L2_CID_MPEG_CLASS, |
45 | V4L2_CID_MPEG_STREAM_TYPE, | 45 | V4L2_CID_MPEG_STREAM_TYPE, |
46 | V4L2_CID_MPEG_STREAM_VBI_FMT, | ||
46 | V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ, | 47 | V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ, |
47 | V4L2_CID_MPEG_AUDIO_ENCODING, | 48 | V4L2_CID_MPEG_AUDIO_ENCODING, |
48 | V4L2_CID_MPEG_AUDIO_L2_BITRATE, | 49 | V4L2_CID_MPEG_AUDIO_L2_BITRATE, |
@@ -135,6 +136,9 @@ static int cx2341x_get_ctrl(struct cx2341x_mpeg_params *params, | |||
135 | case V4L2_CID_MPEG_STREAM_TYPE: | 136 | case V4L2_CID_MPEG_STREAM_TYPE: |
136 | ctrl->value = params->stream_type; | 137 | ctrl->value = params->stream_type; |
137 | break; | 138 | break; |
139 | case V4L2_CID_MPEG_STREAM_VBI_FMT: | ||
140 | ctrl->value = params->stream_vbi_fmt; | ||
141 | break; | ||
138 | case V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE: | 142 | case V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE: |
139 | ctrl->value = params->video_spatial_filter_mode; | 143 | ctrl->value = params->video_spatial_filter_mode; |
140 | break; | 144 | break; |
@@ -257,6 +261,9 @@ static int cx2341x_set_ctrl(struct cx2341x_mpeg_params *params, | |||
257 | params->video_bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_CBR; | 261 | params->video_bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_CBR; |
258 | } | 262 | } |
259 | break; | 263 | break; |
264 | case V4L2_CID_MPEG_STREAM_VBI_FMT: | ||
265 | params->stream_vbi_fmt = ctrl->value; | ||
266 | break; | ||
260 | case V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE: | 267 | case V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE: |
261 | params->video_spatial_filter_mode = ctrl->value; | 268 | params->video_spatial_filter_mode = ctrl->value; |
262 | break; | 269 | break; |
@@ -418,6 +425,14 @@ int cx2341x_ctrl_query(struct cx2341x_mpeg_params *params, struct v4l2_queryctrl | |||
418 | qctrl->flags |= V4L2_CTRL_FLAG_INACTIVE; | 425 | qctrl->flags |= V4L2_CTRL_FLAG_INACTIVE; |
419 | return err; | 426 | return err; |
420 | 427 | ||
428 | case V4L2_CID_MPEG_STREAM_VBI_FMT: | ||
429 | if (params->capabilities & CX2341X_CAP_HAS_SLICED_VBI) | ||
430 | return v4l2_ctrl_query_fill_std(qctrl); | ||
431 | return cx2341x_ctrl_query_fill(qctrl, | ||
432 | V4L2_MPEG_STREAM_VBI_FMT_NONE, | ||
433 | V4L2_MPEG_STREAM_VBI_FMT_NONE, 1, | ||
434 | V4L2_MPEG_STREAM_VBI_FMT_NONE); | ||
435 | |||
421 | /* CX23415/6 specific */ | 436 | /* CX23415/6 specific */ |
422 | case V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE: | 437 | case V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE: |
423 | return cx2341x_ctrl_query_fill(qctrl, | 438 | return cx2341x_ctrl_query_fill(qctrl, |
@@ -639,6 +654,7 @@ void cx2341x_fill_defaults(struct cx2341x_mpeg_params *p) | |||
639 | { | 654 | { |
640 | static struct cx2341x_mpeg_params default_params = { | 655 | static struct cx2341x_mpeg_params default_params = { |
641 | /* misc */ | 656 | /* misc */ |
657 | .capabilities = 0, | ||
642 | .port = CX2341X_PORT_MEMORY, | 658 | .port = CX2341X_PORT_MEMORY, |
643 | .width = 720, | 659 | .width = 720, |
644 | .height = 480, | 660 | .height = 480, |
@@ -646,6 +662,7 @@ void cx2341x_fill_defaults(struct cx2341x_mpeg_params *p) | |||
646 | 662 | ||
647 | /* stream */ | 663 | /* stream */ |
648 | .stream_type = V4L2_MPEG_STREAM_TYPE_MPEG2_PS, | 664 | .stream_type = V4L2_MPEG_STREAM_TYPE_MPEG2_PS, |
665 | .stream_vbi_fmt = V4L2_MPEG_STREAM_VBI_FMT_NONE, | ||
649 | 666 | ||
650 | /* audio */ | 667 | /* audio */ |
651 | .audio_sampling_freq = V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000, | 668 | .audio_sampling_freq = V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000, |
diff --git a/drivers/media/video/cx88/Kconfig b/drivers/media/video/cx88/Kconfig index 91e1c481a164..80e23ee9801c 100644 --- a/drivers/media/video/cx88/Kconfig +++ b/drivers/media/video/cx88/Kconfig | |||
@@ -11,7 +11,6 @@ config VIDEO_CX88 | |||
11 | select VIDEO_BUF | 11 | select VIDEO_BUF |
12 | select VIDEO_TUNER | 12 | select VIDEO_TUNER |
13 | select VIDEO_TVEEPROM | 13 | select VIDEO_TVEEPROM |
14 | select VIDEO_CX2341X | ||
15 | select VIDEO_IR | 14 | select VIDEO_IR |
16 | ---help--- | 15 | ---help--- |
17 | This is a video4linux driver for Conexant 2388x based | 16 | This is a video4linux driver for Conexant 2388x based |
@@ -36,13 +35,25 @@ config VIDEO_CX88_ALSA | |||
36 | To compile this driver as a module, choose M here: the | 35 | To compile this driver as a module, choose M here: the |
37 | module will be called cx88-alsa. | 36 | module will be called cx88-alsa. |
38 | 37 | ||
38 | config VIDEO_CX88_BLACKBIRD | ||
39 | tristate "Blackbird MPEG encoder support (cx2388x + cx23416)" | ||
40 | depends on VIDEO_CX88 | ||
41 | select VIDEO_CX2341X | ||
42 | ---help--- | ||
43 | This adds support for MPEG encoder cards based on the | ||
44 | Blackbird reference design, using the Conexant 2388x | ||
45 | and 23416 chips. | ||
46 | |||
47 | To compile this driver as a module, choose M here: the | ||
48 | module will be called cx88-blackbird. | ||
49 | |||
39 | config VIDEO_CX88_DVB | 50 | config VIDEO_CX88_DVB |
40 | tristate "DVB/ATSC Support for cx2388x based TV cards" | 51 | tristate "DVB/ATSC Support for cx2388x based TV cards" |
41 | depends on VIDEO_CX88 && DVB_CORE | 52 | depends on VIDEO_CX88 && DVB_CORE |
42 | select VIDEO_BUF_DVB | 53 | select VIDEO_BUF_DVB |
43 | ---help--- | 54 | ---help--- |
44 | This adds support for DVB/ATSC cards based on the | 55 | This adds support for DVB/ATSC cards based on the |
45 | Connexant 2388x chip. | 56 | Conexant 2388x chip. |
46 | 57 | ||
47 | To compile this driver as a module, choose M here: the | 58 | To compile this driver as a module, choose M here: the |
48 | module will be called cx88-dvb. | 59 | module will be called cx88-dvb. |
diff --git a/drivers/media/video/cx88/Makefile b/drivers/media/video/cx88/Makefile index 0dcd09b9b727..352b919f30c4 100644 --- a/drivers/media/video/cx88/Makefile +++ b/drivers/media/video/cx88/Makefile | |||
@@ -3,9 +3,10 @@ cx88xx-objs := cx88-cards.o cx88-core.o cx88-i2c.o cx88-tvaudio.o \ | |||
3 | cx8800-objs := cx88-video.o cx88-vbi.o | 3 | cx8800-objs := cx88-video.o cx88-vbi.o |
4 | cx8802-objs := cx88-mpeg.o | 4 | cx8802-objs := cx88-mpeg.o |
5 | 5 | ||
6 | obj-$(CONFIG_VIDEO_CX88) += cx88xx.o cx8800.o cx8802.o cx88-blackbird.o | 6 | obj-$(CONFIG_VIDEO_CX88) += cx88xx.o cx8800.o cx8802.o |
7 | obj-$(CONFIG_VIDEO_CX88_DVB) += cx88-dvb.o | ||
8 | obj-$(CONFIG_VIDEO_CX88_ALSA) += cx88-alsa.o | 7 | obj-$(CONFIG_VIDEO_CX88_ALSA) += cx88-alsa.o |
8 | obj-$(CONFIG_VIDEO_CX88_BLACKBIRD) += cx88-blackbird.o | ||
9 | obj-$(CONFIG_VIDEO_CX88_DVB) += cx88-dvb.o | ||
9 | obj-$(CONFIG_VIDEO_CX88_VP3054) += cx88-vp3054-i2c.o | 10 | obj-$(CONFIG_VIDEO_CX88_VP3054) += cx88-vp3054-i2c.o |
10 | 11 | ||
11 | EXTRA_CFLAGS += -Idrivers/media/video | 12 | EXTRA_CFLAGS += -Idrivers/media/video |
diff --git a/drivers/media/video/cx88/cx88-blackbird.c b/drivers/media/video/cx88/cx88-blackbird.c index 67fd3302e8f2..78df66671ea2 100644 --- a/drivers/media/video/cx88/cx88-blackbird.c +++ b/drivers/media/video/cx88/cx88-blackbird.c | |||
@@ -846,7 +846,7 @@ static int mpeg_do_ioctl(struct inode *inode, struct file *file, | |||
846 | BLACKBIRD_MPEG_CAPTURE, | 846 | BLACKBIRD_MPEG_CAPTURE, |
847 | BLACKBIRD_RAW_BITS_NONE); | 847 | BLACKBIRD_RAW_BITS_NONE); |
848 | 848 | ||
849 | cx88_do_ioctl( inode, file, 0, dev->core, cmd, arg, cx88_ioctl_hook ); | 849 | cx88_do_ioctl(inode, file, 0, dev->core, cmd, arg, mpeg_do_ioctl); |
850 | 850 | ||
851 | blackbird_initialize_codec(dev); | 851 | blackbird_initialize_codec(dev); |
852 | cx88_set_scale(dev->core, dev->width, dev->height, | 852 | cx88_set_scale(dev->core, dev->width, dev->height, |
@@ -855,15 +855,11 @@ static int mpeg_do_ioctl(struct inode *inode, struct file *file, | |||
855 | } | 855 | } |
856 | 856 | ||
857 | default: | 857 | default: |
858 | return cx88_do_ioctl( inode, file, 0, dev->core, cmd, arg, cx88_ioctl_hook ); | 858 | return cx88_do_ioctl(inode, file, 0, dev->core, cmd, arg, mpeg_do_ioctl); |
859 | } | 859 | } |
860 | return 0; | 860 | return 0; |
861 | } | 861 | } |
862 | 862 | ||
863 | int (*cx88_ioctl_hook)(struct inode *inode, struct file *file, | ||
864 | unsigned int cmd, void *arg); | ||
865 | unsigned int (*cx88_ioctl_translator)(unsigned int cmd); | ||
866 | |||
867 | static unsigned int mpeg_translate_ioctl(unsigned int cmd) | 863 | static unsigned int mpeg_translate_ioctl(unsigned int cmd) |
868 | { | 864 | { |
869 | return cmd; | 865 | return cmd; |
@@ -872,8 +868,8 @@ static unsigned int mpeg_translate_ioctl(unsigned int cmd) | |||
872 | static int mpeg_ioctl(struct inode *inode, struct file *file, | 868 | static int mpeg_ioctl(struct inode *inode, struct file *file, |
873 | unsigned int cmd, unsigned long arg) | 869 | unsigned int cmd, unsigned long arg) |
874 | { | 870 | { |
875 | cmd = cx88_ioctl_translator( cmd ); | 871 | cmd = mpeg_translate_ioctl( cmd ); |
876 | return video_usercopy(inode, file, cmd, arg, cx88_ioctl_hook); | 872 | return video_usercopy(inode, file, cmd, arg, mpeg_do_ioctl); |
877 | } | 873 | } |
878 | 874 | ||
879 | static int mpeg_open(struct inode *inode, struct file *file) | 875 | static int mpeg_open(struct inode *inode, struct file *file) |
@@ -1119,8 +1115,6 @@ static int blackbird_init(void) | |||
1119 | printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n", | 1115 | printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n", |
1120 | SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100); | 1116 | SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100); |
1121 | #endif | 1117 | #endif |
1122 | cx88_ioctl_hook = mpeg_do_ioctl; | ||
1123 | cx88_ioctl_translator = mpeg_translate_ioctl; | ||
1124 | return pci_register_driver(&blackbird_pci_driver); | 1118 | return pci_register_driver(&blackbird_pci_driver); |
1125 | } | 1119 | } |
1126 | 1120 | ||
@@ -1132,9 +1126,6 @@ static void blackbird_fini(void) | |||
1132 | module_init(blackbird_init); | 1126 | module_init(blackbird_init); |
1133 | module_exit(blackbird_fini); | 1127 | module_exit(blackbird_fini); |
1134 | 1128 | ||
1135 | EXPORT_SYMBOL(cx88_ioctl_hook); | ||
1136 | EXPORT_SYMBOL(cx88_ioctl_translator); | ||
1137 | |||
1138 | /* ----------------------------------------------------------- */ | 1129 | /* ----------------------------------------------------------- */ |
1139 | /* | 1130 | /* |
1140 | * Local variables: | 1131 | * Local variables: |
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index 67cdd8270863..f9d68f20dc88 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -1700,11 +1700,6 @@ void cx88_card_setup(struct cx88_core *core) | |||
1700 | /* ------------------------------------------------------------------ */ | 1700 | /* ------------------------------------------------------------------ */ |
1701 | 1701 | ||
1702 | EXPORT_SYMBOL(cx88_boards); | 1702 | EXPORT_SYMBOL(cx88_boards); |
1703 | EXPORT_SYMBOL(cx88_bcount); | ||
1704 | EXPORT_SYMBOL(cx88_subids); | ||
1705 | EXPORT_SYMBOL(cx88_idcount); | ||
1706 | EXPORT_SYMBOL(cx88_card_list); | ||
1707 | EXPORT_SYMBOL(cx88_card_setup); | ||
1708 | 1703 | ||
1709 | /* | 1704 | /* |
1710 | * Local variables: | 1705 | * Local variables: |
diff --git a/drivers/media/video/cx88/cx88-core.c b/drivers/media/video/cx88/cx88-core.c index c56292d8d93b..26f4c0fb8c36 100644 --- a/drivers/media/video/cx88/cx88-core.c +++ b/drivers/media/video/cx88/cx88-core.c | |||
@@ -1181,8 +1181,6 @@ EXPORT_SYMBOL(cx88_set_scale); | |||
1181 | EXPORT_SYMBOL(cx88_vdev_init); | 1181 | EXPORT_SYMBOL(cx88_vdev_init); |
1182 | EXPORT_SYMBOL(cx88_core_get); | 1182 | EXPORT_SYMBOL(cx88_core_get); |
1183 | EXPORT_SYMBOL(cx88_core_put); | 1183 | EXPORT_SYMBOL(cx88_core_put); |
1184 | EXPORT_SYMBOL(cx88_start_audio_dma); | ||
1185 | EXPORT_SYMBOL(cx88_stop_audio_dma); | ||
1186 | 1184 | ||
1187 | /* | 1185 | /* |
1188 | * Local variables: | 1186 | * Local variables: |
diff --git a/drivers/media/video/cx88/cx88-i2c.c b/drivers/media/video/cx88/cx88-i2c.c index 7efa6def0bde..70663805cc30 100644 --- a/drivers/media/video/cx88/cx88-i2c.c +++ b/drivers/media/video/cx88/cx88-i2c.c | |||
@@ -234,7 +234,6 @@ int cx88_i2c_init(struct cx88_core *core, struct pci_dev *pci) | |||
234 | /* ----------------------------------------------------------------------- */ | 234 | /* ----------------------------------------------------------------------- */ |
235 | 235 | ||
236 | EXPORT_SYMBOL(cx88_call_i2c_clients); | 236 | EXPORT_SYMBOL(cx88_call_i2c_clients); |
237 | EXPORT_SYMBOL(cx88_i2c_init); | ||
238 | 237 | ||
239 | /* | 238 | /* |
240 | * Local variables: | 239 | * Local variables: |
diff --git a/drivers/media/video/cx88/cx88-tvaudio.c b/drivers/media/video/cx88/cx88-tvaudio.c index 1e4278b588d8..5785c3481579 100644 --- a/drivers/media/video/cx88/cx88-tvaudio.c +++ b/drivers/media/video/cx88/cx88-tvaudio.c | |||
@@ -726,7 +726,7 @@ static void set_audio_standard_FM(struct cx88_core *core, | |||
726 | 726 | ||
727 | /* ----------------------------------------------------------- */ | 727 | /* ----------------------------------------------------------- */ |
728 | 728 | ||
729 | int cx88_detect_nicam(struct cx88_core *core) | 729 | static int cx88_detect_nicam(struct cx88_core *core) |
730 | { | 730 | { |
731 | int i, j = 0; | 731 | int i, j = 0; |
732 | 732 | ||
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c index 694d1d80ff3f..dcda5291b990 100644 --- a/drivers/media/video/cx88/cx88-video.c +++ b/drivers/media/video/cx88/cx88-video.c | |||
@@ -494,8 +494,7 @@ static int restart_video_queue(struct cx8800_dev *dev, | |||
494 | return 0; | 494 | return 0; |
495 | buf = list_entry(q->queued.next, struct cx88_buffer, vb.queue); | 495 | buf = list_entry(q->queued.next, struct cx88_buffer, vb.queue); |
496 | if (NULL == prev) { | 496 | if (NULL == prev) { |
497 | list_del(&buf->vb.queue); | 497 | list_move_tail(&buf->vb.queue, &q->active); |
498 | list_add_tail(&buf->vb.queue,&q->active); | ||
499 | start_video_dma(dev, q, buf); | 498 | start_video_dma(dev, q, buf); |
500 | buf->vb.state = STATE_ACTIVE; | 499 | buf->vb.state = STATE_ACTIVE; |
501 | buf->count = q->count++; | 500 | buf->count = q->count++; |
@@ -506,8 +505,7 @@ static int restart_video_queue(struct cx8800_dev *dev, | |||
506 | } else if (prev->vb.width == buf->vb.width && | 505 | } else if (prev->vb.width == buf->vb.width && |
507 | prev->vb.height == buf->vb.height && | 506 | prev->vb.height == buf->vb.height && |
508 | prev->fmt == buf->fmt) { | 507 | prev->fmt == buf->fmt) { |
509 | list_del(&buf->vb.queue); | 508 | list_move_tail(&buf->vb.queue, &q->active); |
510 | list_add_tail(&buf->vb.queue,&q->active); | ||
511 | buf->vb.state = STATE_ACTIVE; | 509 | buf->vb.state = STATE_ACTIVE; |
512 | buf->count = q->count++; | 510 | buf->count = q->count++; |
513 | prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma); | 511 | prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma); |
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index dc7bc35f18f4..9a9a0fc7a41a 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -563,7 +563,6 @@ void cx88_newstation(struct cx88_core *core); | |||
563 | void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t); | 563 | void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t); |
564 | void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual); | 564 | void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual); |
565 | int cx88_audio_thread(void *data); | 565 | int cx88_audio_thread(void *data); |
566 | int cx88_detect_nicam(struct cx88_core *core); | ||
567 | 566 | ||
568 | /* ----------------------------------------------------------- */ | 567 | /* ----------------------------------------------------------- */ |
569 | /* cx88-input.c */ | 568 | /* cx88-input.c */ |
@@ -592,12 +591,6 @@ extern int cx88_do_ioctl(struct inode *inode, struct file *file, int radio, | |||
592 | struct cx88_core *core, unsigned int cmd, | 591 | struct cx88_core *core, unsigned int cmd, |
593 | void *arg, v4l2_kioctl driver_ioctl); | 592 | void *arg, v4l2_kioctl driver_ioctl); |
594 | 593 | ||
595 | /* ----------------------------------------------------------- */ | ||
596 | /* cx88-blackbird.c */ | ||
597 | extern int (*cx88_ioctl_hook)(struct inode *inode, struct file *file, | ||
598 | unsigned int cmd, void *arg); | ||
599 | extern unsigned int (*cx88_ioctl_translator)(unsigned int cmd); | ||
600 | |||
601 | /* | 594 | /* |
602 | * Local variables: | 595 | * Local variables: |
603 | * c-basic-offset: 8 | 596 | * c-basic-offset: 8 |
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c index e95792fd70f8..a26ded7d6fae 100644 --- a/drivers/media/video/tuner-core.c +++ b/drivers/media/video/tuner-core.c | |||
@@ -730,14 +730,10 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg) | |||
730 | { | 730 | { |
731 | struct v4l2_frequency *f = arg; | 731 | struct v4l2_frequency *f = arg; |
732 | 732 | ||
733 | if (set_mode (client, t, f->type, "VIDIOC_S_FREQUENCY") | ||
734 | == EINVAL) | ||
735 | return 0; | ||
733 | switch_v4l2(); | 736 | switch_v4l2(); |
734 | if ((V4L2_TUNER_RADIO == f->type && V4L2_TUNER_RADIO != t->mode) | ||
735 | || (V4L2_TUNER_DIGITAL_TV == f->type | ||
736 | && V4L2_TUNER_DIGITAL_TV != t->mode)) { | ||
737 | if (set_mode (client, t, f->type, "VIDIOC_S_FREQUENCY") | ||
738 | == EINVAL) | ||
739 | return 0; | ||
740 | } | ||
741 | set_freq(client,f->frequency); | 737 | set_freq(client,f->frequency); |
742 | 738 | ||
743 | break; | 739 | break; |
diff --git a/drivers/media/video/usbvideo/quickcam_messenger.c b/drivers/media/video/usbvideo/quickcam_messenger.c index 3f3182a24da1..56e01b622417 100644 --- a/drivers/media/video/usbvideo/quickcam_messenger.c +++ b/drivers/media/video/usbvideo/quickcam_messenger.c | |||
@@ -33,7 +33,7 @@ | |||
33 | #include <linux/module.h> | 33 | #include <linux/module.h> |
34 | #include <linux/init.h> | 34 | #include <linux/init.h> |
35 | #include <linux/input.h> | 35 | #include <linux/input.h> |
36 | #include <linux/usb_input.h> | 36 | #include <linux/usb/input.h> |
37 | 37 | ||
38 | #include "usbvideo.h" | 38 | #include "usbvideo.h" |
39 | #include "quickcam_messenger.h" | 39 | #include "quickcam_messenger.h" |
diff --git a/drivers/media/video/v4l2-common.c b/drivers/media/video/v4l2-common.c index 14e523471354..f4b3d64ebf73 100644 --- a/drivers/media/video/v4l2-common.c +++ b/drivers/media/video/v4l2-common.c | |||
@@ -1101,6 +1101,11 @@ const char **v4l2_ctrl_get_menu(u32 id) | |||
1101 | "MPEG-2 SVCD-compatible Stream", | 1101 | "MPEG-2 SVCD-compatible Stream", |
1102 | NULL | 1102 | NULL |
1103 | }; | 1103 | }; |
1104 | static const char *mpeg_stream_vbi_fmt[] = { | ||
1105 | "No VBI", | ||
1106 | "VBI in private packets, IVTV format", | ||
1107 | NULL | ||
1108 | }; | ||
1104 | 1109 | ||
1105 | switch (id) { | 1110 | switch (id) { |
1106 | case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: | 1111 | case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: |
@@ -1129,6 +1134,8 @@ const char **v4l2_ctrl_get_menu(u32 id) | |||
1129 | return mpeg_video_bitrate_mode; | 1134 | return mpeg_video_bitrate_mode; |
1130 | case V4L2_CID_MPEG_STREAM_TYPE: | 1135 | case V4L2_CID_MPEG_STREAM_TYPE: |
1131 | return mpeg_stream_type; | 1136 | return mpeg_stream_type; |
1137 | case V4L2_CID_MPEG_STREAM_VBI_FMT: | ||
1138 | return mpeg_stream_vbi_fmt; | ||
1132 | default: | 1139 | default: |
1133 | return NULL; | 1140 | return NULL; |
1134 | } | 1141 | } |
@@ -1182,6 +1189,7 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste | |||
1182 | case V4L2_CID_MPEG_STREAM_PID_PCR: name = "Stream PCR Program ID"; break; | 1189 | case V4L2_CID_MPEG_STREAM_PID_PCR: name = "Stream PCR Program ID"; break; |
1183 | case V4L2_CID_MPEG_STREAM_PES_ID_AUDIO: name = "Stream PES Audio ID"; break; | 1190 | case V4L2_CID_MPEG_STREAM_PES_ID_AUDIO: name = "Stream PES Audio ID"; break; |
1184 | case V4L2_CID_MPEG_STREAM_PES_ID_VIDEO: name = "Stream PES Video ID"; break; | 1191 | case V4L2_CID_MPEG_STREAM_PES_ID_VIDEO: name = "Stream PES Video ID"; break; |
1192 | case V4L2_CID_MPEG_STREAM_VBI_FMT: name = "Stream VBI Format"; break; | ||
1185 | 1193 | ||
1186 | default: | 1194 | default: |
1187 | return -EINVAL; | 1195 | return -EINVAL; |
@@ -1208,6 +1216,7 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste | |||
1208 | case V4L2_CID_MPEG_VIDEO_ASPECT: | 1216 | case V4L2_CID_MPEG_VIDEO_ASPECT: |
1209 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: | 1217 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: |
1210 | case V4L2_CID_MPEG_STREAM_TYPE: | 1218 | case V4L2_CID_MPEG_STREAM_TYPE: |
1219 | case V4L2_CID_MPEG_STREAM_VBI_FMT: | ||
1211 | qctrl->type = V4L2_CTRL_TYPE_MENU; | 1220 | qctrl->type = V4L2_CTRL_TYPE_MENU; |
1212 | step = 1; | 1221 | step = 1; |
1213 | break; | 1222 | break; |
@@ -1367,6 +1376,11 @@ int v4l2_ctrl_query_fill_std(struct v4l2_queryctrl *qctrl) | |||
1367 | return v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 0); | 1376 | return v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 0); |
1368 | case V4L2_CID_MPEG_STREAM_PES_ID_VIDEO: | 1377 | case V4L2_CID_MPEG_STREAM_PES_ID_VIDEO: |
1369 | return v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 0); | 1378 | return v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 0); |
1379 | case V4L2_CID_MPEG_STREAM_VBI_FMT: | ||
1380 | return v4l2_ctrl_query_fill(qctrl, | ||
1381 | V4L2_MPEG_STREAM_VBI_FMT_NONE, | ||
1382 | V4L2_MPEG_STREAM_VBI_FMT_IVTV, 1, | ||
1383 | V4L2_MPEG_STREAM_VBI_FMT_NONE); | ||
1370 | default: | 1384 | default: |
1371 | return -EINVAL; | 1385 | return -EINVAL; |
1372 | } | 1386 | } |