Re: [PATCH v11 2/7] cx25840: g_std operation really implements querystd operation

From: Hans Verkuil
Date: Mon Apr 29 2019 - 04:05:13 EST


On 4/27/19 4:50 PM, Maciej S. Szmigiero wrote:
> cx25840 driver g_std operation queries the currently detected video signal,
> however this is what querystd operation should do, so let's rename the
> handler.
>
> None of the existing cx25840 driver users ever called the g_std operation,
> one of them calls querystd on each of its subdevs but then the result is
> only used to implement VIDIOC_QUERYSTD (as it should).
>
> Signed-off-by: Maciej S. Szmigiero <mail@xxxxxxxxxxxxxxxxxxxxx>
> ---
> drivers/media/i2c/cx25840/cx25840-core.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/media/i2c/cx25840/cx25840-core.c b/drivers/media/i2c/cx25840/cx25840-core.c
> index 0bf30222cf93..2bcaf239b0d2 100644
> --- a/drivers/media/i2c/cx25840/cx25840-core.c
> +++ b/drivers/media/i2c/cx25840/cx25840-core.c
> @@ -1772,7 +1772,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
> }
>
> /* Query the current detected video format */
> -static int cx25840_g_std(struct v4l2_subdev *sd, v4l2_std_id *std)
> +static int cx25840_querystd(struct v4l2_subdev *sd, v4l2_std_id *std)
> {
> struct i2c_client *client = v4l2_get_subdevdata(sd);
>
> @@ -1800,8 +1800,9 @@ static int cx25840_g_std(struct v4l2_subdev *sd, v4l2_std_id *std)
> u32 fmt = (cx25840_read4(client, 0x40c) >> 8) & 0xf;
> *std = stds[ fmt ];
>
> - v4l_dbg(1, cx25840_debug, client, "g_std fmt = %x, v4l2_std_id = 0x%x\n",
> - fmt, (unsigned int)stds[ fmt ]);
> + v4l_dbg(1, cx25840_debug, client,
> + "querystd fmt = %x, v4l2_std_id = 0x%x\n",
> + fmt, (unsigned int)stds[fmt]);
>
> return 0;
> }
> @@ -5081,7 +5082,7 @@ 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,
> + .querystd = cx25840_querystd,
> .s_routing = cx25840_s_video_routing,
> .s_stream = cx25840_s_stream,
> .g_input_status = cx25840_g_input_status,
>

Hmm, you are right, g_std really implements querystd. I wondered why this wasn't
noticed before, and it appears that no bridge driver ever calls the g_std op of the
cx25840 driver. It's all handled inside the bridge driver itself.

Can you add a new cx25840_g_std() op here that just returns state->std?

That would make much more sense.

You also need to use g_std in patch 6/7 (see my comments there)

Regards,

Hans