All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans Verkuil <hverkuil@xs4all.nl>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	linux-media@vger.kernel.org
Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Subject: Re: [PATCH] v4l: subdev: Move [gs]_std operation to video ops
Date: Tue, 22 Apr 2014 15:01:29 +0200	[thread overview]
Message-ID: <53566829.4050104@xs4all.nl> (raw)
In-Reply-To: <1394532878-3943-1-git-send-email-laurent.pinchart@ideasonboard.com>

Hi Laurent,

On 03/11/2014 11:14 AM, Laurent Pinchart wrote:
> The g_std and s_std operations are video-related, move them to the video
> ops where they belong.

You need to rebase this as it no longer applies to adv7180.c (trivial fix).

Anyway, after rebasing:

Acked-by: Hans Verkuil <hans.verkuil@cisco.com>

I've also run the daily build with this patch without errors, so it looks
like nothing was missed :-)

Regards,

	Hans

> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>  drivers/media/i2c/adv7180.c                     |  6 +-----
>  drivers/media/i2c/adv7183.c                     |  4 ++--
>  drivers/media/i2c/adv7842.c                     |  4 ++--
>  drivers/media/i2c/bt819.c                       |  2 +-
>  drivers/media/i2c/cx25840/cx25840-core.c        |  4 ++--
>  drivers/media/i2c/ks0127.c                      |  6 +-----
>  drivers/media/i2c/ml86v7667.c                   |  2 +-
>  drivers/media/i2c/msp3400-driver.c              |  2 +-
>  drivers/media/i2c/saa6752hs.c                   |  2 +-
>  drivers/media/i2c/saa7110.c                     |  2 +-
>  drivers/media/i2c/saa7115.c                     |  2 +-
>  drivers/media/i2c/saa717x.c                     |  2 +-
>  drivers/media/i2c/saa7191.c                     |  2 +-
>  drivers/media/i2c/soc_camera/tw9910.c           |  4 ++--
>  drivers/media/i2c/sony-btf-mpx.c                | 10 +++++-----
>  drivers/media/i2c/tvaudio.c                     |  6 +++++-
>  drivers/media/i2c/tvp514x.c                     |  2 +-
>  drivers/media/i2c/tvp5150.c                     |  2 +-
>  drivers/media/i2c/tw2804.c                      |  2 +-
>  drivers/media/i2c/tw9903.c                      |  2 +-
>  drivers/media/i2c/tw9906.c                      |  2 +-
>  drivers/media/i2c/vp27smpx.c                    |  6 +++++-
>  drivers/media/i2c/vpx3220.c                     |  2 +-
>  drivers/media/pci/bt8xx/bttv-driver.c           |  2 +-
>  drivers/media/pci/cx18/cx18-av-core.c           |  2 +-
>  drivers/media/pci/cx18/cx18-fileops.c           |  2 +-
>  drivers/media/pci/cx18/cx18-gpio.c              |  6 +++++-
>  drivers/media/pci/cx18/cx18-ioctl.c             |  2 +-
>  drivers/media/pci/cx23885/cx23885-video.c       |  4 ++--
>  drivers/media/pci/cx88/cx88-core.c              |  2 +-
>  drivers/media/pci/ivtv/ivtv-fileops.c           |  2 +-
>  drivers/media/pci/ivtv/ivtv-ioctl.c             |  2 +-
>  drivers/media/pci/saa7134/saa7134-video.c       |  4 ++--
>  drivers/media/pci/saa7146/mxb.c                 | 14 +++++++-------
>  drivers/media/pci/sta2x11/sta2x11_vip.c         |  4 ++--
>  drivers/media/pci/zoran/zoran_device.c          |  2 +-
>  drivers/media/pci/zoran/zoran_driver.c          |  2 +-
>  drivers/media/platform/blackfin/bfin_capture.c  |  4 ++--
>  drivers/media/platform/davinci/vpfe_capture.c   |  2 +-
>  drivers/media/platform/davinci/vpif_capture.c   |  2 +-
>  drivers/media/platform/davinci/vpif_display.c   |  2 +-
>  drivers/media/platform/fsl-viu.c                |  2 +-
>  drivers/media/platform/soc_camera/soc_camera.c  |  4 ++--
>  drivers/media/platform/timblogiw.c              |  2 +-
>  drivers/media/platform/vino.c                   |  6 +++---
>  drivers/media/usb/au0828/au0828-video.c         |  4 ++--
>  drivers/media/usb/cx231xx/cx231xx-417.c         |  2 +-
>  drivers/media/usb/cx231xx/cx231xx-video.c       |  6 +++---
>  drivers/media/usb/em28xx/em28xx-video.c         |  4 ++--
>  drivers/media/usb/pvrusb2/pvrusb2-hdw.c         |  2 +-
>  drivers/media/usb/stk1160/stk1160-v4l.c         |  4 ++--
>  drivers/media/usb/tm6000/tm6000-cards.c         |  2 +-
>  drivers/media/usb/tm6000/tm6000-video.c         |  2 +-
>  drivers/media/usb/usbvision/usbvision-video.c   |  2 +-
>  drivers/media/v4l2-core/tuner-core.c            |  6 +++++-
>  drivers/staging/media/davinci_vpfe/vpfe_video.c |  2 +-
>  drivers/staging/media/go7007/go7007-v4l2.c      |  2 +-
>  drivers/staging/media/go7007/s2250-board.c      |  2 +-
>  drivers/staging/media/go7007/saa7134-go7007.c   |  4 ++++
>  include/media/v4l2-subdev.h                     |  6 +++---
>  60 files changed, 107 insertions(+), 95 deletions(-)
> 
> diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
> index d7d99f1..10074a4 100644
> --- a/drivers/media/i2c/adv7180.c
> +++ b/drivers/media/i2c/adv7180.c
> @@ -430,6 +430,7 @@ static int adv7180_g_mbus_config(struct v4l2_subdev *sd,
>  }
>  
>  static const struct v4l2_subdev_video_ops adv7180_video_ops = {
> +	.s_std = adv7180_s_std,
>  	.querystd = adv7180_querystd,
>  	.g_input_status = adv7180_g_input_status,
>  	.s_routing = adv7180_s_routing,
> @@ -440,12 +441,7 @@ static const struct v4l2_subdev_video_ops adv7180_video_ops = {
>  	.g_mbus_config = adv7180_g_mbus_config,
>  };
>  
> -static const struct v4l2_subdev_core_ops adv7180_core_ops = {
> -	.s_std = adv7180_s_std,
> -};
> -
>  static const struct v4l2_subdev_ops adv7180_ops = {
> -	.core = &adv7180_core_ops,
>  	.video = &adv7180_video_ops,
>  };
>  
> diff --git a/drivers/media/i2c/adv7183.c b/drivers/media/i2c/adv7183.c
> index d45e0e3..df461b0 100644
> --- a/drivers/media/i2c/adv7183.c
> +++ b/drivers/media/i2c/adv7183.c
> @@ -501,8 +501,6 @@ static const struct v4l2_ctrl_ops adv7183_ctrl_ops = {
>  
>  static const struct v4l2_subdev_core_ops adv7183_core_ops = {
>  	.log_status = adv7183_log_status,
> -	.g_std = adv7183_g_std,
> -	.s_std = adv7183_s_std,
>  	.reset = adv7183_reset,
>  #ifdef CONFIG_VIDEO_ADV_DEBUG
>  	.g_register = adv7183_g_register,
> @@ -511,6 +509,8 @@ static const struct v4l2_subdev_core_ops adv7183_core_ops = {
>  };
>  
>  static const struct v4l2_subdev_video_ops adv7183_video_ops = {
> +	.g_std = adv7183_g_std,
> +	.s_std = adv7183_s_std,
>  	.s_routing = adv7183_s_routing,
>  	.querystd = adv7183_querystd,
>  	.g_input_status = adv7183_g_input_status,
> diff --git a/drivers/media/i2c/adv7842.c b/drivers/media/i2c/adv7842.c
> index 88ce9dc..12fb675 100644
> --- a/drivers/media/i2c/adv7842.c
> +++ b/drivers/media/i2c/adv7842.c
> @@ -2869,8 +2869,6 @@ static const struct v4l2_ctrl_ops adv7842_ctrl_ops = {
>  
>  static const struct v4l2_subdev_core_ops adv7842_core_ops = {
>  	.log_status = adv7842_log_status,
> -	.g_std = adv7842_g_std,
> -	.s_std = adv7842_s_std,
>  	.ioctl = adv7842_ioctl,
>  	.interrupt_service_routine = adv7842_isr,
>  #ifdef CONFIG_VIDEO_ADV_DEBUG
> @@ -2880,6 +2878,8 @@ static const struct v4l2_subdev_core_ops adv7842_core_ops = {
>  };
>  
>  static const struct v4l2_subdev_video_ops adv7842_video_ops = {
> +	.g_std = adv7842_g_std,
> +	.s_std = adv7842_s_std,
>  	.s_routing = adv7842_s_routing,
>  	.querystd = adv7842_querystd,
>  	.g_input_status = adv7842_g_input_status,
> diff --git a/drivers/media/i2c/bt819.c b/drivers/media/i2c/bt819.c
> index 369cf6f..76b334a 100644
> --- a/drivers/media/i2c/bt819.c
> +++ b/drivers/media/i2c/bt819.c
> @@ -387,10 +387,10 @@ static const struct v4l2_subdev_core_ops bt819_core_ops = {
>  	.s_ctrl = v4l2_subdev_s_ctrl,
>  	.queryctrl = v4l2_subdev_queryctrl,
>  	.querymenu = v4l2_subdev_querymenu,
> -	.s_std = bt819_s_std,
>  };
>  
>  static const struct v4l2_subdev_video_ops bt819_video_ops = {
> +	.s_std = bt819_s_std,
>  	.s_routing = bt819_s_routing,
>  	.s_stream = bt819_s_stream,
>  	.querystd = bt819_querystd,
> diff --git a/drivers/media/i2c/cx25840/cx25840-core.c b/drivers/media/i2c/cx25840/cx25840-core.c
> index 2e3771d..e453a3f 100644
> --- a/drivers/media/i2c/cx25840/cx25840-core.c
> +++ b/drivers/media/i2c/cx25840/cx25840-core.c
> @@ -5041,8 +5041,6 @@ static const struct v4l2_subdev_core_ops cx25840_core_ops = {
>  	.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
>  	.queryctrl = v4l2_subdev_queryctrl,
>  	.querymenu = v4l2_subdev_querymenu,
> -	.s_std = cx25840_s_std,
> -	.g_std = cx25840_g_std,
>  	.reset = cx25840_reset,
>  	.load_fw = cx25840_load_fw,
>  	.s_io_pin_config = common_s_io_pin_config,
> @@ -5067,6 +5065,8 @@ static const struct v4l2_subdev_audio_ops cx25840_audio_ops = {
>  };
>  
>  static const struct v4l2_subdev_video_ops cx25840_video_ops = {
> +	.s_std = cx25840_s_std,
> +	.g_std = cx25840_g_std,
>  	.s_routing = cx25840_s_video_routing,
>  	.s_mbus_fmt = cx25840_s_mbus_fmt,
>  	.s_stream = cx25840_s_stream,
> diff --git a/drivers/media/i2c/ks0127.c b/drivers/media/i2c/ks0127.c
> index c3e94ae..25b81bc 100644
> --- a/drivers/media/i2c/ks0127.c
> +++ b/drivers/media/i2c/ks0127.c
> @@ -648,11 +648,8 @@ static int ks0127_g_input_status(struct v4l2_subdev *sd, u32 *status)
>  
>  /* ----------------------------------------------------------------------- */
>  
> -static const struct v4l2_subdev_core_ops ks0127_core_ops = {
> -	.s_std = ks0127_s_std,
> -};
> -
>  static const struct v4l2_subdev_video_ops ks0127_video_ops = {
> +	.s_std = ks0127_s_std,
>  	.s_routing = ks0127_s_routing,
>  	.s_stream = ks0127_s_stream,
>  	.querystd = ks0127_querystd,
> @@ -660,7 +657,6 @@ static const struct v4l2_subdev_video_ops ks0127_video_ops = {
>  };
>  
>  static const struct v4l2_subdev_ops ks0127_ops = {
> -	.core = &ks0127_core_ops,
>  	.video = &ks0127_video_ops,
>  };
>  
> diff --git a/drivers/media/i2c/ml86v7667.c b/drivers/media/i2c/ml86v7667.c
> index a9110d8..2cace73 100644
> --- a/drivers/media/i2c/ml86v7667.c
> +++ b/drivers/media/i2c/ml86v7667.c
> @@ -276,6 +276,7 @@ static const struct v4l2_ctrl_ops ml86v7667_ctrl_ops = {
>  };
>  
>  static struct v4l2_subdev_video_ops ml86v7667_subdev_video_ops = {
> +	.s_std = ml86v7667_s_std,
>  	.querystd = ml86v7667_querystd,
>  	.g_input_status = ml86v7667_g_input_status,
>  	.enum_mbus_fmt = ml86v7667_enum_mbus_fmt,
> @@ -286,7 +287,6 @@ static struct v4l2_subdev_video_ops ml86v7667_subdev_video_ops = {
>  };
>  
>  static struct v4l2_subdev_core_ops ml86v7667_subdev_core_ops = {
> -	.s_std = ml86v7667_s_std,
>  #ifdef CONFIG_VIDEO_ADV_DEBUG
>  	.g_register = ml86v7667_g_register,
>  	.s_register = ml86v7667_s_register,
> diff --git a/drivers/media/i2c/msp3400-driver.c b/drivers/media/i2c/msp3400-driver.c
> index 8190fec..4d9c6bc 100644
> --- a/drivers/media/i2c/msp3400-driver.c
> +++ b/drivers/media/i2c/msp3400-driver.c
> @@ -649,10 +649,10 @@ static const struct v4l2_subdev_core_ops msp_core_ops = {
>  	.s_ctrl = v4l2_subdev_s_ctrl,
>  	.queryctrl = v4l2_subdev_queryctrl,
>  	.querymenu = v4l2_subdev_querymenu,
> -	.s_std = msp_s_std,
>  };
>  
>  static const struct v4l2_subdev_video_ops msp_video_ops = {
> +	.s_std = msp_s_std,
>  	.querystd = msp_querystd,
>  };
>  
> diff --git a/drivers/media/i2c/saa6752hs.c b/drivers/media/i2c/saa6752hs.c
> index 8272c0b..04e9e55 100644
> --- a/drivers/media/i2c/saa6752hs.c
> +++ b/drivers/media/i2c/saa6752hs.c
> @@ -643,10 +643,10 @@ static const struct v4l2_ctrl_ops saa6752hs_ctrl_ops = {
>  
>  static const struct v4l2_subdev_core_ops saa6752hs_core_ops = {
>  	.init = saa6752hs_init,
> -	.s_std = saa6752hs_s_std,
>  };
>  
>  static const struct v4l2_subdev_video_ops saa6752hs_video_ops = {
> +	.s_std = saa6752hs_s_std,
>  	.s_mbus_fmt = saa6752hs_s_mbus_fmt,
>  	.try_mbus_fmt = saa6752hs_try_mbus_fmt,
>  	.g_mbus_fmt = saa6752hs_g_mbus_fmt,
> diff --git a/drivers/media/i2c/saa7110.c b/drivers/media/i2c/saa7110.c
> index ac43e92..99689ee 100644
> --- a/drivers/media/i2c/saa7110.c
> +++ b/drivers/media/i2c/saa7110.c
> @@ -365,10 +365,10 @@ static const struct v4l2_subdev_core_ops saa7110_core_ops = {
>  	.s_ctrl = v4l2_subdev_s_ctrl,
>  	.queryctrl = v4l2_subdev_queryctrl,
>  	.querymenu = v4l2_subdev_querymenu,
> -	.s_std = saa7110_s_std,
>  };
>  
>  static const struct v4l2_subdev_video_ops saa7110_video_ops = {
> +	.s_std = saa7110_s_std,
>  	.s_routing = saa7110_s_routing,
>  	.s_stream = saa7110_s_stream,
>  	.querystd = saa7110_querystd,
> diff --git a/drivers/media/i2c/saa7115.c b/drivers/media/i2c/saa7115.c
> index afdbcb0..35a4464 100644
> --- a/drivers/media/i2c/saa7115.c
> +++ b/drivers/media/i2c/saa7115.c
> @@ -1582,7 +1582,6 @@ static const struct v4l2_subdev_core_ops saa711x_core_ops = {
>  	.s_ctrl = v4l2_subdev_s_ctrl,
>  	.queryctrl = v4l2_subdev_queryctrl,
>  	.querymenu = v4l2_subdev_querymenu,
> -	.s_std = saa711x_s_std,
>  	.reset = saa711x_reset,
>  	.s_gpio = saa711x_s_gpio,
>  #ifdef CONFIG_VIDEO_ADV_DEBUG
> @@ -1601,6 +1600,7 @@ static const struct v4l2_subdev_audio_ops saa711x_audio_ops = {
>  };
>  
>  static const struct v4l2_subdev_video_ops saa711x_video_ops = {
> +	.s_std = saa711x_s_std,
>  	.s_routing = saa711x_s_routing,
>  	.s_crystal_freq = saa711x_s_crystal_freq,
>  	.s_mbus_fmt = saa711x_s_mbus_fmt,
> diff --git a/drivers/media/i2c/saa717x.c b/drivers/media/i2c/saa717x.c
> index 401ca11..6922a9f 100644
> --- a/drivers/media/i2c/saa717x.c
> +++ b/drivers/media/i2c/saa717x.c
> @@ -1198,7 +1198,6 @@ static const struct v4l2_subdev_core_ops saa717x_core_ops = {
>  	.g_register = saa717x_g_register,
>  	.s_register = saa717x_s_register,
>  #endif
> -	.s_std = saa717x_s_std,
>  	.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
>  	.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
>  	.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
> @@ -1216,6 +1215,7 @@ static const struct v4l2_subdev_tuner_ops saa717x_tuner_ops = {
>  };
>  
>  static const struct v4l2_subdev_video_ops saa717x_video_ops = {
> +	.s_std = saa717x_s_std,
>  	.s_routing = saa717x_s_video_routing,
>  	.s_mbus_fmt = saa717x_s_mbus_fmt,
>  	.s_stream = saa717x_s_stream,
> diff --git a/drivers/media/i2c/saa7191.c b/drivers/media/i2c/saa7191.c
> index 606a4ba..8e96992 100644
> --- a/drivers/media/i2c/saa7191.c
> +++ b/drivers/media/i2c/saa7191.c
> @@ -573,10 +573,10 @@ static int saa7191_g_input_status(struct v4l2_subdev *sd, u32 *status)
>  static const struct v4l2_subdev_core_ops saa7191_core_ops = {
>  	.g_ctrl = saa7191_g_ctrl,
>  	.s_ctrl = saa7191_s_ctrl,
> -	.s_std = saa7191_s_std,
>  };
>  
>  static const struct v4l2_subdev_video_ops saa7191_video_ops = {
> +	.s_std = saa7191_s_std,
>  	.s_routing = saa7191_s_routing,
>  	.querystd = saa7191_querystd,
>  	.g_input_status = saa7191_g_input_status,
> diff --git a/drivers/media/i2c/soc_camera/tw9910.c b/drivers/media/i2c/soc_camera/tw9910.c
> index ab54628..059478a 100644
> --- a/drivers/media/i2c/soc_camera/tw9910.c
> +++ b/drivers/media/i2c/soc_camera/tw9910.c
> @@ -814,8 +814,6 @@ done:
>  }
>  
>  static struct v4l2_subdev_core_ops tw9910_subdev_core_ops = {
> -	.s_std		= tw9910_s_std,
> -	.g_std		= tw9910_g_std,
>  #ifdef CONFIG_VIDEO_ADV_DEBUG
>  	.g_register	= tw9910_g_register,
>  	.s_register	= tw9910_s_register,
> @@ -873,6 +871,8 @@ static int tw9910_s_mbus_config(struct v4l2_subdev *sd,
>  }
>  
>  static struct v4l2_subdev_video_ops tw9910_subdev_video_ops = {
> +	.s_std		= tw9910_s_std,
> +	.g_std		= tw9910_g_std,
>  	.s_stream	= tw9910_s_stream,
>  	.g_mbus_fmt	= tw9910_g_fmt,
>  	.s_mbus_fmt	= tw9910_s_fmt,
> diff --git a/drivers/media/i2c/sony-btf-mpx.c b/drivers/media/i2c/sony-btf-mpx.c
> index 32d8232..1da8004 100644
> --- a/drivers/media/i2c/sony-btf-mpx.c
> +++ b/drivers/media/i2c/sony-btf-mpx.c
> @@ -327,18 +327,18 @@ static int sony_btf_mpx_s_tuner(struct v4l2_subdev *sd, const struct v4l2_tuner
>  
>  /* --------------------------------------------------------------------------*/
>  
> -static const struct v4l2_subdev_core_ops sony_btf_mpx_core_ops = {
> -	.s_std = sony_btf_mpx_s_std,
> -};
> -
>  static const struct v4l2_subdev_tuner_ops sony_btf_mpx_tuner_ops = {
>  	.s_tuner = sony_btf_mpx_s_tuner,
>  	.g_tuner = sony_btf_mpx_g_tuner,
>  };
>  
> +static const struct v4l2_subdev_video_ops sony_btf_mpx_video_ops = {
> +	.s_std = sony_btf_mpx_s_std,
> +};
> +
>  static const struct v4l2_subdev_ops sony_btf_mpx_ops = {
> -	.core = &sony_btf_mpx_core_ops,
>  	.tuner = &sony_btf_mpx_tuner_ops,
> +	.video = &sony_btf_mpx_video_ops,
>  };
>  
>  /* --------------------------------------------------------------------------*/
> diff --git a/drivers/media/i2c/tvaudio.c b/drivers/media/i2c/tvaudio.c
> index d76c53a8..070c152 100644
> --- a/drivers/media/i2c/tvaudio.c
> +++ b/drivers/media/i2c/tvaudio.c
> @@ -1862,7 +1862,6 @@ static const struct v4l2_subdev_core_ops tvaudio_core_ops = {
>  	.s_ctrl = v4l2_subdev_s_ctrl,
>  	.queryctrl = v4l2_subdev_queryctrl,
>  	.querymenu = v4l2_subdev_querymenu,
> -	.s_std = tvaudio_s_std,
>  };
>  
>  static const struct v4l2_subdev_tuner_ops tvaudio_tuner_ops = {
> @@ -1876,10 +1875,15 @@ static const struct v4l2_subdev_audio_ops tvaudio_audio_ops = {
>  	.s_routing = tvaudio_s_routing,
>  };
>  
> +static const struct v4l2_subdev_video_ops tvaudio_video_ops = {
> +	.s_std = tvaudio_s_std,
> +};
> +
>  static const struct v4l2_subdev_ops tvaudio_ops = {
>  	.core = &tvaudio_core_ops,
>  	.tuner = &tvaudio_tuner_ops,
>  	.audio = &tvaudio_audio_ops,
> +	.video = &tvaudio_video_ops,
>  };
>  
>  /* ----------------------------------------------------------------------- */
> diff --git a/drivers/media/i2c/tvp514x.c b/drivers/media/i2c/tvp514x.c
> index 83d85df..d163a95 100644
> --- a/drivers/media/i2c/tvp514x.c
> +++ b/drivers/media/i2c/tvp514x.c
> @@ -1009,10 +1009,10 @@ static const struct v4l2_subdev_core_ops tvp514x_core_ops = {
>  	.s_ctrl = v4l2_subdev_s_ctrl,
>  	.queryctrl = v4l2_subdev_queryctrl,
>  	.querymenu = v4l2_subdev_querymenu,
> -	.s_std = tvp514x_s_std,
>  };
>  
>  static const struct v4l2_subdev_video_ops tvp514x_video_ops = {
> +	.s_std = tvp514x_s_std,
>  	.s_routing = tvp514x_s_routing,
>  	.querystd = tvp514x_querystd,
>  	.enum_mbus_fmt = tvp514x_enum_mbus_fmt,
> diff --git a/drivers/media/i2c/tvp5150.c b/drivers/media/i2c/tvp5150.c
> index 542d252..5ee0f40 100644
> --- a/drivers/media/i2c/tvp5150.c
> +++ b/drivers/media/i2c/tvp5150.c
> @@ -1063,7 +1063,6 @@ static const struct v4l2_ctrl_ops tvp5150_ctrl_ops = {
>  
>  static const struct v4l2_subdev_core_ops tvp5150_core_ops = {
>  	.log_status = tvp5150_log_status,
> -	.s_std = tvp5150_s_std,
>  	.reset = tvp5150_reset,
>  #ifdef CONFIG_VIDEO_ADV_DEBUG
>  	.g_register = tvp5150_g_register,
> @@ -1076,6 +1075,7 @@ static const struct v4l2_subdev_tuner_ops tvp5150_tuner_ops = {
>  };
>  
>  static const struct v4l2_subdev_video_ops tvp5150_video_ops = {
> +	.s_std = tvp5150_s_std,
>  	.s_routing = tvp5150_s_routing,
>  	.enum_mbus_fmt = tvp5150_enum_mbus_fmt,
>  	.s_mbus_fmt = tvp5150_mbus_fmt,
> diff --git a/drivers/media/i2c/tw2804.c b/drivers/media/i2c/tw2804.c
> index f58607d..7347480 100644
> --- a/drivers/media/i2c/tw2804.c
> +++ b/drivers/media/i2c/tw2804.c
> @@ -342,12 +342,12 @@ static const struct v4l2_ctrl_ops tw2804_ctrl_ops = {
>  };
>  
>  static const struct v4l2_subdev_video_ops tw2804_video_ops = {
> +	.s_std = tw2804_s_std,
>  	.s_routing = tw2804_s_video_routing,
>  };
>  
>  static const struct v4l2_subdev_core_ops tw2804_core_ops = {
>  	.log_status = tw2804_log_status,
> -	.s_std = tw2804_s_std,
>  };
>  
>  static const struct v4l2_subdev_ops tw2804_ops = {
> diff --git a/drivers/media/i2c/tw9903.c b/drivers/media/i2c/tw9903.c
> index 285b759..12c7d21 100644
> --- a/drivers/media/i2c/tw9903.c
> +++ b/drivers/media/i2c/tw9903.c
> @@ -187,10 +187,10 @@ static const struct v4l2_ctrl_ops tw9903_ctrl_ops = {
>  
>  static const struct v4l2_subdev_core_ops tw9903_core_ops = {
>  	.log_status = tw9903_log_status,
> -	.s_std = tw9903_s_std,
>  };
>  
>  static const struct v4l2_subdev_video_ops tw9903_video_ops = {
> +	.s_std = tw9903_s_std,
>  	.s_routing = tw9903_s_video_routing,
>  };
>  
> diff --git a/drivers/media/i2c/tw9906.c b/drivers/media/i2c/tw9906.c
> index f6bef25..2672d89 100644
> --- a/drivers/media/i2c/tw9906.c
> +++ b/drivers/media/i2c/tw9906.c
> @@ -157,10 +157,10 @@ static const struct v4l2_ctrl_ops tw9906_ctrl_ops = {
>  
>  static const struct v4l2_subdev_core_ops tw9906_core_ops = {
>  	.log_status = tw9906_log_status,
> -	.s_std = tw9906_s_std,
>  };
>  
>  static const struct v4l2_subdev_video_ops tw9906_video_ops = {
> +	.s_std = tw9906_s_std,
>  	.s_routing = tw9906_s_video_routing,
>  };
>  
> diff --git a/drivers/media/i2c/vp27smpx.c b/drivers/media/i2c/vp27smpx.c
> index 6a3a3ff..819ab6d 100644
> --- a/drivers/media/i2c/vp27smpx.c
> +++ b/drivers/media/i2c/vp27smpx.c
> @@ -124,7 +124,6 @@ static int vp27smpx_log_status(struct v4l2_subdev *sd)
>  
>  static const struct v4l2_subdev_core_ops vp27smpx_core_ops = {
>  	.log_status = vp27smpx_log_status,
> -	.s_std = vp27smpx_s_std,
>  };
>  
>  static const struct v4l2_subdev_tuner_ops vp27smpx_tuner_ops = {
> @@ -133,9 +132,14 @@ static const struct v4l2_subdev_tuner_ops vp27smpx_tuner_ops = {
>  	.g_tuner = vp27smpx_g_tuner,
>  };
>  
> +static const struct v4l2_subdev_video_ops vp27smpx_video_ops = {
> +	.s_std = vp27smpx_s_std,
> +};
> +
>  static const struct v4l2_subdev_ops vp27smpx_ops = {
>  	.core = &vp27smpx_core_ops,
>  	.tuner = &vp27smpx_tuner_ops,
> +	.video = &vp27smpx_video_ops,
>  };
>  
>  /* ----------------------------------------------------------------------- */
> diff --git a/drivers/media/i2c/vpx3220.c b/drivers/media/i2c/vpx3220.c
> index ece90df..016e766 100644
> --- a/drivers/media/i2c/vpx3220.c
> +++ b/drivers/media/i2c/vpx3220.c
> @@ -457,10 +457,10 @@ static const struct v4l2_subdev_core_ops vpx3220_core_ops = {
>  	.s_ctrl = v4l2_subdev_s_ctrl,
>  	.queryctrl = v4l2_subdev_queryctrl,
>  	.querymenu = v4l2_subdev_querymenu,
> -	.s_std = vpx3220_s_std,
>  };
>  
>  static const struct v4l2_subdev_video_ops vpx3220_video_ops = {
> +	.s_std = vpx3220_s_std,
>  	.s_routing = vpx3220_s_routing,
>  	.s_stream = vpx3220_s_stream,
>  	.querystd = vpx3220_querystd,
> diff --git a/drivers/media/pci/bt8xx/bttv-driver.c b/drivers/media/pci/bt8xx/bttv-driver.c
> index afcd53b..da780f4 100644
> --- a/drivers/media/pci/bt8xx/bttv-driver.c
> +++ b/drivers/media/pci/bt8xx/bttv-driver.c
> @@ -1182,7 +1182,7 @@ set_tvnorm(struct bttv *btv, unsigned int norm)
>  		break;
>  	}
>  	id = tvnorm->v4l2_id;
> -	bttv_call_all(btv, core, s_std, id);
> +	bttv_call_all(btv, video, s_std, id);
>  
>  	return 0;
>  }
> diff --git a/drivers/media/pci/cx18/cx18-av-core.c b/drivers/media/pci/cx18/cx18-av-core.c
> index c4890a4..2d3afe0 100644
> --- a/drivers/media/pci/cx18/cx18-av-core.c
> +++ b/drivers/media/pci/cx18/cx18-av-core.c
> @@ -1263,7 +1263,6 @@ static const struct v4l2_subdev_core_ops cx18_av_general_ops = {
>  	.log_status = cx18_av_log_status,
>  	.load_fw = cx18_av_load_fw,
>  	.reset = cx18_av_reset,
> -	.s_std = cx18_av_s_std,
>  #ifdef CONFIG_VIDEO_ADV_DEBUG
>  	.g_register = cx18_av_g_register,
>  	.s_register = cx18_av_s_register,
> @@ -1283,6 +1282,7 @@ static const struct v4l2_subdev_audio_ops cx18_av_audio_ops = {
>  };
>  
>  static const struct v4l2_subdev_video_ops cx18_av_video_ops = {
> +	.s_std = cx18_av_s_std,
>  	.s_routing = cx18_av_s_video_routing,
>  	.s_stream = cx18_av_s_stream,
>  	.s_mbus_fmt = cx18_av_s_mbus_fmt,
> diff --git a/drivers/media/pci/cx18/cx18-fileops.c b/drivers/media/pci/cx18/cx18-fileops.c
> index 4bfd865..76a3b4a 100644
> --- a/drivers/media/pci/cx18/cx18-fileops.c
> +++ b/drivers/media/pci/cx18/cx18-fileops.c
> @@ -760,7 +760,7 @@ int cx18_v4l2_close(struct file *filp)
>  		/* Mark that the radio is no longer in use */
>  		clear_bit(CX18_F_I_RADIO_USER, &cx->i_flags);
>  		/* Switch tuner to TV */
> -		cx18_call_all(cx, core, s_std, cx->std);
> +		cx18_call_all(cx, video, s_std, cx->std);
>  		/* Select correct audio input (i.e. TV tuner or Line in) */
>  		cx18_audio_set_io(cx);
>  		if (atomic_read(&cx->ana_capturing) > 0) {
> diff --git a/drivers/media/pci/cx18/cx18-gpio.c b/drivers/media/pci/cx18/cx18-gpio.c
> index 5374aeb..38dc6b8 100644
> --- a/drivers/media/pci/cx18/cx18-gpio.c
> +++ b/drivers/media/pci/cx18/cx18-gpio.c
> @@ -180,7 +180,6 @@ static int gpiomux_s_audio_routing(struct v4l2_subdev *sd,
>  
>  static const struct v4l2_subdev_core_ops gpiomux_core_ops = {
>  	.log_status = gpiomux_log_status,
> -	.s_std = gpiomux_s_std,
>  };
>  
>  static const struct v4l2_subdev_tuner_ops gpiomux_tuner_ops = {
> @@ -191,10 +190,15 @@ static const struct v4l2_subdev_audio_ops gpiomux_audio_ops = {
>  	.s_routing = gpiomux_s_audio_routing,
>  };
>  
> +static const struct v4l2_subdev_video_ops gpiomux_video_ops = {
> +	.s_std = gpiomux_s_std,
> +};
> +
>  static const struct v4l2_subdev_ops gpiomux_ops = {
>  	.core = &gpiomux_core_ops,
>  	.tuner = &gpiomux_tuner_ops,
>  	.audio = &gpiomux_audio_ops,
> +	.video = &gpiomux_video_ops,
>  };
>  
>  /*
> diff --git a/drivers/media/pci/cx18/cx18-ioctl.c b/drivers/media/pci/cx18/cx18-ioctl.c
> index 1110bcb..fefb2cd 100644
> --- a/drivers/media/pci/cx18/cx18-ioctl.c
> +++ b/drivers/media/pci/cx18/cx18-ioctl.c
> @@ -602,7 +602,7 @@ int cx18_s_std(struct file *file, void *fh, v4l2_std_id std)
>  			(unsigned long long) cx->std);
>  
>  	/* Tuner */
> -	cx18_call_all(cx, core, s_std, cx->std);
> +	cx18_call_all(cx, video, s_std, cx->std);
>  	return 0;
>  }
>  
> diff --git a/drivers/media/pci/cx23885/cx23885-video.c b/drivers/media/pci/cx23885/cx23885-video.c
> index 7891f34..e0a5952 100644
> --- a/drivers/media/pci/cx23885/cx23885-video.c
> +++ b/drivers/media/pci/cx23885/cx23885-video.c
> @@ -326,7 +326,7 @@ int cx23885_set_tvnorm(struct cx23885_dev *dev, v4l2_std_id norm)
>  
>  	dev->tvnorm = norm;
>  
> -	call_all(dev, core, s_std, norm);
> +	call_all(dev, video, s_std, norm);
>  
>  	return 0;
>  }
> @@ -1589,7 +1589,7 @@ static int cx23885_set_freq_via_ops(struct cx23885_dev *dev,
>  		fe = &dev->ts1.analog_fe;
>  
>  	if (fe && fe->ops.tuner_ops.set_analog_params) {
> -		call_all(dev, core, s_std, dev->tvnorm);
> +		call_all(dev, video, s_std, dev->tvnorm);
>  		fe->ops.tuner_ops.set_analog_params(fe, &params);
>  	}
>  	else
> diff --git a/drivers/media/pci/cx88/cx88-core.c b/drivers/media/pci/cx88/cx88-core.c
> index ad59dc9..e061c88 100644
> --- a/drivers/media/pci/cx88/cx88-core.c
> +++ b/drivers/media/pci/cx88/cx88-core.c
> @@ -1012,7 +1012,7 @@ int cx88_set_tvnorm(struct cx88_core *core, v4l2_std_id norm)
>  	set_tvaudio(core);
>  
>  	// tell i2c chips
> -	call_all(core, core, s_std, norm);
> +	call_all(core, video, s_std, norm);
>  
>  	/* The chroma_agc control should be inaccessible if the video format is SECAM */
>  	v4l2_ctrl_grab(core->chroma_agc, cxiformat == VideoFormatSECAM);
> diff --git a/drivers/media/pci/ivtv/ivtv-fileops.c b/drivers/media/pci/ivtv/ivtv-fileops.c
> index 9caffd8..e5ff627 100644
> --- a/drivers/media/pci/ivtv/ivtv-fileops.c
> +++ b/drivers/media/pci/ivtv/ivtv-fileops.c
> @@ -894,7 +894,7 @@ int ivtv_v4l2_close(struct file *filp)
>  		/* Mark that the radio is no longer in use */
>  		clear_bit(IVTV_F_I_RADIO_USER, &itv->i_flags);
>  		/* Switch tuner to TV */
> -		ivtv_call_all(itv, core, s_std, itv->std);
> +		ivtv_call_all(itv, video, s_std, itv->std);
>  		/* Select correct audio input (i.e. TV tuner or Line in) */
>  		ivtv_audio_set_io(itv);
>  		if (itv->hw_flags & IVTV_HW_SAA711X) {
> diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c b/drivers/media/pci/ivtv/ivtv-ioctl.c
> index 807b275..b3667a0 100644
> --- a/drivers/media/pci/ivtv/ivtv-ioctl.c
> +++ b/drivers/media/pci/ivtv/ivtv-ioctl.c
> @@ -1090,7 +1090,7 @@ void ivtv_s_std_enc(struct ivtv *itv, v4l2_std_id std)
>  		itv->vbi.sliced_decoder_line_size = itv->is_60hz ? 272 : 284;
>  
>  	/* Tuner */
> -	ivtv_call_all(itv, core, s_std, itv->std);
> +	ivtv_call_all(itv, video, s_std, itv->std);
>  }
>  
>  void ivtv_s_std_dec(struct ivtv *itv, v4l2_std_id std)
> diff --git a/drivers/media/pci/saa7134/saa7134-video.c b/drivers/media/pci/saa7134/saa7134-video.c
> index eb472b5..26082b4 100644
> --- a/drivers/media/pci/saa7134/saa7134-video.c
> +++ b/drivers/media/pci/saa7134/saa7134-video.c
> @@ -506,10 +506,10 @@ void saa7134_set_tvnorm_hw(struct saa7134_dev *dev)
>  	saa7134_set_decoder(dev);
>  
>  	if (card_in(dev, dev->ctl_input).tv)
> -		saa_call_all(dev, core, s_std, dev->tvnorm->id);
> +		saa_call_all(dev, video, s_std, dev->tvnorm->id);
>  	/* Set the correct norm for the saa6752hs. This function
>  	   does nothing if there is no saa6752hs. */
> -	saa_call_empress(dev, core, s_std, dev->tvnorm->id);
> +	saa_call_empress(dev, video, s_std, dev->tvnorm->id);
>  }
>  
>  static void set_h_prescale(struct saa7134_dev *dev, int task, int prescale)
> diff --git a/drivers/media/pci/saa7146/mxb.c b/drivers/media/pci/saa7146/mxb.c
> index 33abe33..c4c8fce 100644
> --- a/drivers/media/pci/saa7146/mxb.c
> +++ b/drivers/media/pci/saa7146/mxb.c
> @@ -357,7 +357,7 @@ static int mxb_init_done(struct saa7146_dev* dev)
>  	tea6420_route(mxb, 6);
>  
>  	/* select video mode in saa7111a */
> -	saa7111a_call(mxb, core, s_std, std);
> +	saa7111a_call(mxb, video, s_std, std);
>  
>  	/* select tuner-output on saa7111a */
>  	i = 0;
> @@ -379,8 +379,8 @@ static int mxb_init_done(struct saa7146_dev* dev)
>  	/* These two gpio calls set the GPIO pins that control the tda9820 */
>  	saa7146_write(dev, GPIO_CTRL, 0x00404050);
>  	saa7111a_call(mxb, core, s_gpio, 1);
> -	saa7111a_call(mxb, core, s_std, std);
> -	tuner_call(mxb, core, s_std, std);
> +	saa7111a_call(mxb, video, s_std, std);
> +	tuner_call(mxb, video, s_std, std);
>  
>  	/* switch to tuner-channel on tea6415c */
>  	tea6415c_call(mxb, video, s_routing, 3, 17, 0);
> @@ -771,9 +771,9 @@ static int std_callback(struct saa7146_dev *dev, struct saa7146_standard *standa
>  		/* These two gpio calls set the GPIO pins that control the tda9820 */
>  		saa7146_write(dev, GPIO_CTRL, 0x00404050);
>  		saa7111a_call(mxb, core, s_gpio, 0);
> -		saa7111a_call(mxb, core, s_std, std);
> +		saa7111a_call(mxb, video, s_std, std);
>  		if (mxb->cur_input == 0)
> -			tuner_call(mxb, core, s_std, std);
> +			tuner_call(mxb, video, s_std, std);
>  	} else {
>  		v4l2_std_id std = V4L2_STD_PAL_BG;
>  
> @@ -783,9 +783,9 @@ static int std_callback(struct saa7146_dev *dev, struct saa7146_standard *standa
>  		/* These two gpio calls set the GPIO pins that control the tda9820 */
>  		saa7146_write(dev, GPIO_CTRL, 0x00404050);
>  		saa7111a_call(mxb, core, s_gpio, 1);
> -		saa7111a_call(mxb, core, s_std, std);
> +		saa7111a_call(mxb, video, s_std, std);
>  		if (mxb->cur_input == 0)
> -			tuner_call(mxb, core, s_std, std);
> +			tuner_call(mxb, video, s_std, std);
>  	}
>  	return 0;
>  }
> diff --git a/drivers/media/pci/sta2x11/sta2x11_vip.c b/drivers/media/pci/sta2x11/sta2x11_vip.c
> index bb11443..12485a9 100644
> --- a/drivers/media/pci/sta2x11/sta2x11_vip.c
> +++ b/drivers/media/pci/sta2x11/sta2x11_vip.c
> @@ -445,7 +445,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id std)
>  	int status;
>  
>  	if (V4L2_STD_ALL == std) {
> -		v4l2_subdev_call(vip->decoder, core, s_std, std);
> +		v4l2_subdev_call(vip->decoder, video, s_std, std);
>  		ssleep(2);
>  		v4l2_subdev_call(vip->decoder, video, querystd, &newstd);
>  		v4l2_subdev_call(vip->decoder, video, g_input_status, &status);
> @@ -468,7 +468,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id std)
>  			vip->format = formats_50[0];
>  	}
>  
> -	return v4l2_subdev_call(vip->decoder, core, s_std, std);
> +	return v4l2_subdev_call(vip->decoder, video, s_std, std);
>  }
>  
>  /**
> diff --git a/drivers/media/pci/zoran/zoran_device.c b/drivers/media/pci/zoran/zoran_device.c
> index 519164c..bf34b93 100644
> --- a/drivers/media/pci/zoran/zoran_device.c
> +++ b/drivers/media/pci/zoran/zoran_device.c
> @@ -1572,7 +1572,7 @@ zoran_init_hardware (struct zoran *zr)
>  	}
>  
>  	decoder_call(zr, core, init, 0);
> -	decoder_call(zr, core, s_std, zr->norm);
> +	decoder_call(zr, video, s_std, zr->norm);
>  	decoder_call(zr, video, s_routing,
>  		zr->card.input[zr->input].muxsel, 0, 0);
>  
> diff --git a/drivers/media/pci/zoran/zoran_driver.c b/drivers/media/pci/zoran/zoran_driver.c
> index e7e9840..099d5fb 100644
> --- a/drivers/media/pci/zoran/zoran_driver.c
> +++ b/drivers/media/pci/zoran/zoran_driver.c
> @@ -1469,7 +1469,7 @@ zoran_set_norm (struct zoran *zr,
>  	if (on)
>  		zr36057_overlay(zr, 0);
>  
> -	decoder_call(zr, core, s_std, norm);
> +	decoder_call(zr, video, s_std, norm);
>  	encoder_call(zr, video, s_std_output, norm);
>  
>  	if (on)
> diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
> index 200bec9..852c05b 100644
> --- a/drivers/media/platform/blackfin/bfin_capture.c
> +++ b/drivers/media/platform/blackfin/bfin_capture.c
> @@ -635,7 +635,7 @@ static int bcap_s_std(struct file *file, void *priv, v4l2_std_id std)
>  	if (vb2_is_busy(&bcap_dev->buffer_queue))
>  		return -EBUSY;
>  
> -	ret = v4l2_subdev_call(bcap_dev->sd, core, s_std, std);
> +	ret = v4l2_subdev_call(bcap_dev->sd, video, s_std, std);
>  	if (ret < 0)
>  		return ret;
>  
> @@ -1069,7 +1069,7 @@ static int bcap_probe(struct platform_device *pdev)
>  	/* now we can probe the default state */
>  	if (config->inputs[0].capabilities & V4L2_IN_CAP_STD) {
>  		v4l2_std_id std;
> -		ret = v4l2_subdev_call(bcap_dev->sd, core, g_std, &std);
> +		ret = v4l2_subdev_call(bcap_dev->sd, video, g_std, &std);
>  		if (ret) {
>  			v4l2_err(&bcap_dev->v4l2_dev,
>  					"Unable to get std\n");
> diff --git a/drivers/media/platform/davinci/vpfe_capture.c b/drivers/media/platform/davinci/vpfe_capture.c
> index d762246..0ebbdf1 100644
> --- a/drivers/media/platform/davinci/vpfe_capture.c
> +++ b/drivers/media/platform/davinci/vpfe_capture.c
> @@ -1215,7 +1215,7 @@ static int vpfe_s_std(struct file *file, void *priv, v4l2_std_id std_id)
>  	}
>  
>  	ret = v4l2_device_call_until_err(&vpfe_dev->v4l2_dev, sdinfo->grp_id,
> -					 core, s_std, std_id);
> +					 video, s_std, std_id);
>  	if (ret < 0) {
>  		v4l2_err(&vpfe_dev->v4l2_dev, "Failed to set standard\n");
>  		goto unlock_out;
> diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c
> index 756da78..ff6e9e0 100644
> --- a/drivers/media/platform/davinci/vpif_capture.c
> +++ b/drivers/media/platform/davinci/vpif_capture.c
> @@ -1420,7 +1420,7 @@ static int vpif_s_std(struct file *file, void *priv, v4l2_std_id std_id)
>  	vpif_config_format(ch);
>  
>  	/* set standard in the sub device */
> -	ret = v4l2_subdev_call(ch->sd, core, s_std, std_id);
> +	ret = v4l2_subdev_call(ch->sd, video, s_std, std_id);
>  	if (ret && ret != -ENOIOCTLCMD && ret != -ENODEV) {
>  		vpif_dbg(1, debug, "Failed to set standard for sub devices\n");
>  		return ret;
> diff --git a/drivers/media/platform/davinci/vpif_display.c b/drivers/media/platform/davinci/vpif_display.c
> index 0ac841e..37c5d48 100644
> --- a/drivers/media/platform/davinci/vpif_display.c
> +++ b/drivers/media/platform/davinci/vpif_display.c
> @@ -1076,7 +1076,7 @@ static int vpif_s_std(struct file *file, void *priv, v4l2_std_id std_id)
>  		return ret;
>  	}
>  
> -	ret = v4l2_device_call_until_err(&vpif_obj.v4l2_dev, 1, core,
> +	ret = v4l2_device_call_until_err(&vpif_obj.v4l2_dev, 1, video,
>  							s_std, std_id);
>  	if (ret < 0)
>  		vpif_err("Failed to set standard for sub devices\n");
> diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
> index dbf0ce3..d5dc198 100644
> --- a/drivers/media/platform/fsl-viu.c
> +++ b/drivers/media/platform/fsl-viu.c
> @@ -964,7 +964,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id)
>  	struct viu_fh *fh = priv;
>  
>  	fh->dev->std = id;
> -	decoder_call(fh->dev, core, s_std, id);
> +	decoder_call(fh->dev, video, s_std, id);
>  	return 0;
>  }
>  
> diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c
> index 4b8c024..79bfbc6 100644
> --- a/drivers/media/platform/soc_camera/soc_camera.c
> +++ b/drivers/media/platform/soc_camera/soc_camera.c
> @@ -314,7 +314,7 @@ static int soc_camera_s_std(struct file *file, void *priv, v4l2_std_id a)
>  	struct soc_camera_device *icd = file->private_data;
>  	struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
>  
> -	return v4l2_subdev_call(sd, core, s_std, a);
> +	return v4l2_subdev_call(sd, video, s_std, a);
>  }
>  
>  static int soc_camera_g_std(struct file *file, void *priv, v4l2_std_id *a)
> @@ -322,7 +322,7 @@ static int soc_camera_g_std(struct file *file, void *priv, v4l2_std_id *a)
>  	struct soc_camera_device *icd = file->private_data;
>  	struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
>  
> -	return v4l2_subdev_call(sd, core, g_std, a);
> +	return v4l2_subdev_call(sd, video, g_std, a);
>  }
>  
>  static int soc_camera_enum_framesizes(struct file *file, void *fh,
> diff --git a/drivers/media/platform/timblogiw.c b/drivers/media/platform/timblogiw.c
> index ccdadd6..cc34eae 100644
> --- a/drivers/media/platform/timblogiw.c
> +++ b/drivers/media/platform/timblogiw.c
> @@ -347,7 +347,7 @@ static int timblogiw_s_std(struct file *file, void  *priv, v4l2_std_id std)
>  	mutex_lock(&lw->lock);
>  
>  	if (TIMBLOGIW_HAS_DECODER(lw))
> -		err = v4l2_subdev_call(lw->sd_enc, core, s_std, std);
> +		err = v4l2_subdev_call(lw->sd_enc, video, s_std, std);
>  
>  	if (!err)
>  		fh->cur_norm = timblogiw_get_norm(std);
> diff --git a/drivers/media/platform/vino.c b/drivers/media/platform/vino.c
> index c6af974..470d353 100644
> --- a/drivers/media/platform/vino.c
> +++ b/drivers/media/platform/vino.c
> @@ -2586,7 +2586,7 @@ static int vino_acquire_input(struct vino_channel_settings *vcs)
>  			}
>  			if (data_norm == 3)
>  				data_norm = VINO_DATA_NORM_PAL;
> -			ret = decoder_call(core, s_std, norm);
> +			ret = decoder_call(video, s_std, norm);
>  		}
>  
>  		spin_lock_irqsave(&vino_drvdata->input_lock, flags);
> @@ -2675,7 +2675,7 @@ static int vino_set_input(struct vino_channel_settings *vcs, int input)
>  				}
>  				if (data_norm == 3)
>  					data_norm = VINO_DATA_NORM_PAL;
> -				ret = decoder_call(core, s_std, norm);
> +				ret = decoder_call(video, s_std, norm);
>  			}
>  
>  			spin_lock_irqsave(&vino_drvdata->input_lock, flags);
> @@ -2809,7 +2809,7 @@ static int vino_set_data_norm(struct vino_channel_settings *vcs,
>  		 * as it may take a while... */
>  
>  		norm = vino_data_norms[data_norm].std;
> -		err = decoder_call(core, s_std, norm);
> +		err = decoder_call(video, s_std, norm);
>  
>  		spin_lock_irqsave(&vino_drvdata->input_lock, *flags);
>  
> diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
> index f615454..9038194 100644
> --- a/drivers/media/usb/au0828/au0828-video.c
> +++ b/drivers/media/usb/au0828/au0828-video.c
> @@ -1109,7 +1109,7 @@ static void au0828_init_tuner(struct au0828_dev *dev)
>  	/* If we've never sent the standard in tuner core, do so now.
>  	   We don't do this at device probe because we don't want to
>  	   incur the cost of a firmware load */
> -	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std, dev->std);
> +	v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, dev->std);
>  	v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_frequency, &f);
>  	i2c_gate_ctrl(dev, 0);
>  }
> @@ -1368,7 +1368,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id norm)
>  	   have to make the au0828 bridge adjust the size of its capture
>  	   buffer, which is currently hardcoded at 720x480 */
>  
> -	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std, norm);
> +	v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, norm);
>  
>  	i2c_gate_ctrl(dev, 0);
>  
> diff --git a/drivers/media/usb/cx231xx/cx231xx-417.c b/drivers/media/usb/cx231xx/cx231xx-417.c
> index 2f63029..30a0c69 100644
> --- a/drivers/media/usb/cx231xx/cx231xx-417.c
> +++ b/drivers/media/usb/cx231xx/cx231xx-417.c
> @@ -1516,7 +1516,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id)
>  		dev->ts1.height = 576;
>  		cx2341x_handler_set_50hz(&dev->mpeg_ctrl_handler, true);
>  	}
> -	call_all(dev, core, s_std, dev->norm);
> +	call_all(dev, video, s_std, dev->norm);
>  	/* do mode control overrides */
>  	cx231xx_do_mode_ctrl_overrides(dev);
>  
> diff --git a/drivers/media/usb/cx231xx/cx231xx-video.c b/drivers/media/usb/cx231xx/cx231xx-video.c
> index 9906261..1f87513 100644
> --- a/drivers/media/usb/cx231xx/cx231xx-video.c
> +++ b/drivers/media/usb/cx231xx/cx231xx-video.c
> @@ -1009,7 +1009,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id norm)
>  	dev->width = 720;
>  	dev->height = (dev->norm & V4L2_STD_625_50) ? 576 : 480;
>  
> -	call_all(dev, core, s_std, dev->norm);
> +	call_all(dev, video, s_std, dev->norm);
>  
>  	/* We need to reset basic properties in the decoder related to
>  	   resolution (since a standard change effects things like the number
> @@ -1108,7 +1108,7 @@ int cx231xx_s_input(struct file *file, void *priv, unsigned int i)
>  		/* There's a tuner, so reset the standard and put it on the
>  		   last known frequency (since it was probably powered down
>  		   until now */
> -		call_all(dev, core, s_std, dev->norm);
> +		call_all(dev, video, s_std, dev->norm);
>  	}
>  
>  	return 0;
> @@ -2099,7 +2099,7 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
>  	/* Set the initial input */
>  	video_mux(dev, dev->video_input);
>  
> -	call_all(dev, core, s_std, dev->norm);
> +	call_all(dev, video, s_std, dev->norm);
>  
>  	v4l2_ctrl_handler_init(&dev->ctrl_handler, 10);
>  	v4l2_ctrl_handler_init(&dev->radio_ctrl_handler, 5);
> diff --git a/drivers/media/usb/em28xx/em28xx-video.c b/drivers/media/usb/em28xx/em28xx-video.c
> index 0856e5d..b7c1abf 100644
> --- a/drivers/media/usb/em28xx/em28xx-video.c
> +++ b/drivers/media/usb/em28xx/em28xx-video.c
> @@ -1351,7 +1351,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id norm)
>  	size_to_scale(dev, dev->width, dev->height, &dev->hscale, &dev->vscale);
>  
>  	em28xx_resolution_set(dev);
> -	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std, dev->norm);
> +	v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, dev->norm);
>  
>  	return 0;
>  }
> @@ -2349,7 +2349,7 @@ static int em28xx_v4l2_init(struct em28xx *dev)
>  
>  	/* set default norm */
>  	dev->norm = V4L2_STD_PAL;
> -	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std, dev->norm);
> +	v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, dev->norm);
>  	dev->interlaced = EM28XX_INTERLACED_DEFAULT;
>  
>  	/* Analog specific initialization */
> diff --git a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
> index ea05f67..9623b62 100644
> --- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
> +++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
> @@ -2910,7 +2910,7 @@ static void pvr2_subdev_update(struct pvr2_hdw *hdw)
>  			v4l2_std_id vs;
>  			vs = hdw->std_mask_cur;
>  			v4l2_device_call_all(&hdw->v4l2_dev, 0,
> -					     core, s_std, vs);
> +					     video, s_std, vs);
>  			pvr2_hdw_cx25840_vbi_hack(hdw);
>  		}
>  		hdw->tuner_signal_stale = !0;
> diff --git a/drivers/media/usb/stk1160/stk1160-v4l.c b/drivers/media/usb/stk1160/stk1160-v4l.c
> index 37bc00f..759e4b0 100644
> --- a/drivers/media/usb/stk1160/stk1160-v4l.c
> +++ b/drivers/media/usb/stk1160/stk1160-v4l.c
> @@ -406,7 +406,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id norm)
>  
>  	stk1160_set_std(dev);
>  
> -	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std,
> +	v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std,
>  			dev->norm);
>  
>  	return 0;
> @@ -682,7 +682,7 @@ int stk1160_video_register(struct stk1160 *dev)
>  	dev->fmt = &format[0];
>  	stk1160_set_std(dev);
>  
> -	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std,
> +	v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std,
>  			dev->norm);
>  
>  	video_set_drvdata(&dev->vdev, dev);
> diff --git a/drivers/media/usb/tm6000/tm6000-cards.c b/drivers/media/usb/tm6000/tm6000-cards.c
> index 1ccaadd..2e8c3af 100644
> --- a/drivers/media/usb/tm6000/tm6000-cards.c
> +++ b/drivers/media/usb/tm6000/tm6000-cards.c
> @@ -1120,7 +1120,7 @@ static int tm6000_init_dev(struct tm6000_core *dev)
>  	tm6000_config_tuner(dev);
>  
>  	/* Set video standard */
> -	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std, dev->norm);
> +	v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, dev->norm);
>  
>  	/* Set tuner frequency - also loads firmware on xc2028/xc3028 */
>  	f.tuner = 0;
> diff --git a/drivers/media/usb/tm6000/tm6000-video.c b/drivers/media/usb/tm6000/tm6000-video.c
> index cc1aa14..e6b3d5d 100644
> --- a/drivers/media/usb/tm6000/tm6000-video.c
> +++ b/drivers/media/usb/tm6000/tm6000-video.c
> @@ -1071,7 +1071,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id norm)
>  	if (rc < 0)
>  		return rc;
>  
> -	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_std, dev->norm);
> +	v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, dev->norm);
>  
>  	return 0;
>  }
> diff --git a/drivers/media/usb/usbvision/usbvision-video.c b/drivers/media/usb/usbvision/usbvision-video.c
> index 5c9e312..68bc961 100644
> --- a/drivers/media/usb/usbvision/usbvision-video.c
> +++ b/drivers/media/usb/usbvision/usbvision-video.c
> @@ -597,7 +597,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id)
>  
>  	usbvision->tvnorm_id = id;
>  
> -	call_all(usbvision, core, s_std, usbvision->tvnorm_id);
> +	call_all(usbvision, video, s_std, usbvision->tvnorm_id);
>  	/* propagate the change to the decoder */
>  	usbvision_muxsel(usbvision, usbvision->ctl_input);
>  
> diff --git a/drivers/media/v4l2-core/tuner-core.c b/drivers/media/v4l2-core/tuner-core.c
> index 20c0922..06c18ba 100644
> --- a/drivers/media/v4l2-core/tuner-core.c
> +++ b/drivers/media/v4l2-core/tuner-core.c
> @@ -1301,7 +1301,6 @@ static int tuner_command(struct i2c_client *client, unsigned cmd, void *arg)
>  
>  static const struct v4l2_subdev_core_ops tuner_core_ops = {
>  	.log_status = tuner_log_status,
> -	.s_std = tuner_s_std,
>  	.s_power = tuner_s_power,
>  };
>  
> @@ -1315,9 +1314,14 @@ static const struct v4l2_subdev_tuner_ops tuner_tuner_ops = {
>  	.s_config = tuner_s_config,
>  };
>  
> +static const struct v4l2_subdev_video_ops tuner_video_ops = {
> +	.s_std = tuner_s_std,
> +};
> +
>  static const struct v4l2_subdev_ops tuner_ops = {
>  	.core = &tuner_core_ops,
>  	.tuner = &tuner_tuner_ops,
> +	.video = &tuner_video_ops,
>  };
>  
>  /*
> diff --git a/drivers/staging/media/davinci_vpfe/vpfe_video.c b/drivers/staging/media/davinci_vpfe/vpfe_video.c
> index 8c101cb..f59b9fd 100644
> --- a/drivers/staging/media/davinci_vpfe/vpfe_video.c
> +++ b/drivers/staging/media/davinci_vpfe/vpfe_video.c
> @@ -945,7 +945,7 @@ static int vpfe_s_std(struct file *file, void *priv, v4l2_std_id std_id)
>  		goto unlock_out;
>  	}
>  	ret = v4l2_device_call_until_err(&vpfe_dev->v4l2_dev, sdinfo->grp_id,
> -					 core, s_std, std_id);
> +					 video, s_std, std_id);
>  	if (ret < 0) {
>  		v4l2_err(&vpfe_dev->v4l2_dev, "Failed to set standard\n");
>  		video->stdid = V4L2_STD_UNKNOWN;
> diff --git a/drivers/staging/media/go7007/go7007-v4l2.c b/drivers/staging/media/go7007/go7007-v4l2.c
> index a349878..a767746 100644
> --- a/drivers/staging/media/go7007/go7007-v4l2.c
> +++ b/drivers/staging/media/go7007/go7007-v4l2.c
> @@ -665,7 +665,7 @@ static int go7007_s_std(struct go7007 *go)
>  		go->sensor_framerate = 30000;
>  	}
>  
> -	call_all(&go->v4l2_dev, core, s_std, go->std);
> +	call_all(&go->v4l2_dev, video, s_std, go->std);
>  	set_capture_size(go, NULL, 0);
>  	return 0;
>  }
> diff --git a/drivers/staging/media/go7007/s2250-board.c b/drivers/staging/media/go7007/s2250-board.c
> index 696a807..eaa2b09 100644
> --- a/drivers/staging/media/go7007/s2250-board.c
> +++ b/drivers/staging/media/go7007/s2250-board.c
> @@ -474,7 +474,6 @@ static const struct v4l2_ctrl_ops s2250_ctrl_ops = {
>  
>  static const struct v4l2_subdev_core_ops s2250_core_ops = {
>  	.log_status = s2250_log_status,
> -	.s_std = s2250_s_std,
>  };
>  
>  static const struct v4l2_subdev_audio_ops s2250_audio_ops = {
> @@ -482,6 +481,7 @@ static const struct v4l2_subdev_audio_ops s2250_audio_ops = {
>  };
>  
>  static const struct v4l2_subdev_video_ops s2250_video_ops = {
> +	.s_std = s2250_s_std,
>  	.s_routing = s2250_s_video_routing,
>  	.s_mbus_fmt = s2250_s_mbus_fmt,
>  };
> diff --git a/drivers/staging/media/go7007/saa7134-go7007.c b/drivers/staging/media/go7007/saa7134-go7007.c
> index 6e2ca33..e40f7fb 100644
> --- a/drivers/staging/media/go7007/saa7134-go7007.c
> +++ b/drivers/staging/media/go7007/saa7134-go7007.c
> @@ -434,11 +434,15 @@ static const struct v4l2_subdev_core_ops saa7134_go7007_core_ops = {
>  	.g_ctrl = saa7134_go7007_g_ctrl,
>  	.s_ctrl = saa7134_go7007_s_ctrl,
>  	.queryctrl = saa7134_go7007_queryctrl,
> +};
> +
> +static const struct v4l2_subdev_video_ops saa7134_go7007_video_ops = {
>  	.s_std = saa7134_go7007_s_std,
>  };
>  
>  static const struct v4l2_subdev_ops saa7134_go7007_sd_ops = {
>  	.core = &saa7134_go7007_core_ops,
> +	.video = &saa7134_go7007_video_ops,
>  };
>  
>  /* --------------------------------------------------------------------------*/
> diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
> index 1752530..323236e 100644
> --- a/include/media/v4l2-subdev.h
> +++ b/include/media/v4l2-subdev.h
> @@ -159,8 +159,6 @@ struct v4l2_subdev_core_ops {
>  	int (*s_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls);
>  	int (*try_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls);
>  	int (*querymenu)(struct v4l2_subdev *sd, struct v4l2_querymenu *qm);
> -	int (*g_std)(struct v4l2_subdev *sd, v4l2_std_id *norm);
> -	int (*s_std)(struct v4l2_subdev *sd, v4l2_std_id norm);
>  	long (*ioctl)(struct v4l2_subdev *sd, unsigned int cmd, void *arg);
>  #ifdef CONFIG_COMPAT
>  	long (*compat_ioctl32)(struct v4l2_subdev *sd, unsigned int cmd,
> @@ -309,6 +307,8 @@ struct v4l2_mbus_frame_desc {
>  struct v4l2_subdev_video_ops {
>  	int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32 config);
>  	int (*s_crystal_freq)(struct v4l2_subdev *sd, u32 freq, u32 flags);
> +	int (*g_std)(struct v4l2_subdev *sd, v4l2_std_id *norm);
> +	int (*s_std)(struct v4l2_subdev *sd, v4l2_std_id norm);
>  	int (*s_std_output)(struct v4l2_subdev *sd, v4l2_std_id std);
>  	int (*g_std_output)(struct v4l2_subdev *sd, v4l2_std_id *std);
>  	int (*querystd)(struct v4l2_subdev *sd, v4l2_std_id *std);
> @@ -684,7 +684,7 @@ void v4l2_subdev_init(struct v4l2_subdev *sd,
>  /* Call an ops of a v4l2_subdev, doing the right checks against
>     NULL pointers.
>  
> -   Example: err = v4l2_subdev_call(sd, core, s_std, norm);
> +   Example: err = v4l2_subdev_call(sd, video, s_std, norm);
>   */
>  #define v4l2_subdev_call(sd, o, f, args...)				\
>  	(!(sd) ? -ENODEV : (((sd)->ops->o && (sd)->ops->o->f) ?	\
> 


  parent reply	other threads:[~2014-04-22 13:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-11 10:14 [PATCH] v4l: subdev: Move [gs]_std operation to video ops Laurent Pinchart
2014-04-21 14:38 ` Laurent Pinchart
2014-04-22 13:01 ` Hans Verkuil [this message]
2014-04-23 17:39 ` Prabhakar Lad

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53566829.4050104@xs4all.nl \
    --to=hverkuil@xs4all.nl \
    --cc=g.liakhovetski@gmx.de \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.