From: jacopo mondi <jacopo@jmondi.org>
To: Akinobu Mita <akinobu.mita@gmail.com>
Cc: linux-media@vger.kernel.org,
"open list:OPEN FIRMWARE AND..." <devicetree@vger.kernel.org>,
Jacopo Mondi <jacopo+renesas@jmondi.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Hans Verkuil <hans.verkuil@cisco.com>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Mauro Carvalho Chehab <mchehab@s-opensource.com>
Subject: Re: [PATCH v4 12/14] media: ov772x: avoid accessing registers under power saving mode
Date: Fri, 4 May 2018 16:57:59 +0200 [thread overview]
Message-ID: <20180504145759.GD27261@w540> (raw)
In-Reply-To: <CAC5umyiVf8VorE8EKop+9cUYCvw1HGyRC_=P23igepaeScfCcA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3662 bytes --]
Hi Akinobu,
On Fri, May 04, 2018 at 11:50:39PM +0900, Akinobu Mita wrote:
> 2018-05-04 6:03 GMT+09:00 jacopo mondi <jacopo@jmondi.org>:
> > Hi Akinobu,
> > let me see if I got this right...
> >
> > On Mon, Apr 30, 2018 at 02:13:11AM +0900, Akinobu Mita wrote:
> >> The set_fmt() in subdev pad ops, the s_ctrl() for subdev control handler,
> >> and the s_frame_interval() in subdev video ops could be called when the
> >> device is under power saving mode. These callbacks for ov772x driver
> >> cause updating H/W registers that will fail under power saving mode.
> >>
> >> This avoids it by not apply any changes to H/W if the device is not powered
> >> up. Instead the changes will be restored right after power-up.
> >>
> >> Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>
> >> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >> Cc: Hans Verkuil <hans.verkuil@cisco.com>
> >> Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
> >> Cc: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> >> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
> >> ---
> >> * v4
> >> - No changes
> >>
> >> drivers/media/i2c/ov772x.c | 79 +++++++++++++++++++++++++++++++++++++---------
> >> 1 file changed, 64 insertions(+), 15 deletions(-)
> >>
> >> diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
> >> index 3e6ca98..bd37169 100644
> >> --- a/drivers/media/i2c/ov772x.c
> >> +++ b/drivers/media/i2c/ov772x.c
> >> @@ -741,19 +741,30 @@ static int ov772x_s_frame_interval(struct v4l2_subdev *sd,
> >> struct ov772x_priv *priv = to_ov772x(sd);
> >> struct v4l2_fract *tpf = &ival->interval;
> >> unsigned int fps;
> >> - int ret;
> >> + int ret = 0;
> >>
> >> fps = ov772x_select_fps(priv, tpf);
> >>
> >> - ret = ov772x_set_frame_rate(priv, fps, priv->cfmt, priv->win);
> >> - if (ret)
> >> - return ret;
> >> + mutex_lock(&priv->lock);
> >> + /*
> >> + * If the device is not powered up by the host driver do
> >> + * not apply any changes to H/W at this time. Instead
> >> + * the frame rate will be restored right after power-up.
> >> + */
> >> + if (priv->power_count > 0) {
> >
> > If I'm not wrong this is not protected when the device is
> > streaming.
> >
> > Since Hans' series frame control is called by g/s_parm (until a new
> > ioctl is not introduced) and I've looked at the call stack and it
> > seems to me it does not check for active streaming[1]. I -think-
> > this is even worse when this is called on the subdev, as there is
> > no shared notion of active streaming. Am I wrong?
> >
> > If you have to check for active streaming here (I see some other
> > drivers doing that, eg ov5640), then I see two ways, or you just
> > return -EBUSY, or you save the desired FPS for later, but then it gets
> > messy as you won't be able to just restore paramters at power_on()
> > time, but you would need to do that also at start streaming time.
> >
> > My opinion is that you should check for streaming active (as you're
> > doing for the set_fmt() function in [13/14], do you agree?
>
> I agree. I would like to make ov772x_s_frame_interval() return -EBUSY
> without saving the desired FPS for later when the device is streaming.
>
> I'm going to prepare v5 patches that address the above and other issues
> you found in v4 unless you prefer the incremental patch series.
Thank you. Please send v5, the incremental patches thing only applies
to new developments and fixes not already part of this series.
Thanks
j
>
> > [1] This calls for a device wise 'streaming' state handler. Maybe it's
> > there but I failed to find checks for that.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2018-05-04 14:58 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-29 17:12 [PATCH v4 00/14] media: ov772x: support media controller, device tree probing, etc Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 01/14] media: dt-bindings: ov772x: add device tree binding Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 02/14] media: ov772x: correct setting of banding filter Akinobu Mita
2018-05-03 15:38 ` jacopo mondi
2018-04-29 17:13 ` [PATCH v4 03/14] media: ov772x: allow i2c controllers without I2C_FUNC_PROTOCOL_MANGLING Akinobu Mita
2018-05-03 15:46 ` jacopo mondi
2018-04-29 17:13 ` [PATCH v4 04/14] media: ov772x: add checks for register read errors Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 05/14] media: ov772x: add media controller support Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 06/14] media: ov772x: use generic names for reset and powerdown gpios Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 07/14] media: ov772x: omit consumer ID when getting clock reference Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 08/14] media: ov772x: support device tree probing Akinobu Mita
2018-05-03 19:57 ` jacopo mondi
2018-04-29 17:13 ` [PATCH v4 09/14] media: ov772x: handle nested s_power() calls Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 10/14] media: ov772x: reconstruct s_frame_interval() Akinobu Mita
2018-05-03 20:29 ` jacopo mondi
2018-05-04 16:32 ` Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 11/14] media: ov772x: use v4l2_ctrl to get current control value Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 12/14] media: ov772x: avoid accessing registers under power saving mode Akinobu Mita
2018-05-03 21:03 ` jacopo mondi
2018-05-04 14:50 ` Akinobu Mita
2018-05-04 14:57 ` jacopo mondi [this message]
2018-04-29 17:13 ` [PATCH v4 13/14] media: ov772x: make set_fmt() return -EBUSY while streaming Akinobu Mita
2018-04-29 17:13 ` [PATCH v4 14/14] media: ov772x: create subdevice device node Akinobu Mita
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=20180504145759.GD27261@w540 \
--to=jacopo@jmondi.org \
--cc=akinobu.mita@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=hans.verkuil@cisco.com \
--cc=jacopo+renesas@jmondi.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@s-opensource.com \
--cc=sakari.ailus@linux.intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).