From: jacopo mondi <jacopo@jmondi.org>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>,
laurent.pinchart@ideasonboard.com, magnus.damm@gmail.com,
geert@glider.be, mchehab@kernel.org, festevam@gmail.com,
sakari.ailus@iki.fi, robh+dt@kernel.org, mark.rutland@arm.com,
pombredanne@nexb.com, linux-renesas-soc@vger.kernel.org,
linux-media@vger.kernel.org, linux-sh@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v9 07/11] media: i2c: ov772x: Support frame interval handling
Date: Wed, 21 Feb 2018 16:16:44 +0100 [thread overview]
Message-ID: <20180221151644.GI7203@w540> (raw)
In-Reply-To: <f154f229-6977-4d3e-38b9-6d1669adbf91@xs4all.nl>
Hi Hans,
On Wed, Feb 21, 2018 at 01:12:14PM +0100, Hans Verkuil wrote:
[snip]
> > +static int ov772x_g_frame_interval(struct v4l2_subdev *sd,
> > + struct v4l2_subdev_frame_interval *ival)
> > +{
> > + struct ov772x_priv *priv = to_ov772x(sd);
> > + struct v4l2_fract *tpf = &ival->interval;
> > +
> > + memset(ival->reserved, 0, sizeof(ival->reserved));
>
> This memset...
>
> > + tpf->numerator = 1;
> > + tpf->denominator = priv->fps;
> > +
> > + return 0;
> > +}
> > +
> > +static int ov772x_s_frame_interval(struct v4l2_subdev *sd,
> > + struct v4l2_subdev_frame_interval *ival)
> > +{
> > + struct ov772x_priv *priv = to_ov772x(sd);
> > + struct v4l2_fract *tpf = &ival->interval;
> > +
> > + memset(ival->reserved, 0, sizeof(ival->reserved));
>
> ... and this memset can be dropped. The core code will memset this for you.
>
>
I see! Ok, I'll drop them in v10
> > +
> > + return ov772x_set_frame_rate(priv, tpf, priv->cfmt, priv->win);
> > +}
> > +
> > static int ov772x_s_ctrl(struct v4l2_ctrl *ctrl)
> > {
> > struct ov772x_priv *priv = container_of(ctrl->handler,
> > @@ -757,6 +905,7 @@ static int ov772x_set_params(struct ov772x_priv *priv,
> > const struct ov772x_win_size *win)
> > {
> > struct i2c_client *client = v4l2_get_subdevdata(&priv->subdev);
> > + struct v4l2_fract tpf;
> > int ret;
> > u8 val;
> >
> > @@ -885,6 +1034,13 @@ static int ov772x_set_params(struct ov772x_priv *priv,
> > if (ret < 0)
> > goto ov772x_set_fmt_error;
> >
> > + /* COM4, CLKRC: Set pixel clock and framerate. */
> > + tpf.numerator = 1;
> > + tpf.denominator = priv->fps;
> > + ret = ov772x_set_frame_rate(priv, &tpf, cfmt, win);
> > + if (ret < 0)
> > + goto ov772x_set_fmt_error;
> > +
> > /*
> > * set COM8
> > */
> > @@ -1043,6 +1199,24 @@ static const struct v4l2_subdev_core_ops ov772x_subdev_core_ops = {
> > .s_power = ov772x_s_power,
> > };
> >
> > +static int ov772x_enum_frame_interval(struct v4l2_subdev *sd,
> > + struct v4l2_subdev_pad_config *cfg,
> > + struct v4l2_subdev_frame_interval_enum *fie)
> > +{
> > + if (fie->pad || fie->index >= OV772X_N_FRAME_INTERVALS)
> > + return -EINVAL;
> > +
> > + if (fie->width != VGA_WIDTH && fie->width != QVGA_WIDTH)
> > + return -EINVAL;
> > + if (fie->height != VGA_HEIGHT && fie->height != QVGA_HEIGHT)
> > + return -EINVAL;
> > +
> > + fie->interval.numerator = 1;
> > + fie->interval.denominator = ov772x_frame_intervals[fie->index];
> > +
> > + return 0;
> > +}
> > +
> > static int ov772x_enum_mbus_code(struct v4l2_subdev *sd,
> > struct v4l2_subdev_pad_config *cfg,
> > struct v4l2_subdev_mbus_code_enum *code)
> > @@ -1055,14 +1229,17 @@ static int ov772x_enum_mbus_code(struct v4l2_subdev *sd,
> > }
> >
> > static const struct v4l2_subdev_video_ops ov772x_subdev_video_ops = {
> > - .s_stream = ov772x_s_stream,
> > + .s_stream = ov772x_s_stream,
> > + .s_frame_interval = ov772x_s_frame_interval,
> > + .g_frame_interval = ov772x_g_frame_interval,
> > };
> >
> > static const struct v4l2_subdev_pad_ops ov772x_subdev_pad_ops = {
> > - .enum_mbus_code = ov772x_enum_mbus_code,
> > - .get_selection = ov772x_get_selection,
> > - .get_fmt = ov772x_get_fmt,
> > - .set_fmt = ov772x_set_fmt,
> > + .enum_frame_interval = ov772x_enum_frame_interval,
> > + .enum_mbus_code = ov772x_enum_mbus_code,
> > + .get_selection = ov772x_get_selection,
> > + .get_fmt = ov772x_get_fmt,
> > + .set_fmt = ov772x_set_fmt,
>
> Shouldn't these last four ops be added in the previous patch?
> They don't have anything to do with the frame interval support.
>
If you look closely you'll notice I have just re-aligned them, since I
was at there to add enum_frame_interval operation
> Anyway, after taking care of the memsets and these four ops you can add
> my:
>
> Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Thanks
j
WARNING: multiple messages have this Message-ID (diff)
From: jacopo mondi <jacopo@jmondi.org>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>,
laurent.pinchart@ideasonboard.com, magnus.damm@gmail.com,
geert@glider.be, mchehab@kernel.org, festevam@gmail.com,
sakari.ailus@iki.fi, robh+dt@kernel.org, mark.rutland@arm.com,
pombredanne@nexb.com, linux-renesas-soc@vger.kernel.org,
linux-media@vger.kernel.org, linux-sh@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v9 07/11] media: i2c: ov772x: Support frame interval handling
Date: Wed, 21 Feb 2018 15:16:44 +0000 [thread overview]
Message-ID: <20180221151644.GI7203@w540> (raw)
In-Reply-To: <f154f229-6977-4d3e-38b9-6d1669adbf91@xs4all.nl>
Hi Hans,
On Wed, Feb 21, 2018 at 01:12:14PM +0100, Hans Verkuil wrote:
[snip]
> > +static int ov772x_g_frame_interval(struct v4l2_subdev *sd,
> > + struct v4l2_subdev_frame_interval *ival)
> > +{
> > + struct ov772x_priv *priv = to_ov772x(sd);
> > + struct v4l2_fract *tpf = &ival->interval;
> > +
> > + memset(ival->reserved, 0, sizeof(ival->reserved));
>
> This memset...
>
> > + tpf->numerator = 1;
> > + tpf->denominator = priv->fps;
> > +
> > + return 0;
> > +}
> > +
> > +static int ov772x_s_frame_interval(struct v4l2_subdev *sd,
> > + struct v4l2_subdev_frame_interval *ival)
> > +{
> > + struct ov772x_priv *priv = to_ov772x(sd);
> > + struct v4l2_fract *tpf = &ival->interval;
> > +
> > + memset(ival->reserved, 0, sizeof(ival->reserved));
>
> ... and this memset can be dropped. The core code will memset this for you.
>
>
I see! Ok, I'll drop them in v10
> > +
> > + return ov772x_set_frame_rate(priv, tpf, priv->cfmt, priv->win);
> > +}
> > +
> > static int ov772x_s_ctrl(struct v4l2_ctrl *ctrl)
> > {
> > struct ov772x_priv *priv = container_of(ctrl->handler,
> > @@ -757,6 +905,7 @@ static int ov772x_set_params(struct ov772x_priv *priv,
> > const struct ov772x_win_size *win)
> > {
> > struct i2c_client *client = v4l2_get_subdevdata(&priv->subdev);
> > + struct v4l2_fract tpf;
> > int ret;
> > u8 val;
> >
> > @@ -885,6 +1034,13 @@ static int ov772x_set_params(struct ov772x_priv *priv,
> > if (ret < 0)
> > goto ov772x_set_fmt_error;
> >
> > + /* COM4, CLKRC: Set pixel clock and framerate. */
> > + tpf.numerator = 1;
> > + tpf.denominator = priv->fps;
> > + ret = ov772x_set_frame_rate(priv, &tpf, cfmt, win);
> > + if (ret < 0)
> > + goto ov772x_set_fmt_error;
> > +
> > /*
> > * set COM8
> > */
> > @@ -1043,6 +1199,24 @@ static const struct v4l2_subdev_core_ops ov772x_subdev_core_ops = {
> > .s_power = ov772x_s_power,
> > };
> >
> > +static int ov772x_enum_frame_interval(struct v4l2_subdev *sd,
> > + struct v4l2_subdev_pad_config *cfg,
> > + struct v4l2_subdev_frame_interval_enum *fie)
> > +{
> > + if (fie->pad || fie->index >= OV772X_N_FRAME_INTERVALS)
> > + return -EINVAL;
> > +
> > + if (fie->width != VGA_WIDTH && fie->width != QVGA_WIDTH)
> > + return -EINVAL;
> > + if (fie->height != VGA_HEIGHT && fie->height != QVGA_HEIGHT)
> > + return -EINVAL;
> > +
> > + fie->interval.numerator = 1;
> > + fie->interval.denominator = ov772x_frame_intervals[fie->index];
> > +
> > + return 0;
> > +}
> > +
> > static int ov772x_enum_mbus_code(struct v4l2_subdev *sd,
> > struct v4l2_subdev_pad_config *cfg,
> > struct v4l2_subdev_mbus_code_enum *code)
> > @@ -1055,14 +1229,17 @@ static int ov772x_enum_mbus_code(struct v4l2_subdev *sd,
> > }
> >
> > static const struct v4l2_subdev_video_ops ov772x_subdev_video_ops = {
> > - .s_stream = ov772x_s_stream,
> > + .s_stream = ov772x_s_stream,
> > + .s_frame_interval = ov772x_s_frame_interval,
> > + .g_frame_interval = ov772x_g_frame_interval,
> > };
> >
> > static const struct v4l2_subdev_pad_ops ov772x_subdev_pad_ops = {
> > - .enum_mbus_code = ov772x_enum_mbus_code,
> > - .get_selection = ov772x_get_selection,
> > - .get_fmt = ov772x_get_fmt,
> > - .set_fmt = ov772x_set_fmt,
> > + .enum_frame_interval = ov772x_enum_frame_interval,
> > + .enum_mbus_code = ov772x_enum_mbus_code,
> > + .get_selection = ov772x_get_selection,
> > + .get_fmt = ov772x_get_fmt,
> > + .set_fmt = ov772x_set_fmt,
>
> Shouldn't these last four ops be added in the previous patch?
> They don't have anything to do with the frame interval support.
>
If you look closely you'll notice I have just re-aligned them, since I
was at there to add enum_frame_interval operation
> Anyway, after taking care of the memsets and these four ops you can add
> my:
>
> Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Thanks
j
next prev parent reply other threads:[~2018-02-21 15:16 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-19 16:59 [PATCH v9 00/11] Renesas Capture Engine Unit (CEU) V4L2 driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 01/11] dt-bindings: media: Add Renesas CEU bindings Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 02/11] include: media: Add Renesas CEU driver interface Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 03/11] media: platform: Add Renesas CEU driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-20 3:35 ` kbuild test robot
2018-02-20 3:35 ` kbuild test robot
2018-02-20 3:35 ` kbuild test robot
2018-02-21 12:03 ` Hans Verkuil
2018-02-21 12:03 ` Hans Verkuil
2018-02-21 12:29 ` Laurent Pinchart
2018-02-21 12:29 ` Laurent Pinchart
2018-02-21 13:02 ` Hans Verkuil
2018-02-21 13:02 ` Hans Verkuil
2018-02-21 16:43 ` jacopo mondi
2018-02-21 16:43 ` jacopo mondi
2018-02-19 16:59 ` [PATCH v9 04/11] ARM: dts: r7s72100: Add Capture Engine Unit (CEU) Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 05/11] media: i2c: Copy ov772x soc_camera sensor driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 06/11] media: i2c: ov772x: Remove soc_camera dependencies Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-21 12:08 ` Hans Verkuil
2018-02-21 12:08 ` Hans Verkuil
2018-02-19 16:59 ` [PATCH v9 07/11] media: i2c: ov772x: Support frame interval handling Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-20 4:25 ` kbuild test robot
2018-02-20 4:25 ` kbuild test robot
2018-02-20 4:25 ` kbuild test robot
2018-02-20 5:22 ` [RFC PATCH] media: i2c: ov772x: ov772x_frame_intervals[] can be static kbuild test robot
2018-02-20 5:22 ` kbuild test robot
2018-02-20 5:22 ` kbuild test robot
2018-02-20 5:22 ` [PATCH v9 07/11] media: i2c: ov772x: Support frame interval handling kbuild test robot
2018-02-20 5:22 ` kbuild test robot
2018-02-20 5:22 ` kbuild test robot
2018-02-21 12:12 ` Hans Verkuil
2018-02-21 12:12 ` Hans Verkuil
2018-02-21 15:16 ` jacopo mondi [this message]
2018-02-21 15:16 ` jacopo mondi
2018-02-21 15:23 ` Hans Verkuil
2018-02-21 15:23 ` Hans Verkuil
2018-02-19 16:59 ` [PATCH v9 08/11] media: i2c: Copy tw9910 soc_camera sensor driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 09/11] media: i2c: tw9910: Remove soc_camera dependencies Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 10/11] arch: sh: migor: Use new renesas-ceu camera driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 11/11] media: i2c: ov7670: Fully set mbus frame fmt Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 19:19 ` Laurent Pinchart
2018-02-19 19:19 ` Laurent Pinchart
2018-02-20 8:58 ` jacopo mondi
2018-02-20 8:58 ` jacopo mondi
2018-02-21 15:47 ` jacopo mondi
2018-02-21 15:47 ` jacopo mondi
2018-02-21 16:28 ` Hans Verkuil
2018-02-21 16:28 ` Hans Verkuil
2018-02-21 20:28 ` Laurent Pinchart
2018-02-21 20:28 ` Laurent Pinchart
2018-02-22 12:04 ` jacopo mondi
2018-02-22 12:04 ` jacopo mondi
2018-02-22 12:14 ` Laurent Pinchart
2018-02-22 12:14 ` Laurent Pinchart
2018-02-22 12:36 ` jacopo mondi
2018-02-22 12:36 ` jacopo mondi
2018-02-22 12:47 ` Laurent Pinchart
2018-02-22 12:47 ` Laurent Pinchart
2018-02-22 14:26 ` jacopo mondi
2018-02-22 14:26 ` jacopo mondi
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=20180221151644.GI7203@w540 \
--to=jacopo@jmondi.org \
--cc=devicetree@vger.kernel.org \
--cc=festevam@gmail.com \
--cc=geert@glider.be \
--cc=hverkuil@xs4all.nl \
--cc=jacopo+renesas@jmondi.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mark.rutland@arm.com \
--cc=mchehab@kernel.org \
--cc=pombredanne@nexb.com \
--cc=robh+dt@kernel.org \
--cc=sakari.ailus@iki.fi \
/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.