aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2009-04-01 02:52:39 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-04-06 20:44:22 -0400
commitf41737ece472cd803ffb24ac9f5d6fdd1d871341 (patch)
tree26ac526ec381e26c46a857f3ce44c84e75331b01
parentcc26b076cf8b1040ccc514302ef9a24042272ec3 (diff)
V4L/DVB (11370): v4l2-subdev: move s_std from tuner to core.
s_std didn't belong in the tuner ops. Stricly speaking it should be part of the video ops, but it is used by audio and tuner devices as well, so it is more efficient to make it part of the core ops. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/video/au0828/au0828-video.c2
-rw-r--r--drivers/media/video/bt819.c4
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c2
-rw-r--r--drivers/media/video/cx18/cx18-av-core.c2
-rw-r--r--drivers/media/video/cx18/cx18-fileops.c2
-rw-r--r--drivers/media/video/cx18/cx18-gpio.c2
-rw-r--r--drivers/media/video/cx18/cx18-ioctl.c2
-rw-r--r--drivers/media/video/cx231xx/cx231xx-video.c2
-rw-r--r--drivers/media/video/cx23885/cx23885-video.c2
-rw-r--r--drivers/media/video/cx25840/cx25840-core.c2
-rw-r--r--drivers/media/video/cx88/cx88-core.c2
-rw-r--r--drivers/media/video/em28xx/em28xx-video.c2
-rw-r--r--drivers/media/video/ivtv/ivtv-fileops.c2
-rw-r--r--drivers/media/video/ivtv/ivtv-gpio.c2
-rw-r--r--drivers/media/video/ivtv/ivtv-ioctl.c2
-rw-r--r--drivers/media/video/ks0127.c4
-rw-r--r--drivers/media/video/msp3400-driver.c2
-rw-r--r--drivers/media/video/mxb.c8
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw.c2
-rw-r--r--drivers/media/video/saa7110.c4
-rw-r--r--drivers/media/video/saa7115.c2
-rw-r--r--drivers/media/video/saa7134/saa6752hs.c4
-rw-r--r--drivers/media/video/saa7134/saa7134-video.c4
-rw-r--r--drivers/media/video/saa717x.c2
-rw-r--r--drivers/media/video/saa7191.c4
-rw-r--r--drivers/media/video/tuner-core.c2
-rw-r--r--drivers/media/video/tvaudio.c2
-rw-r--r--drivers/media/video/tvp5150.c2
-rw-r--r--drivers/media/video/usbvision/usbvision-video.c2
-rw-r--r--drivers/media/video/vino.c6
-rw-r--r--drivers/media/video/vp27smpx.c2
-rw-r--r--drivers/media/video/vpx3220.c4
-rw-r--r--drivers/media/video/zoran/zoran_device.c2
-rw-r--r--drivers/media/video/zoran/zoran_driver.c6
-rw-r--r--include/media/v4l2-subdev.h2
35 files changed, 37 insertions, 61 deletions
diff --git a/drivers/media/video/au0828/au0828-video.c b/drivers/media/video/au0828/au0828-video.c
index f7ad4958b94e..19b23f21f968 100644
--- a/drivers/media/video/au0828/au0828-video.c
+++ b/drivers/media/video/au0828/au0828-video.c
@@ -1100,7 +1100,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id * norm)
1100 have to make the au0828 bridge adjust the size of its capture 1100 have to make the au0828 bridge adjust the size of its capture
1101 buffer, which is currently hardcoded at 720x480 */ 1101 buffer, which is currently hardcoded at 720x480 */
1102 1102
1103 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_std, *norm); 1103 v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std, *norm);
1104 return 0; 1104 return 0;
1105} 1105}
1106 1106
diff --git a/drivers/media/video/bt819.c b/drivers/media/video/bt819.c
index df4516d8dcab..9f84032ce38c 100644
--- a/drivers/media/video/bt819.c
+++ b/drivers/media/video/bt819.c
@@ -444,9 +444,6 @@ static const struct v4l2_subdev_core_ops bt819_core_ops = {
444 .g_ctrl = bt819_g_ctrl, 444 .g_ctrl = bt819_g_ctrl,
445 .s_ctrl = bt819_s_ctrl, 445 .s_ctrl = bt819_s_ctrl,
446 .queryctrl = bt819_queryctrl, 446 .queryctrl = bt819_queryctrl,
447};
448
449static const struct v4l2_subdev_tuner_ops bt819_tuner_ops = {
450 .s_std = bt819_s_std, 447 .s_std = bt819_s_std,
451}; 448};
452 449
@@ -459,7 +456,6 @@ static const struct v4l2_subdev_video_ops bt819_video_ops = {
459 456
460static const struct v4l2_subdev_ops bt819_ops = { 457static const struct v4l2_subdev_ops bt819_ops = {
461 .core = &bt819_core_ops, 458 .core = &bt819_core_ops,
462 .tuner = &bt819_tuner_ops,
463 .video = &bt819_video_ops, 459 .video = &bt819_video_ops,
464}; 460};
465 461
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 7a8ca0d8356f..41c31eabe261 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -1329,7 +1329,7 @@ set_tvnorm(struct bttv *btv, unsigned int norm)
1329 break; 1329 break;
1330 } 1330 }
1331 id = tvnorm->v4l2_id; 1331 id = tvnorm->v4l2_id;
1332 bttv_call_all(btv, tuner, s_std, id); 1332 bttv_call_all(btv, core, s_std, id);
1333 1333
1334 return 0; 1334 return 0;
1335} 1335}
diff --git a/drivers/media/video/cx18/cx18-av-core.c b/drivers/media/video/cx18/cx18-av-core.c
index 0c58e55fdbee..9b3e574dd829 100644
--- a/drivers/media/video/cx18/cx18-av-core.c
+++ b/drivers/media/video/cx18/cx18-av-core.c
@@ -1189,6 +1189,7 @@ static const struct v4l2_subdev_core_ops cx18_av_general_ops = {
1189 .queryctrl = cx18_av_queryctrl, 1189 .queryctrl = cx18_av_queryctrl,
1190 .g_ctrl = cx18_av_g_ctrl, 1190 .g_ctrl = cx18_av_g_ctrl,
1191 .s_ctrl = cx18_av_s_ctrl, 1191 .s_ctrl = cx18_av_s_ctrl,
1192 .s_std = cx18_av_s_std,
1192#ifdef CONFIG_VIDEO_ADV_DEBUG 1193#ifdef CONFIG_VIDEO_ADV_DEBUG
1193 .g_register = cx18_av_g_register, 1194 .g_register = cx18_av_g_register,
1194 .s_register = cx18_av_s_register, 1195 .s_register = cx18_av_s_register,
@@ -1200,7 +1201,6 @@ static const struct v4l2_subdev_tuner_ops cx18_av_tuner_ops = {
1200 .s_frequency = cx18_av_s_frequency, 1201 .s_frequency = cx18_av_s_frequency,
1201 .g_tuner = cx18_av_g_tuner, 1202 .g_tuner = cx18_av_g_tuner,
1202 .s_tuner = cx18_av_s_tuner, 1203 .s_tuner = cx18_av_s_tuner,
1203 .s_std = cx18_av_s_std,
1204}; 1204};
1205 1205
1206static const struct v4l2_subdev_audio_ops cx18_av_audio_ops = { 1206static const struct v4l2_subdev_audio_ops cx18_av_audio_ops = {
diff --git a/drivers/media/video/cx18/cx18-fileops.c b/drivers/media/video/cx18/cx18-fileops.c
index 4d7d6d5a7f86..b3889c0b2697 100644
--- a/drivers/media/video/cx18/cx18-fileops.c
+++ b/drivers/media/video/cx18/cx18-fileops.c
@@ -608,7 +608,7 @@ int cx18_v4l2_close(struct file *filp)
608 /* Mark that the radio is no longer in use */ 608 /* Mark that the radio is no longer in use */
609 clear_bit(CX18_F_I_RADIO_USER, &cx->i_flags); 609 clear_bit(CX18_F_I_RADIO_USER, &cx->i_flags);
610 /* Switch tuner to TV */ 610 /* Switch tuner to TV */
611 cx18_call_all(cx, tuner, s_std, cx->std); 611 cx18_call_all(cx, core, s_std, cx->std);
612 /* Select correct audio input (i.e. TV tuner or Line in) */ 612 /* Select correct audio input (i.e. TV tuner or Line in) */
613 cx18_audio_set_io(cx); 613 cx18_audio_set_io(cx);
614 if (atomic_read(&cx->ana_capturing) > 0) { 614 if (atomic_read(&cx->ana_capturing) > 0) {
diff --git a/drivers/media/video/cx18/cx18-gpio.c b/drivers/media/video/cx18/cx18-gpio.c
index 5518d1424f8f..ae2460e6860a 100644
--- a/drivers/media/video/cx18/cx18-gpio.c
+++ b/drivers/media/video/cx18/cx18-gpio.c
@@ -180,10 +180,10 @@ static int gpiomux_s_audio_routing(struct v4l2_subdev *sd,
180 180
181static const struct v4l2_subdev_core_ops gpiomux_core_ops = { 181static const struct v4l2_subdev_core_ops gpiomux_core_ops = {
182 .log_status = gpiomux_log_status, 182 .log_status = gpiomux_log_status,
183 .s_std = gpiomux_s_std,
183}; 184};
184 185
185static const struct v4l2_subdev_tuner_ops gpiomux_tuner_ops = { 186static const struct v4l2_subdev_tuner_ops gpiomux_tuner_ops = {
186 .s_std = gpiomux_s_std,
187 .s_radio = gpiomux_s_radio, 187 .s_radio = gpiomux_s_radio,
188}; 188};
189 189
diff --git a/drivers/media/video/cx18/cx18-ioctl.c b/drivers/media/video/cx18/cx18-ioctl.c
index e4c9e3d8bacd..f572080590fb 100644
--- a/drivers/media/video/cx18/cx18-ioctl.c
+++ b/drivers/media/video/cx18/cx18-ioctl.c
@@ -705,7 +705,7 @@ int cx18_s_std(struct file *file, void *fh, v4l2_std_id *std)
705 (unsigned long long) cx->std); 705 (unsigned long long) cx->std);
706 706
707 /* Tuner */ 707 /* Tuner */
708 cx18_call_all(cx, tuner, s_std, cx->std); 708 cx18_call_all(cx, core, s_std, cx->std);
709 return 0; 709 return 0;
710} 710}
711 711
diff --git a/drivers/media/video/cx231xx/cx231xx-video.c b/drivers/media/video/cx231xx/cx231xx-video.c
index ec5aea3134e6..0645703e6f9c 100644
--- a/drivers/media/video/cx231xx/cx231xx-video.c
+++ b/drivers/media/video/cx231xx/cx231xx-video.c
@@ -1089,7 +1089,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id *norm)
1089 dev->height = f.fmt.pix.height; 1089 dev->height = f.fmt.pix.height;
1090 get_scale(dev, dev->width, dev->height, &dev->hscale, &dev->vscale); 1090 get_scale(dev, dev->width, dev->height, &dev->hscale, &dev->vscale);
1091 1091
1092 call_all(dev, tuner, s_std, dev->norm); 1092 call_all(dev, core, s_std, dev->norm);
1093 1093
1094 mutex_unlock(&dev->lock); 1094 mutex_unlock(&dev->lock);
1095 1095
diff --git a/drivers/media/video/cx23885/cx23885-video.c b/drivers/media/video/cx23885/cx23885-video.c
index f0ac62c5dc83..41f0a2b11872 100644
--- a/drivers/media/video/cx23885/cx23885-video.c
+++ b/drivers/media/video/cx23885/cx23885-video.c
@@ -299,7 +299,7 @@ static int cx23885_set_tvnorm(struct cx23885_dev *dev, v4l2_std_id norm)
299 299
300 dev->tvnorm = norm; 300 dev->tvnorm = norm;
301 301
302 call_all(dev, tuner, s_std, norm); 302 call_all(dev, core, s_std, norm);
303 303
304 return 0; 304 return 0;
305} 305}
diff --git a/drivers/media/video/cx25840/cx25840-core.c b/drivers/media/video/cx25840/cx25840-core.c
index 51266812d338..62090279f46f 100644
--- a/drivers/media/video/cx25840/cx25840-core.c
+++ b/drivers/media/video/cx25840/cx25840-core.c
@@ -1472,6 +1472,7 @@ static const struct v4l2_subdev_core_ops cx25840_core_ops = {
1472 .g_ctrl = cx25840_g_ctrl, 1472 .g_ctrl = cx25840_g_ctrl,
1473 .s_ctrl = cx25840_s_ctrl, 1473 .s_ctrl = cx25840_s_ctrl,
1474 .queryctrl = cx25840_queryctrl, 1474 .queryctrl = cx25840_queryctrl,
1475 .s_std = cx25840_s_std,
1475 .reset = cx25840_reset, 1476 .reset = cx25840_reset,
1476 .load_fw = cx25840_load_fw, 1477 .load_fw = cx25840_load_fw,
1477#ifdef CONFIG_VIDEO_ADV_DEBUG 1478#ifdef CONFIG_VIDEO_ADV_DEBUG
@@ -1482,7 +1483,6 @@ static const struct v4l2_subdev_core_ops cx25840_core_ops = {
1482 1483
1483static const struct v4l2_subdev_tuner_ops cx25840_tuner_ops = { 1484static const struct v4l2_subdev_tuner_ops cx25840_tuner_ops = {
1484 .s_frequency = cx25840_s_frequency, 1485 .s_frequency = cx25840_s_frequency,
1485 .s_std = cx25840_s_std,
1486 .s_radio = cx25840_s_radio, 1486 .s_radio = cx25840_s_radio,
1487 .g_tuner = cx25840_g_tuner, 1487 .g_tuner = cx25840_g_tuner,
1488 .s_tuner = cx25840_s_tuner, 1488 .s_tuner = cx25840_s_tuner,
diff --git a/drivers/media/video/cx88/cx88-core.c b/drivers/media/video/cx88/cx88-core.c
index f2fb9f30bfc1..0e149b22bd19 100644
--- a/drivers/media/video/cx88/cx88-core.c
+++ b/drivers/media/video/cx88/cx88-core.c
@@ -991,7 +991,7 @@ int cx88_set_tvnorm(struct cx88_core *core, v4l2_std_id norm)
991 set_tvaudio(core); 991 set_tvaudio(core);
992 992
993 // tell i2c chips 993 // tell i2c chips
994 call_all(core, tuner, s_std, norm); 994 call_all(core, core, s_std, norm);
995 995
996 // done 996 // done
997 return 0; 997 return 0;
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index 9d4e0c1e170a..96487843a473 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -829,7 +829,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id *norm)
829 get_scale(dev, dev->width, dev->height, &dev->hscale, &dev->vscale); 829 get_scale(dev, dev->width, dev->height, &dev->hscale, &dev->vscale);
830 830
831 em28xx_resolution_set(dev); 831 em28xx_resolution_set(dev);
832 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_std, dev->norm); 832 v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std, dev->norm);
833 833
834 mutex_unlock(&dev->lock); 834 mutex_unlock(&dev->lock);
835 return 0; 835 return 0;
diff --git a/drivers/media/video/ivtv/ivtv-fileops.c b/drivers/media/video/ivtv/ivtv-fileops.c
index cfaacf6096d0..e212337c6513 100644
--- a/drivers/media/video/ivtv/ivtv-fileops.c
+++ b/drivers/media/video/ivtv/ivtv-fileops.c
@@ -857,7 +857,7 @@ int ivtv_v4l2_close(struct file *filp)
857 /* Mark that the radio is no longer in use */ 857 /* Mark that the radio is no longer in use */
858 clear_bit(IVTV_F_I_RADIO_USER, &itv->i_flags); 858 clear_bit(IVTV_F_I_RADIO_USER, &itv->i_flags);
859 /* Switch tuner to TV */ 859 /* Switch tuner to TV */
860 ivtv_call_all(itv, tuner, s_std, itv->std); 860 ivtv_call_all(itv, core, s_std, itv->std);
861 /* Select correct audio input (i.e. TV tuner or Line in) */ 861 /* Select correct audio input (i.e. TV tuner or Line in) */
862 ivtv_audio_set_io(itv); 862 ivtv_audio_set_io(itv);
863 if (itv->hw_flags & IVTV_HW_SAA711X) 863 if (itv->hw_flags & IVTV_HW_SAA711X)
diff --git a/drivers/media/video/ivtv/ivtv-gpio.c b/drivers/media/video/ivtv/ivtv-gpio.c
index 3321983d89e5..0dd5f53b7319 100644
--- a/drivers/media/video/ivtv/ivtv-gpio.c
+++ b/drivers/media/video/ivtv/ivtv-gpio.c
@@ -342,10 +342,10 @@ static const struct v4l2_subdev_core_ops subdev_core_ops = {
342 .g_ctrl = subdev_g_ctrl, 342 .g_ctrl = subdev_g_ctrl,
343 .s_ctrl = subdev_s_ctrl, 343 .s_ctrl = subdev_s_ctrl,
344 .queryctrl = subdev_queryctrl, 344 .queryctrl = subdev_queryctrl,
345 .s_std = subdev_s_std,
345}; 346};
346 347
347static const struct v4l2_subdev_tuner_ops subdev_tuner_ops = { 348static const struct v4l2_subdev_tuner_ops subdev_tuner_ops = {
348 .s_std = subdev_s_std,
349 .s_radio = subdev_s_radio, 349 .s_radio = subdev_s_radio,
350 .g_tuner = subdev_g_tuner, 350 .g_tuner = subdev_g_tuner,
351 .s_tuner = subdev_s_tuner, 351 .s_tuner = subdev_s_tuner,
diff --git a/drivers/media/video/ivtv/ivtv-ioctl.c b/drivers/media/video/ivtv/ivtv-ioctl.c
index 9a0424298af1..052fbe9cde86 100644
--- a/drivers/media/video/ivtv/ivtv-ioctl.c
+++ b/drivers/media/video/ivtv/ivtv-ioctl.c
@@ -1121,7 +1121,7 @@ int ivtv_s_std(struct file *file, void *fh, v4l2_std_id *std)
1121 IVTV_DEBUG_INFO("Switching standard to %llx.\n", (unsigned long long)itv->std); 1121 IVTV_DEBUG_INFO("Switching standard to %llx.\n", (unsigned long long)itv->std);
1122 1122
1123 /* Tuner */ 1123 /* Tuner */
1124 ivtv_call_all(itv, tuner, s_std, itv->std); 1124 ivtv_call_all(itv, core, s_std, itv->std);
1125 1125
1126 if (itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT) { 1126 if (itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT) {
1127 /* set display standard */ 1127 /* set display standard */
diff --git a/drivers/media/video/ks0127.c b/drivers/media/video/ks0127.c
index 841024b6bcdf..4e5f0e7dc591 100644
--- a/drivers/media/video/ks0127.c
+++ b/drivers/media/video/ks0127.c
@@ -648,9 +648,6 @@ static int ks0127_g_chip_ident(struct v4l2_subdev *sd, struct v4l2_dbg_chip_iden
648 648
649static const struct v4l2_subdev_core_ops ks0127_core_ops = { 649static const struct v4l2_subdev_core_ops ks0127_core_ops = {
650 .g_chip_ident = ks0127_g_chip_ident, 650 .g_chip_ident = ks0127_g_chip_ident,
651};
652
653static const struct v4l2_subdev_tuner_ops ks0127_tuner_ops = {
654 .s_std = ks0127_s_std, 651 .s_std = ks0127_s_std,
655}; 652};
656 653
@@ -663,7 +660,6 @@ static const struct v4l2_subdev_video_ops ks0127_video_ops = {
663 660
664static const struct v4l2_subdev_ops ks0127_ops = { 661static const struct v4l2_subdev_ops ks0127_ops = {
665 .core = &ks0127_core_ops, 662 .core = &ks0127_core_ops,
666 .tuner = &ks0127_tuner_ops,
667 .video = &ks0127_video_ops, 663 .video = &ks0127_video_ops,
668}; 664};
669 665
diff --git a/drivers/media/video/msp3400-driver.c b/drivers/media/video/msp3400-driver.c
index aeab597a0406..38e639750a48 100644
--- a/drivers/media/video/msp3400-driver.c
+++ b/drivers/media/video/msp3400-driver.c
@@ -700,6 +700,7 @@ static const struct v4l2_subdev_core_ops msp_core_ops = {
700 .g_ctrl = msp_g_ctrl, 700 .g_ctrl = msp_g_ctrl,
701 .s_ctrl = msp_s_ctrl, 701 .s_ctrl = msp_s_ctrl,
702 .queryctrl = msp_queryctrl, 702 .queryctrl = msp_queryctrl,
703 .s_std = msp_s_std,
703}; 704};
704 705
705static const struct v4l2_subdev_tuner_ops msp_tuner_ops = { 706static const struct v4l2_subdev_tuner_ops msp_tuner_ops = {
@@ -707,7 +708,6 @@ static const struct v4l2_subdev_tuner_ops msp_tuner_ops = {
707 .g_tuner = msp_g_tuner, 708 .g_tuner = msp_g_tuner,
708 .s_tuner = msp_s_tuner, 709 .s_tuner = msp_s_tuner,
709 .s_radio = msp_s_radio, 710 .s_radio = msp_s_radio,
710 .s_std = msp_s_std,
711}; 711};
712 712
713static const struct v4l2_subdev_audio_ops msp_audio_ops = { 713static const struct v4l2_subdev_audio_ops msp_audio_ops = {
diff --git a/drivers/media/video/mxb.c b/drivers/media/video/mxb.c
index 84aec62e8452..238bb40ae098 100644
--- a/drivers/media/video/mxb.c
+++ b/drivers/media/video/mxb.c
@@ -266,7 +266,7 @@ static int mxb_init_done(struct saa7146_dev* dev)
266 int i = 0, err = 0; 266 int i = 0, err = 0;
267 267
268 /* select video mode in saa7111a */ 268 /* select video mode in saa7111a */
269 saa7111a_call(mxb, tuner, s_std, std); 269 saa7111a_call(mxb, core, s_std, std);
270 270
271 /* select tuner-output on saa7111a */ 271 /* select tuner-output on saa7111a */
272 i = 0; 272 i = 0;
@@ -286,7 +286,7 @@ static int mxb_init_done(struct saa7146_dev* dev)
286 tuner_call(mxb, tuner, s_frequency, &mxb->cur_freq); 286 tuner_call(mxb, tuner, s_frequency, &mxb->cur_freq);
287 287
288 /* set a default video standard */ 288 /* set a default video standard */
289 tuner_call(mxb, tuner, s_std, std); 289 tuner_call(mxb, core, s_std, std);
290 290
291 /* mute audio on tea6420s */ 291 /* mute audio on tea6420s */
292 tea6420_1_call(mxb, audio, s_routing, &TEA6420_line[6][0]); 292 tea6420_1_call(mxb, audio, s_routing, &TEA6420_line[6][0]);
@@ -788,7 +788,7 @@ static int std_callback(struct saa7146_dev *dev, struct saa7146_standard *standa
788 saa7146_write(dev, GPIO_CTRL, 0x00404050); 788 saa7146_write(dev, GPIO_CTRL, 0x00404050);
789 /* unset the 7111 gpio register -- I don't know what this does exactly */ 789 /* unset the 7111 gpio register -- I don't know what this does exactly */
790 saa7111a_call(mxb, core, s_gpio, 0); 790 saa7111a_call(mxb, core, s_gpio, 0);
791 tuner_call(mxb, tuner, s_std, std); 791 tuner_call(mxb, core, s_std, std);
792 } else { 792 } else {
793 v4l2_std_id std = V4L2_STD_PAL_BG; 793 v4l2_std_id std = V4L2_STD_PAL_BG;
794 794
@@ -797,7 +797,7 @@ static int std_callback(struct saa7146_dev *dev, struct saa7146_standard *standa
797 saa7146_write(dev, GPIO_CTRL, 0x00404050); 797 saa7146_write(dev, GPIO_CTRL, 0x00404050);
798 /* set the 7111 gpio register -- I don't know what this does exactly */ 798 /* set the 7111 gpio register -- I don't know what this does exactly */
799 saa7111a_call(mxb, core, s_gpio, 1); 799 saa7111a_call(mxb, core, s_gpio, 1);
800 tuner_call(mxb, tuner, s_std, std); 800 tuner_call(mxb, core, s_std, std);
801 } 801 }
802 return 0; 802 return 0;
803} 803}
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 59a0259266fb..2ee9d4d4c55c 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -2944,7 +2944,7 @@ static void pvr2_subdev_update(struct pvr2_hdw *hdw)
2944 v4l2_std_id vs; 2944 v4l2_std_id vs;
2945 vs = hdw->std_mask_cur; 2945 vs = hdw->std_mask_cur;
2946 v4l2_device_call_all(&hdw->v4l2_dev, 0, 2946 v4l2_device_call_all(&hdw->v4l2_dev, 0,
2947 tuner, s_std, vs); 2947 core, s_std, vs);
2948 } 2948 }
2949 hdw->tuner_signal_stale = !0; 2949 hdw->tuner_signal_stale = !0;
2950 hdw->cropcap_stale = !0; 2950 hdw->cropcap_stale = !0;
diff --git a/drivers/media/video/saa7110.c b/drivers/media/video/saa7110.c
index df4e08d2dceb..8bb1fc17d195 100644
--- a/drivers/media/video/saa7110.c
+++ b/drivers/media/video/saa7110.c
@@ -414,9 +414,6 @@ static const struct v4l2_subdev_core_ops saa7110_core_ops = {
414 .g_ctrl = saa7110_g_ctrl, 414 .g_ctrl = saa7110_g_ctrl,
415 .s_ctrl = saa7110_s_ctrl, 415 .s_ctrl = saa7110_s_ctrl,
416 .queryctrl = saa7110_queryctrl, 416 .queryctrl = saa7110_queryctrl,
417};
418
419static const struct v4l2_subdev_tuner_ops saa7110_tuner_ops = {
420 .s_std = saa7110_s_std, 417 .s_std = saa7110_s_std,
421}; 418};
422 419
@@ -429,7 +426,6 @@ static const struct v4l2_subdev_video_ops saa7110_video_ops = {
429 426
430static const struct v4l2_subdev_ops saa7110_ops = { 427static const struct v4l2_subdev_ops saa7110_ops = {
431 .core = &saa7110_core_ops, 428 .core = &saa7110_core_ops,
432 .tuner = &saa7110_tuner_ops,
433 .video = &saa7110_video_ops, 429 .video = &saa7110_video_ops,
434}; 430};
435 431
diff --git a/drivers/media/video/saa7115.c b/drivers/media/video/saa7115.c
index 5ee94d618695..e6538eb3aa17 100644
--- a/drivers/media/video/saa7115.c
+++ b/drivers/media/video/saa7115.c
@@ -1500,6 +1500,7 @@ static const struct v4l2_subdev_core_ops saa711x_core_ops = {
1500 .g_ctrl = saa711x_g_ctrl, 1500 .g_ctrl = saa711x_g_ctrl,
1501 .s_ctrl = saa711x_s_ctrl, 1501 .s_ctrl = saa711x_s_ctrl,
1502 .queryctrl = saa711x_queryctrl, 1502 .queryctrl = saa711x_queryctrl,
1503 .s_std = saa711x_s_std,
1503 .reset = saa711x_reset, 1504 .reset = saa711x_reset,
1504 .s_gpio = saa711x_s_gpio, 1505 .s_gpio = saa711x_s_gpio,
1505#ifdef CONFIG_VIDEO_ADV_DEBUG 1506#ifdef CONFIG_VIDEO_ADV_DEBUG
@@ -1509,7 +1510,6 @@ static const struct v4l2_subdev_core_ops saa711x_core_ops = {
1509}; 1510};
1510 1511
1511static const struct v4l2_subdev_tuner_ops saa711x_tuner_ops = { 1512static const struct v4l2_subdev_tuner_ops saa711x_tuner_ops = {
1512 .s_std = saa711x_s_std,
1513 .s_radio = saa711x_s_radio, 1513 .s_radio = saa711x_s_radio,
1514 .g_tuner = saa711x_g_tuner, 1514 .g_tuner = saa711x_g_tuner,
1515}; 1515};
diff --git a/drivers/media/video/saa7134/saa6752hs.c b/drivers/media/video/saa7134/saa6752hs.c
index dc2213e2f86e..63c4b8f1f541 100644
--- a/drivers/media/video/saa7134/saa6752hs.c
+++ b/drivers/media/video/saa7134/saa6752hs.c
@@ -928,9 +928,6 @@ static const struct v4l2_subdev_core_ops saa6752hs_core_ops = {
928 .g_ext_ctrls = saa6752hs_g_ext_ctrls, 928 .g_ext_ctrls = saa6752hs_g_ext_ctrls,
929 .s_ext_ctrls = saa6752hs_s_ext_ctrls, 929 .s_ext_ctrls = saa6752hs_s_ext_ctrls,
930 .try_ext_ctrls = saa6752hs_try_ext_ctrls, 930 .try_ext_ctrls = saa6752hs_try_ext_ctrls,
931};
932
933static const struct v4l2_subdev_tuner_ops saa6752hs_tuner_ops = {
934 .s_std = saa6752hs_s_std, 931 .s_std = saa6752hs_s_std,
935}; 932};
936 933
@@ -941,7 +938,6 @@ static const struct v4l2_subdev_video_ops saa6752hs_video_ops = {
941 938
942static const struct v4l2_subdev_ops saa6752hs_ops = { 939static const struct v4l2_subdev_ops saa6752hs_ops = {
943 .core = &saa6752hs_core_ops, 940 .core = &saa6752hs_core_ops,
944 .tuner = &saa6752hs_tuner_ops,
945 .video = &saa6752hs_video_ops, 941 .video = &saa6752hs_video_ops,
946}; 942};
947 943
diff --git a/drivers/media/video/saa7134/saa7134-video.c b/drivers/media/video/saa7134/saa7134-video.c
index b520e9c2dac1..493cad941460 100644
--- a/drivers/media/video/saa7134/saa7134-video.c
+++ b/drivers/media/video/saa7134/saa7134-video.c
@@ -625,10 +625,10 @@ void saa7134_set_tvnorm_hw(struct saa7134_dev *dev)
625 saa7134_set_decoder(dev); 625 saa7134_set_decoder(dev);
626 626
627 if (card_in(dev, dev->ctl_input).tv) 627 if (card_in(dev, dev->ctl_input).tv)
628 saa_call_all(dev, tuner, s_std, dev->tvnorm->id); 628 saa_call_all(dev, core, s_std, dev->tvnorm->id);
629 /* Set the correct norm for the saa6752hs. This function 629 /* Set the correct norm for the saa6752hs. This function
630 does nothing if there is no saa6752hs. */ 630 does nothing if there is no saa6752hs. */
631 saa_call_empress(dev, tuner, s_std, dev->tvnorm->id); 631 saa_call_empress(dev, core, s_std, dev->tvnorm->id);
632} 632}
633 633
634static void set_h_prescale(struct saa7134_dev *dev, int task, int prescale) 634static void set_h_prescale(struct saa7134_dev *dev, int task, int prescale)
diff --git a/drivers/media/video/saa717x.c b/drivers/media/video/saa717x.c
index 25bf2303a6b5..b73801caaa9d 100644
--- a/drivers/media/video/saa717x.c
+++ b/drivers/media/video/saa717x.c
@@ -1390,12 +1390,12 @@ static const struct v4l2_subdev_core_ops saa717x_core_ops = {
1390 .queryctrl = saa717x_queryctrl, 1390 .queryctrl = saa717x_queryctrl,
1391 .g_ctrl = saa717x_g_ctrl, 1391 .g_ctrl = saa717x_g_ctrl,
1392 .s_ctrl = saa717x_s_ctrl, 1392 .s_ctrl = saa717x_s_ctrl,
1393 .s_std = saa717x_s_std,
1393}; 1394};
1394 1395
1395static const struct v4l2_subdev_tuner_ops saa717x_tuner_ops = { 1396static const struct v4l2_subdev_tuner_ops saa717x_tuner_ops = {
1396 .g_tuner = saa717x_g_tuner, 1397 .g_tuner = saa717x_g_tuner,
1397 .s_tuner = saa717x_s_tuner, 1398 .s_tuner = saa717x_s_tuner,
1398 .s_std = saa717x_s_std,
1399 .s_radio = saa717x_s_radio, 1399 .s_radio = saa717x_s_radio,
1400}; 1400};
1401 1401
diff --git a/drivers/media/video/saa7191.c b/drivers/media/video/saa7191.c
index 3f523aeec56e..13ab4f2ddcc5 100644
--- a/drivers/media/video/saa7191.c
+++ b/drivers/media/video/saa7191.c
@@ -582,9 +582,6 @@ static const struct v4l2_subdev_core_ops saa7191_core_ops = {
582 .g_chip_ident = saa7191_g_chip_ident, 582 .g_chip_ident = saa7191_g_chip_ident,
583 .g_ctrl = saa7191_g_ctrl, 583 .g_ctrl = saa7191_g_ctrl,
584 .s_ctrl = saa7191_s_ctrl, 584 .s_ctrl = saa7191_s_ctrl,
585};
586
587static const struct v4l2_subdev_tuner_ops saa7191_tuner_ops = {
588 .s_std = saa7191_s_std, 585 .s_std = saa7191_s_std,
589}; 586};
590 587
@@ -597,7 +594,6 @@ static const struct v4l2_subdev_video_ops saa7191_video_ops = {
597static const struct v4l2_subdev_ops saa7191_ops = { 594static const struct v4l2_subdev_ops saa7191_ops = {
598 .core = &saa7191_core_ops, 595 .core = &saa7191_core_ops,
599 .video = &saa7191_video_ops, 596 .video = &saa7191_video_ops,
600 .tuner = &saa7191_tuner_ops,
601}; 597};
602 598
603static int saa7191_probe(struct i2c_client *client, 599static int saa7191_probe(struct i2c_client *client,
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c
index 61f100703456..28af7b7e9512 100644
--- a/drivers/media/video/tuner-core.c
+++ b/drivers/media/video/tuner-core.c
@@ -981,10 +981,10 @@ static int tuner_command(struct i2c_client *client, unsigned cmd, void *arg)
981 981
982static const struct v4l2_subdev_core_ops tuner_core_ops = { 982static const struct v4l2_subdev_core_ops tuner_core_ops = {
983 .log_status = tuner_log_status, 983 .log_status = tuner_log_status,
984 .s_std = tuner_s_std,
984}; 985};
985 986
986static const struct v4l2_subdev_tuner_ops tuner_tuner_ops = { 987static const struct v4l2_subdev_tuner_ops tuner_tuner_ops = {
987 .s_std = tuner_s_std,
988 .s_radio = tuner_s_radio, 988 .s_radio = tuner_s_radio,
989 .g_tuner = tuner_g_tuner, 989 .g_tuner = tuner_g_tuner,
990 .s_tuner = tuner_s_tuner, 990 .s_tuner = tuner_s_tuner,
diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c
index 994753cbd630..2a49c839f8ac 100644
--- a/drivers/media/video/tvaudio.c
+++ b/drivers/media/video/tvaudio.c
@@ -1911,12 +1911,12 @@ static const struct v4l2_subdev_core_ops tvaudio_core_ops = {
1911 .queryctrl = tvaudio_queryctrl, 1911 .queryctrl = tvaudio_queryctrl,
1912 .g_ctrl = tvaudio_g_ctrl, 1912 .g_ctrl = tvaudio_g_ctrl,
1913 .s_ctrl = tvaudio_s_ctrl, 1913 .s_ctrl = tvaudio_s_ctrl,
1914 .s_std = tvaudio_s_std,
1914}; 1915};
1915 1916
1916static const struct v4l2_subdev_tuner_ops tvaudio_tuner_ops = { 1917static const struct v4l2_subdev_tuner_ops tvaudio_tuner_ops = {
1917 .s_radio = tvaudio_s_radio, 1918 .s_radio = tvaudio_s_radio,
1918 .s_frequency = tvaudio_s_frequency, 1919 .s_frequency = tvaudio_s_frequency,
1919 .s_std = tvaudio_s_std,
1920 .s_tuner = tvaudio_s_tuner, 1920 .s_tuner = tvaudio_s_tuner,
1921 .s_tuner = tvaudio_g_tuner, 1921 .s_tuner = tvaudio_g_tuner,
1922}; 1922};
diff --git a/drivers/media/video/tvp5150.c b/drivers/media/video/tvp5150.c
index d7f3bad2c02f..4aea84a392e8 100644
--- a/drivers/media/video/tvp5150.c
+++ b/drivers/media/video/tvp5150.c
@@ -1025,6 +1025,7 @@ static const struct v4l2_subdev_core_ops tvp5150_core_ops = {
1025 .g_ctrl = tvp5150_g_ctrl, 1025 .g_ctrl = tvp5150_g_ctrl,
1026 .s_ctrl = tvp5150_s_ctrl, 1026 .s_ctrl = tvp5150_s_ctrl,
1027 .queryctrl = tvp5150_queryctrl, 1027 .queryctrl = tvp5150_queryctrl,
1028 .s_std = tvp5150_s_std,
1028 .reset = tvp5150_reset, 1029 .reset = tvp5150_reset,
1029 .g_chip_ident = tvp5150_g_chip_ident, 1030 .g_chip_ident = tvp5150_g_chip_ident,
1030#ifdef CONFIG_VIDEO_ADV_DEBUG 1031#ifdef CONFIG_VIDEO_ADV_DEBUG
@@ -1034,7 +1035,6 @@ static const struct v4l2_subdev_core_ops tvp5150_core_ops = {
1034}; 1035};
1035 1036
1036static const struct v4l2_subdev_tuner_ops tvp5150_tuner_ops = { 1037static const struct v4l2_subdev_tuner_ops tvp5150_tuner_ops = {
1037 .s_std = tvp5150_s_std,
1038 .g_tuner = tvp5150_g_tuner, 1038 .g_tuner = tvp5150_g_tuner,
1039}; 1039};
1040 1040
diff --git a/drivers/media/video/usbvision/usbvision-video.c b/drivers/media/video/usbvision/usbvision-video.c
index 7db493ca87bd..c8f8a3c4bbf8 100644
--- a/drivers/media/video/usbvision/usbvision-video.c
+++ b/drivers/media/video/usbvision/usbvision-video.c
@@ -621,7 +621,7 @@ static int vidioc_s_std (struct file *file, void *priv, v4l2_std_id *id)
621 usbvision->tvnormId=*id; 621 usbvision->tvnormId=*id;
622 622
623 mutex_lock(&usbvision->lock); 623 mutex_lock(&usbvision->lock);
624 call_all(usbvision, tuner, s_std, usbvision->tvnormId); 624 call_all(usbvision, core, s_std, usbvision->tvnormId);
625 mutex_unlock(&usbvision->lock); 625 mutex_unlock(&usbvision->lock);
626 /* propagate the change to the decoder */ 626 /* propagate the change to the decoder */
627 usbvision_muxsel(usbvision, usbvision->ctl_input); 627 usbvision_muxsel(usbvision, usbvision->ctl_input);
diff --git a/drivers/media/video/vino.c b/drivers/media/video/vino.c
index 8da4dd1e0e94..c39a2d4d5178 100644
--- a/drivers/media/video/vino.c
+++ b/drivers/media/video/vino.c
@@ -2589,7 +2589,7 @@ static int vino_acquire_input(struct vino_channel_settings *vcs)
2589 } 2589 }
2590 if (data_norm == 3) 2590 if (data_norm == 3)
2591 data_norm = VINO_DATA_NORM_PAL; 2591 data_norm = VINO_DATA_NORM_PAL;
2592 ret = decoder_call(tuner, s_std, norm); 2592 ret = decoder_call(core, s_std, norm);
2593 } 2593 }
2594 2594
2595 spin_lock_irqsave(&vino_drvdata->input_lock, flags); 2595 spin_lock_irqsave(&vino_drvdata->input_lock, flags);
@@ -2679,7 +2679,7 @@ static int vino_set_input(struct vino_channel_settings *vcs, int input)
2679 } 2679 }
2680 if (data_norm == 3) 2680 if (data_norm == 3)
2681 data_norm = VINO_DATA_NORM_PAL; 2681 data_norm = VINO_DATA_NORM_PAL;
2682 ret = decoder_call(tuner, s_std, norm); 2682 ret = decoder_call(core, s_std, norm);
2683 } 2683 }
2684 2684
2685 spin_lock_irqsave(&vino_drvdata->input_lock, flags); 2685 spin_lock_irqsave(&vino_drvdata->input_lock, flags);
@@ -2813,7 +2813,7 @@ static int vino_set_data_norm(struct vino_channel_settings *vcs,
2813 * as it may take a while... */ 2813 * as it may take a while... */
2814 2814
2815 norm = vino_data_norms[data_norm].std; 2815 norm = vino_data_norms[data_norm].std;
2816 err = decoder_call(tuner, s_std, norm); 2816 err = decoder_call(core, s_std, norm);
2817 2817
2818 spin_lock_irqsave(&vino_drvdata->input_lock, *flags); 2818 spin_lock_irqsave(&vino_drvdata->input_lock, *flags);
2819 2819
diff --git a/drivers/media/video/vp27smpx.c b/drivers/media/video/vp27smpx.c
index 42e23a4fa607..38e53b303cc3 100644
--- a/drivers/media/video/vp27smpx.c
+++ b/drivers/media/video/vp27smpx.c
@@ -134,11 +134,11 @@ static int vp27smpx_log_status(struct v4l2_subdev *sd)
134static const struct v4l2_subdev_core_ops vp27smpx_core_ops = { 134static const struct v4l2_subdev_core_ops vp27smpx_core_ops = {
135 .log_status = vp27smpx_log_status, 135 .log_status = vp27smpx_log_status,
136 .g_chip_ident = vp27smpx_g_chip_ident, 136 .g_chip_ident = vp27smpx_g_chip_ident,
137 .s_std = vp27smpx_s_std,
137}; 138};
138 139
139static const struct v4l2_subdev_tuner_ops vp27smpx_tuner_ops = { 140static const struct v4l2_subdev_tuner_ops vp27smpx_tuner_ops = {
140 .s_radio = vp27smpx_s_radio, 141 .s_radio = vp27smpx_s_radio,
141 .s_std = vp27smpx_s_std,
142 .s_tuner = vp27smpx_s_tuner, 142 .s_tuner = vp27smpx_s_tuner,
143 .g_tuner = vp27smpx_g_tuner, 143 .g_tuner = vp27smpx_g_tuner,
144}; 144};
diff --git a/drivers/media/video/vpx3220.c b/drivers/media/video/vpx3220.c
index 2fa7e8bb5746..59a8bb046c35 100644
--- a/drivers/media/video/vpx3220.c
+++ b/drivers/media/video/vpx3220.c
@@ -516,9 +516,6 @@ static const struct v4l2_subdev_core_ops vpx3220_core_ops = {
516 .g_ctrl = vpx3220_g_ctrl, 516 .g_ctrl = vpx3220_g_ctrl,
517 .s_ctrl = vpx3220_s_ctrl, 517 .s_ctrl = vpx3220_s_ctrl,
518 .queryctrl = vpx3220_queryctrl, 518 .queryctrl = vpx3220_queryctrl,
519};
520
521static const struct v4l2_subdev_tuner_ops vpx3220_tuner_ops = {
522 .s_std = vpx3220_s_std, 519 .s_std = vpx3220_s_std,
523}; 520};
524 521
@@ -531,7 +528,6 @@ static const struct v4l2_subdev_video_ops vpx3220_video_ops = {
531 528
532static const struct v4l2_subdev_ops vpx3220_ops = { 529static const struct v4l2_subdev_ops vpx3220_ops = {
533 .core = &vpx3220_core_ops, 530 .core = &vpx3220_core_ops,
534 .tuner = &vpx3220_tuner_ops,
535 .video = &vpx3220_video_ops, 531 .video = &vpx3220_video_ops,
536}; 532};
537 533
diff --git a/drivers/media/video/zoran/zoran_device.c b/drivers/media/video/zoran/zoran_device.c
index e0223deed35e..25e565f0502a 100644
--- a/drivers/media/video/zoran/zoran_device.c
+++ b/drivers/media/video/zoran/zoran_device.c
@@ -1584,7 +1584,7 @@ zoran_init_hardware (struct zoran *zr)
1584 route.input = zr->card.input[zr->input].muxsel; 1584 route.input = zr->card.input[zr->input].muxsel;
1585 1585
1586 decoder_call(zr, core, init, 0); 1586 decoder_call(zr, core, init, 0);
1587 decoder_call(zr, tuner, s_std, zr->norm); 1587 decoder_call(zr, core, s_std, zr->norm);
1588 decoder_call(zr, video, s_routing, &route); 1588 decoder_call(zr, video, s_routing, &route);
1589 1589
1590 encoder_call(zr, core, init, 0); 1590 encoder_call(zr, core, init, 0);
diff --git a/drivers/media/video/zoran/zoran_driver.c b/drivers/media/video/zoran/zoran_driver.c
index f16e57cf11e4..979e8d0e80f5 100644
--- a/drivers/media/video/zoran/zoran_driver.c
+++ b/drivers/media/video/zoran/zoran_driver.c
@@ -1449,7 +1449,7 @@ zoran_set_norm (struct zoran *zr,
1449 v4l2_std_id std = 0; 1449 v4l2_std_id std = 0;
1450 1450
1451 decoder_call(zr, video, querystd, &std); 1451 decoder_call(zr, video, querystd, &std);
1452 decoder_call(zr, tuner, s_std, std); 1452 decoder_call(zr, core, s_std, std);
1453 1453
1454 /* let changes come into effect */ 1454 /* let changes come into effect */
1455 ssleep(2); 1455 ssleep(2);
@@ -1461,7 +1461,7 @@ zoran_set_norm (struct zoran *zr,
1461 "%s: %s - no norm detected\n", 1461 "%s: %s - no norm detected\n",
1462 ZR_DEVNAME(zr), __func__); 1462 ZR_DEVNAME(zr), __func__);
1463 /* reset norm */ 1463 /* reset norm */
1464 decoder_call(zr, tuner, s_std, zr->norm); 1464 decoder_call(zr, core, s_std, zr->norm);
1465 return -EIO; 1465 return -EIO;
1466 } 1466 }
1467 1467
@@ -1480,7 +1480,7 @@ zoran_set_norm (struct zoran *zr,
1480 if (on) 1480 if (on)
1481 zr36057_overlay(zr, 0); 1481 zr36057_overlay(zr, 0);
1482 1482
1483 decoder_call(zr, tuner, s_std, norm); 1483 decoder_call(zr, core, s_std, norm);
1484 encoder_call(zr, video, s_std_output, norm); 1484 encoder_call(zr, video, s_std_output, norm);
1485 1485
1486 if (on) 1486 if (on)
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index 38b89cf7c995..b4e48dc3f2ba 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -113,6 +113,7 @@ struct v4l2_subdev_core_ops {
113 int (*s_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls); 113 int (*s_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls);
114 int (*try_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls); 114 int (*try_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls);
115 int (*querymenu)(struct v4l2_subdev *sd, struct v4l2_querymenu *qm); 115 int (*querymenu)(struct v4l2_subdev *sd, struct v4l2_querymenu *qm);
116 int (*s_std)(struct v4l2_subdev *sd, v4l2_std_id norm);
116 long (*ioctl)(struct v4l2_subdev *sd, unsigned int cmd, void *arg); 117 long (*ioctl)(struct v4l2_subdev *sd, unsigned int cmd, void *arg);
117#ifdef CONFIG_VIDEO_ADV_DEBUG 118#ifdef CONFIG_VIDEO_ADV_DEBUG
118 int (*g_register)(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg); 119 int (*g_register)(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg);
@@ -137,7 +138,6 @@ struct v4l2_subdev_tuner_ops {
137 int (*g_frequency)(struct v4l2_subdev *sd, struct v4l2_frequency *freq); 138 int (*g_frequency)(struct v4l2_subdev *sd, struct v4l2_frequency *freq);
138 int (*g_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt); 139 int (*g_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt);
139 int (*s_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt); 140 int (*s_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt);
140 int (*s_std)(struct v4l2_subdev *sd, v4l2_std_id norm);
141 int (*s_type_addr)(struct v4l2_subdev *sd, struct tuner_setup *type); 141 int (*s_type_addr)(struct v4l2_subdev *sd, struct tuner_setup *type);
142 int (*s_config)(struct v4l2_subdev *sd, const struct v4l2_priv_tun_config *config); 142 int (*s_config)(struct v4l2_subdev *sd, const struct v4l2_priv_tun_config *config);
143 int (*s_standby)(struct v4l2_subdev *sd); 143 int (*s_standby)(struct v4l2_subdev *sd);